2014-11-01 68 views
0

爲什麼我在Firefox和IE中出現未定義的錯誤。此代碼在Google Chrome中運行良好。下面是完整的代碼http://liveweave.com/fUhpiIMozilla Firefox中未定義的錯誤

這是我的HTML

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<link href="css/hpstyles.css" rel="stylesheet"> 
<script src="js/hpjs.js"></script> 
</head> 
<body> 
<form id="hp"> 
    <div> 
    <h2>1. Which one do you prefer?</h2> 
    <div> 
     <input type="radio" name="q1" id="radio1" class="radio" value="9"/> 
     <label for="radio1">Tea</label> 
    </div> 
    <div> 
     <input type="radio" name="q1" id="radio2" class="radio" value="4"/> 
     <label for="radio2">Coffee</label> 
    </div> 
    <div> 
     <input type="radio" name="q1" id="radio3" class="radio" value="1"/> 
     <label for="radio3">Milk</label> 
    </div> 
    </div> 

    <div> 
    </br> 
    <div><div> 
    <button type="button" onclick="hp(this.form)">Check</button> 
    <input class="reset" type="reset" value="Reset"> 
    </div></div></div> 
</form> 
    <div id="result"></div> 
    <div id="total"></div> 
</body> 
</html> 

這是JavaScript的

function hp(form) 
{ 
var count1=0, count2=0, count3=0, count4=0, count5=0, count6=0, count7=0, count8=0, count9=0, count10=0,a ; 
for(var i=0;i<3;i++){ 
if (form.q1[i].checked === true) 
{ 
count1++; 
} 
} 
if(count1!==1){ 
alert("Please Answer 1st Question"); 
return false; 
} 
answer1 = (form.q1.value); 
a=Math.floor(answer1); 
document.getElementById("result").innerHTML= "The selected values are "+"</br>"+answer1; 
} 
+0

這是什麼?沒有人會去那個網站......在問題本身發佈你的代碼。 – 2014-11-01 06:58:20

+0

什麼「未定義的錯誤」? – 2014-11-01 13:26:52

回答

0

你應該聲明一個變量的回答。而你應該因爲給索引來訪問「Q1」元素你有3個「q1」元素。基本上form.q1是一個object NodeList。你不能從object NodeList得到價值。實際上你的情況下,你應該添加剎車for循環,並找到單擊單選按鈕索引。

你應該使用

answer1 = form.q1[i].value; 

,而不是

answer1 = form.q1.value; 


解釋

form.q1object NodeList所以

form.q1.value --> undefined since object NodeList/collection has no property "value" 

form.q1[0] --> HTMLInputElement so 

form.q1[0].value --> is not undefined 

固定代碼。 WORKING DEMO http://jsfiddle.net/madhawa11111/3rywkdvf/

function hp(form) { 
    var i; 
    var answer; 
    var count1 = 0,count2 = 0,count3 = 0,count4 = 0,count5 = 0,count6 = 0,count7 = 0,count8 = 0,count9 = 0,count10 = 0, a; 

    for (i = 0; i < 3; i++) { 
     if (form.q1[i].checked === true) { 
      count1++; 
      break; 
     } 
    } 
    if (count1 !== 1) { 
     alert("Please Answer 1st Question"); 
     return false; 
    } 
    answer1 = form.q1[i].value; //error was here . 
    a = Math.floor(answer1); 
    document.getElementById("result").innerHTML = "The selected values are " + "</br>" + answer1; 
} 

如果它在google chorm中工作,那是因爲瀏覽器忽略了一些錯誤。

+1

非常感謝這樣的真棒解釋。編輯的代碼工作正常。問題解決了 – 2014-11-01 12:28:58

相關問題