2013-06-02 3 views
2

이 프로그램의 결과에 문제가 있습니다. 결과적으로 "수호자", "헤드셋", "사례"및 "게임"을 선택했을 때 "킨들" "Nokia"및 "Wii". 그러나 단 하나의 가치 만받습니다 - "Kindle"(Google 크롬과 Internet Explorer에 있음). 또한, 나는 오페라에있는 모든 값 (duplicated도)을받습니다. 이러한 문제를 해결하도록 도와 줄 수 있습니까? 미리 감사드립니다. 페이지가 완전히 페이지를 쓸어 버릴 것이다 렌더링 후자바 스크립트 프로그램이 올바르게 작동하지 않습니다.

<html> 
<head> 
<script type="text/javascript"> 

function product(){ 
    var checkboxes = document.getElementsByName('checkboxes'); 
    var i=0; 
    var j=0; 
    var tech = [ 
    ["Kindle","Protector"], 
    ["Iphone","Headset"], 
    ["Iphone","US Charger"], 
    ["Iphone","USB cable"], 
    ["Iphone","Case"], 
    ["Nokia","Protector"], 
    ["Nokia","Headset"], 
    ["Nokia","Case"], 
    ["Wii","Games"] 
    ]; 

    for (i=0 ; i < tech.length; i++){ 
     for(j=0 ; j< checkboxes.length; j++){ 
      if ((tech[i][1] == checkboxes[j].value)&&(checkboxes[j].checked)){ 
      document.write(tech[i][0]); 
      document.write("<br>"); 
      } 
     } 
    } 
} 
</script> 
</head> 

<body> 

<form name="Accessories"> 
<input type="checkbox" name="checkboxes" value="Protector"> Protector <br> 
<input type="checkbox" name="checkboxes" value="Headset"> Headset <br> 
<input type="checkbox" name="checkboxes" value="US Charger"> US Charger <br> 
<input type="checkbox" name="checkboxes" value="USB cable"> USB cable <br> 
<input type="checkbox" name="checkboxes" value="Case"> Case <br> 
<input type="checkbox" name="checkboxes" value="Games"> Games </br> 
<input type="button" name="Check" onClick="product()" value="Search a product"> 
</form> 

</body> 
</html> 

답변

1

순간 당신이 document.write를()를 사용하여 폼 요소는 더 이상 그래서 당신의 체크 박스 배열은 존재하지 않습니다 존재. 그게 바로 당신이 '얼얼함'을 얻는 이유입니다. 대신 console.log (tech [i] [0])를 사용하여 크롬에서 실행하십시오. 당신이해야한다 : 킨들의, 아이폰, 아이폰, 노키아, 노키아, 노키아, 닌텐도.

3

document.write()를 호출. 일부 브라우저에서는 JavaScript 코드 자체가 작동을 멈추게됩니다.

당신이 대신 시도 할 수있는 것은 이것이다 :

  1. 은 (물론 <body> 내부) 페이지의 마지막에 <div>를 추가하고 그것을 "설정"의 "아이디"값을 제공합니다.

  2. 그 내용을 설정하는 코드를 변경

    :

    var content = ""; 
    for (i=0 ; i < tech.length; i++){ 
        for(j=0 ; j< checkboxes.length; j++){ 
         if ((tech[i][1] == checkboxes[j].value)&&(checkboxes[j].checked)){ 
          content += tech[i][0] + '<br>'; 
         } 
        } 
    } 
    document.getElementById("settings").innerHTML = content; 
    
+0

이 방법은 효과가 있지만 두 번째 문제는 그대로 있습니다. 내가 뭔가를 검사 할 때 결과는 모든 매개 변수가 검사되는 고유 한 값을 반환해야합니다. 예를 들면 : "Protector"를 선택했을 때 결과는 "Kindle"이 아니라 "Kindle"과 "Nokia"가되어야합니다. 왜냐하면 "Nokia"는 다른 매개 변수가 확인되지 않기 때문입니다. 도와 주셔서 감사합니다 – Kristiana

+0

@ user2432205 코드에서 아무 것도 그 행동의 종류를 확인하려고 시도하지 않습니다. 그러나 당신이 의미하는 바를 잘 모릅니다. 라디오 버튼이 아닌 체크 박스를 사용하기 때문에 둘 이상의 버튼을 동시에 확인할 수 있습니다. – Pointy

+0

더 많은 옵션을 선택해야하므로 라디오 버튼을 사용할 수 없습니다. 매개 변수를 더 명확하게 변경하겠습니다. \t [ "삶은 달걀", "달걀", \t [ "BLT 샌드위치", "베이컨"] \t [ "BLT 샌드위치", "추"] \t [ "BLT 샌드위치", "토마토" ], \t [ "BLT 샌드위치", "빵", \t [ "미국의 아침 식사", "계란", \t [ "미국의 아침 식사", "베이컨"], \t [ "미국의 아침 식사", " 빵 "], \t ["French Fries ","Potatoes "] – Kristiana

관련 문제