我正在申请创建调查问题。基本上,用户通过输入问题名称添加问题,然后添加一种答案,可以是简答题或多项选择题。单击按钮时如何添加事件监听器来显示文本框?
每次按下添加MC回答按钮,我都希望网页显示一个额外的文本框,用户可以在其中键入他们的“回答文本”。当用户点击添加简短答案按钮时,不应显示文本框。这是我到目前为止所做的。我如何修复我的代码?到目前为止,当我点击添加MC答案按钮时,没有任何事情发生,并且我有一个用于在答案中键入的输入字段,但是我不希望显示该按钮,除非该按钮已被点击。
document.addEventListener("DOMContentLoaded", function() {
let num_answers = 0;
document.getElementById("answer").addEventListener("click", function() {
let elem = document.createElement("input");
elem.name = "answer" + num_answers;
document.getElementById("answer_input").appendChild(elem);
num_answers++;
});
});
<h1> Survey System </h1>
<form method="POST">
<input name="question" placeholder="Enter a question" /><br/>
<button type="button" name="answer" value="Add MC answer">Add MC answer</button><br>
<input name="answer_input" placeholder="Enter an answer" /><br/>
<button type="button" name="answer" value="Add short answer">Add short answer</button><br>
<input type="radio" name="required" value="Mandatory">Mandatory<br>
<input type="radio" name="required" value="Optional">Optional<br>
<button type="submit" name="submit_question" value="Submit">Submit</button>
</form>
'name'不是'id'。另外,'input'不能有HTML,你必须将新创建的元素附加到其他现有的元素。 – Teemu
您没有标识符为“answer”的元素,因此'document.getElementById(“answer”)'没有找到将单击事件附加到的元素。 'getElementById(“answer_input”)相同'您可以使用'getElementsByName()',然后迭代每个元素。 – Nope
我改变了方法getElementsByName但它仍然不工作?还有什么不对吗? –