Javascript 返回未定义的输入元素上的document.getElementById
我正在创建一份分为多页的测验,并尝试使用javascript的get方法将每个问题的分数传递到下一页 我使用一个名为Javascript 返回未定义的输入元素上的document.getElementById,javascript,input,undefined,getelementbyid,Javascript,Input,Undefined,Getelementbyid,我正在创建一份分为多页的测验,并尝试使用javascript的get方法将每个问题的分数传递到下一页 我使用一个名为gValue()的函数从url中的上一页(称为“s”+页面编号)获取变量,然后我想将这个变量(我称为“score”)添加到下一页的3个多选答案的值中,并反复复制整个过程 我在将新闻核心插入每个无线电输入字段的值时遇到问题 我没有得到任何控制台错误或javascript错误,但当我想检查新值是否以正确的方式添加到表单中的每个输入元素时,我得到了“undefined”。 这是我第一页的
gValue()
的函数从url中的上一页(称为“s”+页面编号)获取变量,然后我想将这个变量(我称为“score”)添加到下一页的3个多选答案的值中,并反复复制整个过程
我在将新闻核心插入每个无线电输入字段的值时遇到问题
我没有得到任何控制台错误或javascript错误,但当我想检查新值是否以正确的方式添加到表单中的每个输入元素时,我得到了“undefined”
。
这是我第一页的代码,然后是第二页的代码,我希望在其中看到插入到表单中的新值:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
<link rel="stylesheet" type="text/css" href="style.css" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta name="robots" content="index, follow" />
<meta name="googlebot" content="index, follow" />
<script type="text/javascript">
<!--
function subnewsc() {
for (i = 1; i <= 3; i++) {
var score = gValue();
score = parseInt(score);
i = parseInt(i);
var newscore = score + i;
var doc = 'document.getElementById("a' + i + '")';
doc.value = newscore;
}
}
function gValue() {
var url = window.location.href;
var qparts = url.split("?");
if (qparts.length == 0) {
return "";
}
var query = qparts[1];
var vars = query.split("&");
var value = "";
for (var i = 0; i < vars.length; i++) {
var parts = vars[i].split("=");
for (var f = 1; f <= 3; f++) {
var ss = "s" + f;
if (parts[0] == ss) {
value = parts[1];
break;
}
}
}
return value;
}
// -->
</script>
</head>
<body>
<div>choose between<br />
<form name="fo" method="get" action="part2.html">
<input id="a1" type="radio" name="s2" value="1" />one again<br />
<input id="a2" type="radio" name="s2" value="2" />two again<br />
<input id="a3" type="radio" name="s2" value="3" />three again<br />
<input type="submit" value="continuer" />
</form>
<script type="text/javascript">
<!--
var boby = subnewsc();
document.write(boby);
//-->
</script>
</div>
</body>
</html>
发送s1
变量的第一页:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
<link rel="stylesheet" type="text/css" href="style.css" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta name="robots" content="index, follow" />
<meta name="googlebot" content="index, follow" />
</head>
<body>
<div>Choose between<br />
<form name="fo" method="get" action="part1.html">
<input type="radio" name="s1" value="1" />one<br />
<input type="radio" name="s1" value="2" />two<br />
<input type="radio" name="s1" value="3" />three<br />
<input type="submit" value="continuer" />
</form>
</div>
</body>
</html>
我不知道为什么在使用“boby”变量进行检查时会出现未定义的问题。我首先认为这是因为DOM,调用函数subnewsc()
太早了,所以元素还没有出现,但情况不应该如此,因为我现在稍后调用它
它似乎也与文档中id名称的性质无关。getElementById
,因为它应该是一个字符串(一个字符串加上一个数字就变成了一个字符串)
var doc = document.getElementById("a'+ i +'");
如果没有单引号,javascript可能会有点古怪-代码中的空格可能会导致此错误,下面是我所体验的示例,下面是我编写的脚本:
<select id="mySelect" multiple="multiple"> <option>Apple</option>
苹果公司
当我运行此javascript并尝试查找第一个子项时,收到一条错误消息,指出“undefined”
但是,我删除了以下行中的空格,并将其修复:
<select id="mySelect" multiple="multiple"><option>Apple</option>
苹果公司
请注意,我是如何删除multiple和option之间的空格的,但是它没有通过值为1到3的I变量,然后它将整个变量视为一个id,即“a+I+”。当你已经做了一个循环,为什么还要解析INT呢<代码>i=parseInt(i)代码>?我考虑将其解析为一个数字(而不是字符串),因此能够将其添加到
score
的值中,从而在执行2+1
时得到3
,而不是21
。这是否会干扰getElementById
行,并导致我得到未定义的
?