JavaScript for循环不起作用

时间:2018-01-20 04:54:17

标签: javascript

任何人都可以告诉我为什么当我把2的起始值放入时这个循环不起作用但是当我做1或10时它会起作用吗?

var button = document.getElementById('generate');
var resultsDiv = document.getElementById('results');
var start;
var end;

button.onclick = function(){
    resultsDiv.innerHTML = "";

    start = document.getElementById('start').value;
    end = document.getElementById('end').value;     

    generateTags(start,end);

};

function generateTags(start, stop){
    for(i=start; i<=stop; i++){
        console.log(i);
    }
}

1 个答案:

答案 0 :(得分:0)

这是因为document.getElementById("something").value会返回string

因此您将值视为string。在比较210时,字符串10按字典顺序小于2。所以它不起作用。有关详细信息,请see this

function generate()
{
    var start = document.getElementById("start").value;
    var stop = document.getElementById("stop").value;
    console.log(typeof start, typeof stop);
    
    start = parseInt(start);
    stop = parseInt(stop);
    
    console.log(typeof start, typeof stop);
    for(var i=start;i<=stop;i++)
    {
        console.log(i);
    }
}
<input id="start">
<input id="stop">
<button onclick="generate()">Generate</button>

在上面的示例中,我已使用parseInt将字符串转换为数字并继续进行。您可以删除typeof控制台。我刚添加它们来显示值的类型。