Javascript document.getElementById()始终返回null

Javascript document.getElementById()始终返回null,javascript,getelementbyid,Javascript,Getelementbyid,我试图使用javascript从HTML中的表单获取隐藏输入的值。 但是在尝试了几种不同的方法来获取值之后,它总是在consolefirebug中说变量为null。。下面是javascript: var mcq_test = form.mcq_test.value; console.log("mcqid=" + mcq_test) var mcq_num_questions = form.mcq_num_questions.value; console.log("totalquestions="

我试图使用javascript从HTML中的表单获取隐藏输入的值。 但是在尝试了几种不同的方法来获取值之后,它总是在consolefirebug中说变量为null。。下面是javascript:

var mcq_test = form.mcq_test.value;
console.log("mcqid=" + mcq_test)
var mcq_num_questions = form.mcq_num_questions.value;
console.log("totalquestions=" + mcq_num_questions)
var x = 1;
var send = [];
send.push("mcq_test=");
send.push(mcq_test);

console.log("Send: " + send);

// have commented out the bits below...just go through them carefully looking at the string functions, put them in the send += (SRING 1 + STRING 2 + ...) format

for (var x = 1; x <= mcq_num_questions; x++) {
var questionidd = "mcq_question_id";
console.log("1 = " + questionidd);
var questionid = questionidd.concat(x); // mcq_question_id$ctr the question numer
console.log("2 = " + questionid);
var mcqid = form.questionid.value; // the questions id on db
console.log("3 = " + mcqid);
var answerr = "mcq_question";
var answer = answerr.concat(x); // mcq_question$ctr the questions chosen answer
var chosenanswer = form.answer.value; // the answers value
console.log("4 = " + chosenanswer);
var amp = "&";
var equal = "=";
var questionide = questionid.concat(equal); // "mcq_question_id$ctr="
var questionida = amp.concat(questionide); // "&mcq_question_id$ctr="
var answere = amp.concat(answer,equal); // "&mcq_question$ctr="
if (x = 1) { send.push(questionide, mcqid, answere, chosenanswer); }
else {
send.push(questionida, mcqid, answere, chosenanswer);
}
} 
表格:


我没有找到getElementById的等价项,但是form方法对我来说很有效

在尝试访问DOM之前,需要确保它已加载。将Javascript放在HTML之后,或者设置一个事件来触发变量定义。

使用此选项时

echo"<input type=\"hidden\" name=\"mcq_question_id$ctr\" id=\"mcq_question_id$ctr\" value=\"$questionID\" form=\"SubmitTest\" />";
在创建输入类型之前,请确保您的“$questionID”不为空

使用此选项,然后进行测试

echo"<input type=\"hidden\" name=\"mcq_question_id$ctr\" id=\"mcq_question_id$ctr\" value=\"questions\" form=\"SubmitTest\" />";

告诉我你的页面中有多少个问题id,并在这个页面上发布你的全部代码,3,但这取决于你进行的测试-我们有多达100个问题的测试,你想让我发布整个javascript部分还是也包含html?如果这有助于@manishnagar,那么现在就有更多的信息了。当你为问题创建输入类型id时,你从哪个值开始$ctr?对于var x=1,请从中删除“var”;事件是由一个按钮触发的,这足够了还是我需要添加其他内容?然后确保在单击按钮之前,元素已经存在。这应该足够了。。。$ctr是什么?我在问题中简要提到过,它是一个数字,从1开始,每个循环递增1,对于页面上的每个问题-给每个输入一个不同的id,例如mcq_问题_id2@luiges90我不太清楚你的意思,元素肯定在页面上,在尝试之前,我等待页面加载。我显示的代码是一个较长函数的一部分,如果我使用这个函数,我能将它放在我的其他函数中吗是的,输入类型从mcq_question_id1开始$questionID不是空的——它不能是空的,因为没有它问题就不会出现
form[variable].value;
echo"<input type=\"hidden\" name=\"mcq_question_id$ctr\" id=\"mcq_question_id$ctr\" value=\"$questionID\" form=\"SubmitTest\" />";
echo"<input type=\"hidden\" name=\"mcq_question_id$ctr\" id=\"mcq_question_id$ctr\" value=\"questions\" form=\"SubmitTest\" />";