我想在一个函数中向用户提出一系列问题。
如果我使用prompt(),可以在一个函数中询问所有问题。
function question(){
var name = prompt("Enter your name");
var age = prompt("Enter your age");
}
但如果我尝试使用输入标签,这是不可能的。
function question(){
document.write("Enter your name");
// you can't wait until the user responds. It will simply execute all the lines at once.
name = document.getElementById("input").value;
document.write("Enter your age");
age = document.getElementById("input").value;
}
如果我这样做,我就无法使用输入标记在一个功能中向用户提问。我怎么能等到用户回复?
答案 0 :(得分:1)
除第一个输入框外,您可以禁用所有输入框。可以在用户对第一个响应时启用第二个。输入线将继续这样。
这是一个小小的示范。请注意,这只是一个示例代码,显示了设计模式。
<input id="name"></input> <button onClick="getInput()">Ok</button>
<input id="address"></input> <button onClick="getInput()" disabled>Ok</button>
和JS
var name, address;
functon getInput() {
name = document.getelementById("name").value;
address = document.getElementById("address").value;
if (address !== "")
document.getElementById("address").removeAttribute("disabled");
}
JS中有许多先进的方法。但是你可能应该首先研究这种模式。
答案 1 :(得分:0)
您无法从函数中的相同输入中获取2个不同的值。您应该创建另一个输入或一些按钮来区分变量。例如:` 输入你的名字 输入您的年龄 保存 var bSave = window.document.getElementById('bSave'); bSave.addEventListener(“点击”,问题);
var newName = window.document.getElementById('iName');
var newAge = window.document.getElementById('iAge');
function question() {
name=newName.value;
age=newAge.value;
}
</script>
`
答案 2 :(得分:0)
prompt()
是写HTML而不是要求用户输入function checkQuestion(){
if(document.getElementById("name").value == "")
alert('name empty');
if(document.getElementById("age").value == "");
alert('age empty');
}
。您需要的是在用户提交表单之前输入验证,如
{% load staticfiles %}
<!DOCTYPE html>
...
<link href="{%static 'file.css' %}" rel="stylesheet">
...
答案 3 :(得分:0)
要链接提示,您可以执行以下操作:
const name = prompt("Enter your name");
if (!!name) {
const age = prompt("Enter your age");
if(!!age){
...
}
}
或者,如果您可以在项目中使用rxjs 5.5+,则可以使用可观察对象来等待第一个提示。 例如:
of(prompt("Enter your name"))
.pipe(first(), filter((name) => !!name))
.subscribe((name) => {
var age = prompt("Enter your age")
if(age) {
...
}
});