动态填充JSON层次结构

Dynamically Populated JSON Heirarchy

本文关键字:层次结构 JSON 填充 动态      更新时间:2023-09-26

我正在尝试创建一个div元素,使用JSON动态填充标题、图像和描述。当每个整体元素只有这三个元素时,我让它工作了,但后来我想给三个次要元素都添加一些属性。

有人能看出我做错了什么吗?实际上,它只填充迭代的第一项,之后就不再填充了。此外,p标记的class属性没有填充,甚至没有定义。

我对JSON非常陌生,请在这里帮助我=)我肯定有什么地方我打错了,或者没有想清楚,但是我被难住了。

The ITEMS:

    var json = {
        "items": [
     /* Item One */
     {
         "title": 
          {
             "text": "Title",
             "class": "titleClass"
          }
         ,
         "image": 
          {
             "src": "imgs/mail.png",
             "class": "imageClass"
          }
         ,
         "description": 
             {
             "text": "Author",
             "class": "authorClass"
             }
         ,
     },

     /* Item Two */
     {
         "title": 
             {
            "text": "Title2",
            "class": "titleClass"
             }
         ,
         "image": 
             {
             "src": "img/money.png",
             "class": "imageClass"
             }
         ,
         "description": 
             {
            "text": "Author2",
            "class": "authorClass"
             }
         ,}]};

迭代项的代码:

    var news = document.getElementsByClassName("item-container")[0];
    var items = json.items;
    for (var i = 0; i < items.length; i++) {
        /* Title */
        var h2 = document.createElement("h2");
        h2.innerHTML = items[i].title.text;
        news.appendChild(h2);
            /* Class */
            var titleClass = document.createAttribute('class');
            titleClass.value = items[i].title.class;
            h2.setAttributeNode(titleClass);                
        /* Image */
        var img = document.createElement("img");
        var src = document.createAttribute('src');
        src.value = items[i].image.src;
        img.setAttributeNode(src);
        news.appendChild(img);
            /* Class */    
            var imageClass = document.createAttribute('class');
            imageClass.value = items[i].image.class;
            img.setAttributeNode(imageClass);
        /* Description */
        var p = document.createElement("p");
        p.innerHTML = items[i].description.text;
        news.appendChild(p);
            /* Class */
            var descClass = document.createAttribute('class');
            descClass.value = items[i].description.class;
            p.setAttributeNote(descClass);
    };
HTML:

            <div class="item-container">
            </div>
CSS:

还没有CSS,我试图在应用样式之前让它工作。

你只需要替换:

p.setAttributeNote(descClass); 

:

p.setAttributeNode(descClass); //"...Node" instead of "...Note"

当一个循环只迭代一次时,问自己是否所有的JS代码都是有效的,并开始寻找代码停止正常工作的错误。

希望有帮助!