2014-11-01 67 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

相关问题