将JavaScript字典打印到div中

时间:2016-01-17 15:09:08

标签: javascript string dictionary

我有一个看起来像这样的JavaScript地图

var code = {'as':'','db':'','id3':'','term':''};

并希望将例如as打印到div中。如果我这样做,我会得到“未定义的”#39;里面的div。据我了解,这意味着价值本身是未定义的。我怎样才能预先定义"空字符串?

更新

由于似乎存在很多混淆:如果我使用上面的代码将代码[1]放入div中,则div包含'未定义'。

更新

标记如下

<div id="cont" class="diff">
    <div id="editor">
        <div id="funcRow">
            <ul>
                <li><a onclick="changeTab(0)">Settings</a></li>
                <li><a onclick="changeTab(1)">Knowledge</a></li>
                <li><a onclick="changeTab(2)">Layer 4</a></li>
                <li><a onclick="changeTab(3)">Hardware</a></li>
            </ul>
        </div>
        <div id="text" contenteditable=true>
        </div>
    </div>
</div>

和changeTab(i)如下所示:

function changeTab(i) {
    code[activeTab] = document.getElementById("text").innerHTML;
    document.getElementById("text").innerHTML = code[i];
    document.getElementsByTagName("ul")[0].getElementsByTagName("li")[i].getElementsByTagName("a")[0].className="active";
    document.getElementsByTagName("ul")[0].getElementsByTagName("li")[activeTab].getElementsByTagName("a")[0].className="";
    activeTab = i;
}

4 个答案:

答案 0 :(得分:1)

下面的代码应该是不言自明的,只需在输出

之前进行字符串化

var div = document.getElementById('test');

var code = {'as':'','db':'','id3':'','term':''};

div.innerHTML = '<pre>' + JSON.stringify(code, null, 4) + '</pre>';
<div id="test"></div>

如果您只想输出其中一个值,请使用键来访问它

var div = document.getElementById('test');

var code = {'as':'1','db':'2','id3':'3','term':'4'};

div.innerHTML = code.as; // dot notation, or "code['as']" for bracket notation
<div id="test"></div>

答案 1 :(得分:0)

像这样,但由于值为“无”,输出为“无”。

var div = document.getElementById('test');

var code = {'as':'','db':'','id3':'','term':''};

// code['as'] = "hello, world";     // un-comment to see something

div.innerHTML = '[' + code['as'] + ']';
<div id="test"></div>

这是第二个想法,基于您的问题的修订:

var div = document.getElementById('test');


var keys = ['as', 'db', 'id3', 'term' ];

var code = {};
for (var i = 0; i < keys.length; ++i) code[keys[i]] = '';

code['as'] = "hello, world";
// code[keys[0]] = "hello, world";      // or this
  
div.innerHTML = '[' + code['as'] + ']' + ' (' + code[keys[0]] + ')';
<div id="test">X</div>

答案 2 :(得分:0)

尝试使用for..in循环,.innerHTML;在break属性打印到as

后,使用div停止循环

&#13;
&#13;
// "predefine" empty strings with `1` , `2, `3`, `4`
var code = {'as':'1','db':'2','id3':'3','term':'4'};

var div = document.querySelector("div");

for (var prop in code) {
  if (prop === "as") {
    div.innerHTML += code[prop];
    break;
  }
}
&#13;
<div></div>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

问题是我试图调用代码[i],这在JavaScript中是不可能的。未定义弹出,因为JS试图评估密钥的值,这在一开始就不存在。