javascript简单while循环不添加到innerHtml

som*_*dow 2 html javascript dom loops

好的,这是我的愚蠢问题.我在这里学习和...我一直在看这个,我不明白.我有一个数组,其中包含一些通过对象提供的值.像这样:

function blogObj(name,date,user_entry){
    this.names = name;
    this.dates = date;
    this.blog_entry = user_entry;

    this.propsComb = this.names + this.dates + this.blog_entry;
}

var blogRun = [
        new blogObj("name ", "something ", "something "),
        new blogObj("name ", "something ", "something "),
        new blogObj("name ", "something ", "something "),
        new blogObj("name ", "something ", "something "),
        new blogObj("name ", "something ", "something "),


];

var i=0;
var mssgs = "";
Run Code Online (Sandbox Code Playgroud)

现在当我用这个doc.write来测试这样的循环时:

function hmm(){
    while(i < blogRun.length){ 
    mssgs = blogRun[i].propsComb + '<br/>';
    document.write(mssgs);

    i++;
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到了我需要的所有值,根据循环和数组的值,名称是x5.所以基本上它有效.

现在,当我更换"document.write(mssgs)"

document.getElementById('showMore').innerHTML = mssgs;
Run Code Online (Sandbox Code Playgroud)

做到这一点

function hmm(){
    while(i < blogRun.length){ 
    mssgs = blogRun[i].propsComb + '<br/>';
    //document.write(mssgs);
    document.getElementById('showMore').innerHTML = mssgs;
    i++;
    }
}
Run Code Online (Sandbox Code Playgroud)

它只显示数组的最后一个值.它不会循环其余的数组值.我正在做的就是用getElementById等替换.write.

jon*_*ohn 6

在每次迭代中,您将覆盖(重新分配)innerHtml'showMore'

使用+=而不是追加(添加到)当前存在的内容'showMore'

document.getElementById('showMore').innerHTML += mssgs;
Run Code Online (Sandbox Code Playgroud)

边注

我还希望你for在这种情况下使用一个循环,因为你循环一个静态数组,你需要迭代的次数从一开始就知道

(blogRun.length)

for ( var i = 0, len = blogRun.length; i < len; i++ ) {
    // .... do your stuff here.
}
Run Code Online (Sandbox Code Playgroud)