这是我的javascript:
<script type="text/javascript">
var crct_answrs = new Array(<?php echo implode(',', $crct_ans); ?>);
var answrs = new Array();
function check_ans(){
for(var i = 1; i < 11; i++){
var tst = "ques"+i;
var radio = document.getElementsByName(tst);
for (var x = 0; x < radio.length; x ++) {
if (radio[x].checked) {
answrs = radio.value;
}
}
}
}
</script>
这是HTML的一部分:
<form>
<div id="quest1" class="question">
<div class="prblm">
<?php echo $questions[1]; ?></div>
<table class="answrs">
<tr>
<td><?php echo $answrs[1][1]; ?></td>
<td><input name="ques1" type="radio" value="1"></td>
</tr>
<tr>
<td><?php echo $answrs[1][2]; ?></td>
<td><input name="ques1" type="radio" value="2"></td>
</tr>
<tr>
<td><?php echo $answrs[1][3]; ?></td>
<td><input name="ques1" type="radio" value="3"></td>
</tr>
<tr>
<td><?php echo $answrs[1][4]; ?></td>
<td><input name="ques1" type="radio" value="4"></td>
</tr>
</table>
</div>
我有10个相同的模式div
标签和表格,input
名称也相应更改。
check_ans()
在onclick
上运行。但始终getElementsByName
返回undefined。为什么会这样。请帮我。谢谢!
答案 0 :(得分:3)
您的错误在于:
if (radio[x].checked) {
answrs = radio.value;
}
answrs
是一个数组,需要将值设置为它所在的相应迭代器的索引。 radio.value
正在尝试从radio
数组中访问值,但也忽略了它的索引。请查看下面的解决方案:
我有一个jsFiddle工作。
<强> JavaScript的:强>
var answrs = [];
function check_ans() {
for (var i = 1; i <= 10; i++) {
var radio = document.getElementsByName("ques" + i);
for (var x = 0; x < radio.length; x++) {
if (radio[x].checked) {
answrs[i-1] = radio[x].value;
}
}
}
console.log(answrs);
}
<强>输出:强>
为问题1-10选择答案1,2,3,4,3,2,1,2,3,4时,阵列为:
["1", "2", "3", "4", "3", "2", "1", "2", "3", "4"]
答案 1 :(得分:0)
嗯。这对我有用(我删除了一些PHP代码)
<html>
<head>
<script type="text/javascript">
var crct_answrs = new Array();
var answrs = new Array();
function check_ans(){
for(var i = 1; i < 11; i++){
var tst = "ques"+i;
var radio = document.getElementsByName(tst);
alert(radio);
for (var x = 0; x < radio.length; x ++) {
if (radio[x].checked) {
answrs = radio.value;
}
}
}
}
</script>
</head>
<body>
<button type="button" onclick="check_ans();">test</button>
<div id="quest1" class="question">
<div class="prblm">
<?php echo $questions[1]; ?></div>
<table class="answrs">
<tr>
<td><?php echo $answrs[1][1]; ?></td>
<td><input name="ques1" type="radio" value="1"></td>
</tr>
<tr>
<td><?php echo $answrs[1][2]; ?></td>
<td><input name="ques1" type="radio" value="2"></td>
</tr>
<tr>
<td><?php echo $answrs[1][3]; ?></td>
<td><input name="ques1" type="radio" value="3"></td>
</tr>
<tr>
<td><?php echo $answrs[1][4]; ?></td>
<td><input name="ques1" type="radio" value="4"></td>
</tr>
</table>
</div>
<body/>
</html>
与您的代码存在任何差异?警报呼叫显示值。
答案 2 :(得分:-1)
我有时会将未定义的var分配给document.getElementsByName(name)
。
所以我会试着看看网上的任何答案是否有帮助。唉,没什么用。
所以我继续测试了我认为应该得到的阵列。那里的元素。所以只需忽略'undefined'并继续使用var。