困惑......执行下面的10行代码后,elem1
被定义,elem2
为空。但是,除了变量名称之外,2个代码块是相同的,并且正在创建一个' svg'节点(工作),另一个是创建一个' div'节点(失败):
var chart_name = "chart_" + ui.panel.id;
var chart_elem = document.createElementNS(svgNS, "svg");
chart_elem.setAttributeNS(null, "id", chart_name);
top.appendChild(chart_elem);
var elem1 = document.getElementById(chart_name);
var pldiv_name = "plist_" + ui.panel.id;
var pldiv_elem = document.createElementNS(svgNS, "div");
pldiv_elem.setAttributeNS(null, "id", pldiv_name);
top.appendChild(pldiv_elem);
var elem2 = document.getElementById(pldiv_name);
如果我在最后一行代码上设置断点,在调用getElementById
之前,Firebug会向我显示这个HTML视图:
<div id="tabs-2" class="etc...">
<svg id="chart_tabs-2">
<div id="plist_tabs-2">
</div>
在DOM视图中,Firebug使用localName elem1
和ID svg
显示chart_tabs-2
。它的下一个兄弟是一个div,其标识为plist_tabs-2
,是pldiv_name
的值。尽管如此,getElementById(pldiv_name)
失败了。
任何想法为什么?感谢。
答案 0 :(得分:3)
您可以尝试在SVG名称空间中创建DIV 而不是吗?
var pldiv_elem = document.createElement("div");
答案 1 :(得分:0)
您何时调用JavaScript?如果它是&#34;内联&#34;但是在你的DIV之前,代码将在HTML代码被解析并且DIV存在之前执行。您需要将代码移动到DIV之后,或者在窗口加载(或文档就绪)事件上执行它。