为什么我不能在 <li> 标签中写入对象

Why I Can't Write Objects in <li> Tag

当我将 JSON 数据写入

  • HTML 标记时,它正在写入但不写入对象。是写 [object Object]:

    ○Data1     ○wash dishes         ○[object Object]
               ○find some break     ○[object Object]
    

    我正在尝试使用指向 JSON 数据库的

  • 列表,但它看起来像那样。我用那个代码给我的 JSON 打电话:

    var db_note = objpick(data);
    
    db_note.date.forEach(function(element) {
    tabledatednote.insertAdjacentHTML( 'beforeend',"<li>" + element + " </li>");
    /* I just writed to this part because is just changing "no_date.>date<" part while displaying other JSONs */
    });
    

    objpick.js is an external file

    function objpick(data){
    for(i in data){ var result = data[i] }
    return result
    };
    

    and there is my JSON database

    {
    "nodate": ["wash dishes", "find some bread"],
    "date": [{"01/01/2077" : "Cyberpunk Meet"}, {"25/05/2005" : "Buney?"}],
    "bookmark" : ["Data1"]
    }
    
  • 最终显示的是一个字符串。因此代码将您想要显示的任何内容转换为字符串。对于简单值,这种转换很容易。单个值的结果字符串是一致且明显的。

    但是对象不是简单的值。它们可能很复杂。除非在您的对象上另有定义,否则对象的 default 字符串表示形式为:[object Object]

    您显示的某些内容是值:

    "find some bread"
    

    但其中一些是对象:

    {"25/05/2005" : "Buney?"}
    

    对于对象,您需要告诉代码如何显示它。我能想到的一些选项是:

    • 手动。例如,检查对象上是否存在某个 属性,如果存在,则显示 属性 的值。
    • JSON-encode 对象并显示结果 JSON 字符串。
    • Override .toString() 在您的对象上。

    您选择哪个取决于您,出于与您看到当前默认行为相同的原因...因为只有您知道如何 want/expect 要显示的对象。