Javascript For循环语法错误-单击一次将遍历整个循环
作为javascript的新手,我想我有一个简单的问题Javascript For循环语法错误-单击一次将遍历整个循环,javascript,html,if-statement,for-loop,conditional-statements,Javascript,Html,If Statement,For Loop,Conditional Statements,作为javascript的新手,我想我有一个简单的问题 编辑我希望在用户从下拉框中单击一个选项3次后发生一个事件(出现两个按钮)。我最初认为for循环可以帮助我做到这一点。我还希望最后一个选项(“无”或其他选项)显示警告,而不影响您剩余的点击次数。希望这更有意义 任何帮助都将不胜感激 var question1 = new Array(); window.onload = function () { var eSelect = document.getElementById('q
- 编辑我希望在用户从下拉框中单击一个选项3次后发生一个事件(出现两个按钮)。我最初认为for循环可以帮助我做到这一点。我还希望最后一个选项(“无”或其他选项)显示警告,而不影响您剩余的点击次数。希望这更有意义李>
var question1 = new Array();
window.onload = function () {
var eSelect = document.getElementById('question1');
var optOtherReason = document.getElementById('displayresponse');
var options = document.getElementsByTagName("option");
eSelect.onchange = function() {
for (var i=0; i<3; i++) {
if (eSelect.selectedIndex !== 3) {
var li = document.createElement("li");
li.innerHTML = options[eSelect.selectedIndex].innerHTML;
var ol = document.getElementById("appendedtext");
ol.appendChild(li);
question1.push(li.innerHTML);
var x= document.getElementById("display");
x.innerHTML=question1;
}
}
if (eSelect.selectedIndex == 3) {
i=0;
optOtherReason.style.display = 'block';
}
}
insertbutton= "block";
displaybutton = "block";
}
<select id="question1" name="question">
<option value="x">Reason1</option>
<option value="y">Reason2</option>
<option value="other">Otherreason</option>
<option value="none">None</option>
</select><br>
<div id="insertbutton" style="display:none;">
<input type="button" value="Save" onclick="insert();">
</div>
<div id="generatebutton" style="display:none;">
<input type="button" value="Show Drink" onClick="generate();">
</div>
<div id="displayresponse" style="display:none;">If you did not see a choice here, you may search for other sites.</div>
<ol id="appendedtext"> </ol>
<div id="display"></div>
var question1=新数组();
window.onload=函数(){
var eSelect=document.getElementById('question1');
var optOtherReason=document.getElementById('displayresponse');
var options=document.getElementsByTagName(“选项”);
eSelect.onchange=函数(){
对于(var i=0;i我认为您不需要循环浏览这些选项,因为您直接访问索引。这似乎就是您要寻找的:
<script type="text/javascript">
var question1 = new Array();
window.onload = function() {
var eSelect = document.getElementById('question1');
var optOtherReason = document.getElementById('displayresponse');
var options = document.getElementsByTagName("option");
eSelect.onchange = function() {
//for (var i=0; i<3; i++) {
if (eSelect.selectedIndex !== 3) {
var li = document.createElement("li");
li.innerHTML = options[eSelect.selectedIndex].innerHTML;
var ol = document.getElementById("appendedtext");
ol.appendChild(li);
question1.push(li.innerHTML);
var x= document.getElementById("display");
x.innerHTML=question1;
}
//}
if (eSelect.selectedIndex == 3){
//i=0;
optOtherReason.style.display = 'block';
}
}
insertbutton= "block";
displaybutton = "block";
}
</script>
<select id="question1" name="question">
<option value="x">Reason1</option>
<option value="y">Reason2</option>
<option value="other">Otherreason</option>
<option value="none">None</option>
</select><br>
<div id="insertbutton" style="display:none;">
<input type="button" value="Save" onclick="insert();"></div>
<div id="generatebutton" style="display:none;">
<input type="button" value="Show Drink" onClick="generate();"></div>
<div id="displayresponse" style="display:none;">If you did not see a choice here, you may search for other sites.</div>
<ol id="appendedtext"> </ol>
<div id="display"></div>
var question1=新数组();
window.onload=函数(){
var eSelect=document.getElementById('question1');
var optOtherReason=document.getElementById('displayresponse');
var options=document.getElementsByTagName(“选项”);
eSelect.onchange=函数(){
//for(var i=0;i我同意Don的观点,我认为for循环是不必要的。我会做的一个小区别是检查所选的值而不是索引,因为下拉列表很容易改变它们的顺序。另外,使用if-else而不是两个if更干净
var question1 = new Array();
window.onload = function() {
var eSelect = document.getElementById('question1');
var optOtherReason = document.getElementById('displayresponse');
var options = document.getElementsByTagName("option");
eSelect.onchange = function() {
var optOtherReason = document.getElementById('displayresponse');
var options = document.getElementsByTagName("option");
if (eSelect.value !== "other") { // For loop eliminated, checking value now
var li = document.createElement("li");
li.innerHTML = options[eSelect.selectedIndex].innerHTML;
var ol = document.getElementById("appendedtext");
ol.appendChild(li);
question1.push(li.innerHTML);
var x= document.getElementById("display");
x.innerHTML=question1;
}else{ // Using else here
optOtherReason.style.display = 'block';
}
}
insertbutton= "block";
displaybutton = "block";
}
我不明白你在这里要问什么…当然for循环会运行三次,但我想这并不奇怪?首先,你有没有检查过当你期望它通过调试输出时,那里的第一个if条件是否会产生true?例如通过console.log(eSelect.selectedIndex,eSelect.selectedIndex!==3)
在if之前(之后检查浏览器的JS控制台)。元素将只返回一个值,因此不需要循环。正如CBroe所述:检查eSelect.selectedIndex值以返回项目。我正在寻找启动事件的方法(出现按钮)在用户三次单击下拉菜单中的一个选项后。我觉得循环会有所帮助。我正在寻找启动事件的方法(出现按钮)在用户从下拉菜单中单击一个选项三次后。我觉得循环会有所帮助。好的,那么你需要的是一个计数器。让我知道下面的逻辑是否正确,以便我可以帮助编写代码:如果用户选择一个特定选项,设置计数器=1。如果用户再次选择相同的选项,则递增计数器。如果计数器=3,启动按钮。我将“turns”声明为全局变量“var turns=0”,然后当用户选择除最后一个选项之外的任何选项时,使其增加一个增量。“turns=turns+1”;最后当“turns”增加到4时,我将其设置为按钮显示“if(turns=4)”{}。出于某些原因,按钮将不显示“if”(turns==4)”而不是“if(turns=4)”。在用户从下拉菜单中单击一个选项三次后,我正在寻找一种启动事件(出现按钮)的方法。我的印象是循环会有所帮助。我想你应该保持单击计数。我是否正确理解了任务?