我是javascript编码的新手。
我有点自己创建一个调查页面。我会将问题视为“正确或错误”,并将获得1分为真,0分为假。会有多个问题。
我尝试通过getElementsByName来实现它,但它没有用。我的代码就是这样。有人可以帮我吗?
<form>
<input type="radio" name="question1" value="1" id="q1"> true
<input type="radio" name="question1" value="0" id="q1"> false
</form>
<button onclick="myFunction()">try</button>
<script>
function myFunction()
{
var x=document.getElementsByName("question1").value;
window.alert("your score is " +x);
}
</script>
答案 0 :(得分:1)
按名称分组的单选按钮与select
元素的行为不同,即该组没有单个值。此外,getElementsByName()
会返回HTMLCollection,这是一个类似数组的对象(请参阅Felix Kling的评论)。
我建议你做一些这样的事情(给id
后form
):
function myFunction () {
var form = document.getElementById('form'), // a reference to the form element
question = form['question1'], // creates a HTMLCollection from elements having attribute name="question1"
n; // loop index
for (n = 0; n < question.length; n++) { // iterates through items in HTMLCollection
if (question[n].checked) { // checks the current item's 'checked' property
alert("your score is " + question[n].value); // found the checked-one
break; // "checked" found, no need to search more
}
}
}
question
定义中的括号表示法用于将来的目的。如果你有更多的单选按钮组,可以使用同一个函数处理,你可以将组的名称传递给function,然后在括号内使用该参数而不是文字值('question1'
)