Я создаю тест, разбитый на несколько страниц, и пытаюсь передать оценку каждого вопроса на следующую страницу, используя метод get с javascript.
Я использую функцию с именем gValue()
, чтобы получить переменные с предыдущей страницы (называемые «s» + номер страницы) в URL, а затем я хочу добавить эту переменную (которую я называю «оценка») ) к значениям трех вариантов ответа на следующей странице и повторять весь процесс снова и снова.
У меня проблема с вставкой newscore в значения каждого из полей радиовхода.
Я не получаю ни консольной ошибки, ни ошибки javascript, но я получаю "undefined"
, когда хочу проверить, правильно ли добавляются новые значения для каждого элемента ввода в форме.
Вот код моей первой страницы и затем второй страницы, где я хочу видеть новые значения, вставленные в форму:
Первая страница, отправляющая переменную 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>
вторая страница, где я хочу извлечь значение s1
и добавить его к значениям 3 входов в форме:
<!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>
Я не знаю, почему я получаю undefined
, когда я проверяю, используя переменную "boby". Сначала я подумал, что это из-за DOM, что функция subnewsc()
была вызвана слишком рано, так что элементов еще не было, но это не должно быть так, как я сейчас ее называю.
Кажется, это также не связано с природой имени идентификатора в document.getElementById
, поскольку оно должно быть строкой (строка плюс число, становящееся строкой)