我正在用HTML编写“疯子”类型的程序-基本上,系统会向用户询问一系列问题,并在单击“提交”后,脚本会打印出带有其答案的故事。
我如何做到这一点,以便当用户写下答案时,他们可以按Enter并出现新问题?我希望问题仅在用户回答了上一个问题后才显示。因此,它有点类似于动画。有没有办法做到这一点?
window.writeValues = function(form) {
var Greeting = form.Greeting.value;
var fname = form.fname.value;
var celebrity = form.celebrity.value;
document.getElementById('RESULT').innerHTML = Greeting + " " + fname + " it's " + celebrity;
}
<form action="PayslipServlet" method="get">
Please enter your First name: <input type="text" name="fname" id="fname"><br/>
Please enter a celebrity:<input type="text" name="celebrity" id="celebrity"><br/>
Please enter a greeting: <input type="text" name="Greeting" id="Greeting"><br/>
RESULT: <span id="RESULT"></span><br />
<input type="button" value="Submit" onClick="writeValues(form)">. <input type="reset">
</form>
答案 0 :(得分:0)
如果这是您要的东西,这可以工作:(很长很抱歉,抱歉,我无法为您自己做:))
var questions = ["please enter your name", "please input a celeberaty", "please enter a greeting"]//questions
var answers = []
var question = 0//number of question you are on
var que = document.getElementById("question")
que.innerHTML = questions[question]
question++
window.writeValues = function(form) {
var myinput = document.getElementById("inpbox")//textbox you are getting input from
var que = document.getElementById("question")
answers.push(myinput.value)//input user input to list
if (question !== 3/*length of list*/) {
que.innerHTML = questions[question]
question++
console.log(question)
}
else {
document.getElementById('RESULT').innerHTML = answers[0]/* get answer 1*/ + " " + answers[1] + " it's " + answers[2];
}
}
window.res = function() {
var myinput = document.getElementById("inpbox")
question = 0
que.innerHTML = questions[0]
question++
answers = []
document.getElementById('RESULT').innerHTML = ""
myinput.value = ""
}
window.addEventListener("keydown", function(event) {
if(event.key == "Enter"){
writeValues()
}
});//if press enter submit
<form action="PayslipServlet" method="get">
<div id="question">please type your name:</div><input type="text" name="inpbox" id="inpbox"><br/>
RESULT: <span id="RESULT"></span><br />
<input type="button" value="Submit" onClick="writeValues(form)">. <button type="button" onClick="res()">reset</button>
</form>
答案 1 :(得分:0)
要做很多事情。
onreset()
方法清除结果。
var getNextSibling = function (elem, selector) {
var sibling = elem.nextElementSibling;
while (sibling) {
if (sibling.matches(selector)) return sibling;
sibling = sibling.nextElementSibling
}
};
function writeValues(form) {
var Greeting = form.Greeting.value;
var fname = form.fname.value;
var celebrity = form.celebrity.value;
document.getElementById('RESULT').textContent = Greeting + " " + fname + " " + celebrity;
}
function resetQuestions() {
var elements = questionForm.querySelectorAll("div.question-parent");
elements.forEach(element => {
element.removeAttribute('style');
});
document.getElementById("RESULT").textContent = "";
}
document.getElementById('questionForm').addEventListener('keypress', evt => {
var keyCode = evt.keyCode || evt.which;
if (keyCode == '13') {
var nextElement = getNextSibling(evt.target.parentNode, 'div');
if (nextElement) {
nextElement.style.display = "block";
return false;
}
}
});
form div:not(:first-child) {
display: none;
}
<form id="questionForm" action="PayslipServlet" method="get" onreset="resetQuestions()">
<div class="question-parent">
Please enter your First name: <input type="text" name="fname" class="question">
</div>
<div class="question-parent">
Please enter a celebrity:<input type="text" name="celebrity" class="question">
</div>
<div class="question-parent">
Please enter a greeting: <input type="text" name="Greeting" class="question">
</div>
RESULT: <span id="RESULT"></span><br />
<input type="button" value="Submit" onClick="writeValues(form)">. <input type="reset">
</form>