javascript循环思想引导

时间:2016-08-31 13:17:55

标签: javascript json ajax twitter-bootstrap

我有一个简单的引导程序页面,我需要将JSON数据加载到其中:

这是我的剧本:

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
        var tweets = JSON.parse(xhr.responseText);  

        var tweet = '   <div class="col-xs-12 col-sm-6 col-md-8 col-md-offset-3">';
        var name = ' <h4 class="card-title">';
        var photo = '    <div class="col-md-4 col-md-offset-3"><div class="col-md-4 ">';

        for (var i = 0; i < tweets.length; i += 1) {

            name += tweets[i].name;
            name += '</h4> </div>';

            tweet += ' <div class="jumbotron">';
            tweet += '  <p  class="card-text">';
            tweet += tweets[i].tweet;
            tweet += "<br>";
            tweet += "</p></div></div>";

            photo += '  <img class="img-responsive img-circle" src="user/';
            photo += tweets[i].activation;
            photo += '/';
            photo += tweets[i].pic;
            photo += '"></div></div>';

            document.getElementById('photo').innerHTML = photo;
            document.getElementById('name').innerHTML = name;
            document.getElementById('tweet').innerHTML = tweet;

            // close all html tags   
        }
    }
};
xhr.open('GET', 'empdata.json');
xhr.send();

这是我的HTML:

<div class="container">
    <div class="card">
        <div class="card-header">    
            <div class="row">
                <div id="photo">
                    <!-- here  where the pic goes ! -->
                </div>
                <div id="name">
                    <!-- here  where the name goes ! -->
                </div>
            </div>    
            <div class="card-block row">
                <div id="tweet">
                    <!-- here  where the tweet goes ! -->
                </div>
            </div>
        </div>
    </div>
</div>
</div>

<div class="card-block row">    
    <div id="tweet"> </div>
</div>

它正确地循环遍历所有JSON数据,但它首先显示所有图片,然后分别显示名称和最后的推文。认为这个问题与我在循环中遵循的机制有关。

2 个答案:

答案 0 :(得分:1)

我认为你的意思是这样做。它可以更简单但不改变你的HTML我会这样做:

var container = document.querySelector(".container");
for (var i=0; i<tweets.length; i += 1) {
    var name = ' <h4 class="card-title">';
    name += tweets[i].name;
    name += '</h4> </div>';
    var tweet = '<div class="col-xs-12 col-sm-6 col-md-8 col-md-offset-3">'
    tweet += ' <div class="jumbotron">';
    tweet += '  <p  class="card-text">';
    tweet += tweets[i].tweet;
    tweet += "<br>";
    tweet += "</p></div></div>";
    var photo ='<div class="col-md-4 col-md-offset-3"><div class="col-md-4 ">' 
    photo += '  <img class="img-responsive img-circle" src="user/';
    photo += tweets[i].activation;
    photo += '/';
    photo += tweets[i].pic;
    photo += '"></div></div>';

    container.innerHTML+='<div class="card"><div class="card-header">'+
    photo+name+tweet+'</div></div>';
}

答案 1 :(得分:0)

已编辑尝试在循环外部设置innerText

for (var i=0; i<tweets.length; i += 1) {

        name += tweets[i].name;
        name += '</h4> </div>';
              ...
        photo += tweets[i].pic;
        photo += '"></div></div>';

    }
        document.getElementById('name').innerHTML = name;
        document.getElementById('photo').innerHTML = photo;