-1
다섯 개의 옵션에 동일한 값이 있습니다. 첫 번째 색인 대신 옵션 태그의 모든 색인을 선택하는 방법이 있습니까?첫 번째 인덱스가 아닌 드롭 다운 값을 선택하는 모든 솔루션
는이 같은
나는 약간의 속임수를 썼는지
var duplicates = [];
function checkResult(){
var box1 = document.getElementById('box_g1');
var box2 = document.getElementById('box_g2');
var box3 = document.getElementById('box_g3');
var box4 = document.getElementById('box_g4');
var box5 = document.getElementById('box_g5');
var b1 = box1.options[box1.selectedIndex].value;
var b2 = box2.options[box2.selectedIndex].value;
var b3 = box3.options[box3.selectedIndex].value;
var b4 = box4.options[box4.selectedIndex].value;
var b5 = box5.options[box5.selectedIndex].value;
console.log(b1);
console.log(b2);
console.log(b3);
console.log(b4);
console.log(b5);
var arr = [b1,b2,b3,b4,b5];
var hash = [];
for (var n=arr.length; n--;){
if (typeof hash[arr[n]] === 'undefined') hash[arr[n]] = [];
hash[arr[n]].push(n);
}
for (var key in hash){
if (hash.hasOwnProperty(key) && hash[key].length > 1){
duplicates.push(key);
}
}
if(duplicates.length > 0){
alert("duplicate found");
}else{
alert("No duplicate");
}
duplicates.length =0;
}
<select name="n1" id="box_g1">
<option value="Default">Default</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
<option value="E">E</option>
</select>
<br/>
<select name="n2" id="box_g2">
<option value="Disabled">Disabled</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
<option value="E">E</option>
</select>
<br/>
<select name="n3" id="box_g3">
<option value="Disabled">Disabled</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
<option value="E">E</option>
</select>
<br/>
<select name="n4" id="box_g4">
<option value="Disabled">Disabled</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
<option value="E">E</option>
</select>
<br/>
<select name="n5" id="box_g5">
<option value="Disabled">Disabled</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
<option value="E">E</option>
</select>
<br/>
<br/>
<input type="submit" value="Check Result" onclick="checkResult();"/>
상자 2, 상자 3, 상자 4 및 상자 5에 대해 사용자가 상자 1 대신 상자에 'Disbaled'옵션을 선택하면.
사용자에게 "중복 발견됨"이 표시됩니다.
현재 "사용 안 함" 옵션을 선택하면 중복되지 않는 것으로 나타납니다.
'hash'는 배열이며, 인덱스는 정수 여야합니다. 그러나'arr [n]'은 문자열입니다. 배열이 아닌 객체를 사용해야합니다. – Barmar
첫 번째'for' 루프에서'hash()'에 추가하기 전에'if (arr [n]! = "Disabled")'를 확인할 수는 없습니까? – Rhumborl
BTW, 그냥'var b1 = box1.value;'라고 쓸 수 있습니다. 선택 값은 선택한 옵션의 값입니다. – Barmar