我有一个看起来像这样的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;
}
答案 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
停止循环
// "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;
答案 3 :(得分:0)
问题是我试图调用代码[i],这在JavaScript中是不可能的。未定义弹出,因为JS试图评估密钥的值,这在一开始就不存在。