Javascript For循环语法错误-单击一次将遍历整个循环

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

作为javascript的新手,我想我有一个简单的问题

  • 编辑我希望在用户从下拉框中单击一个选项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)”。在用户从下拉菜单中单击一个选项三次后,我正在寻找一种启动事件(出现按钮)的方法。我的印象是循环会有所帮助。我想你应该保持单击计数。我是否正确理解了任务?