0

我有一个给客户的脚本。客户端可以将其放在其 html 正文中的任何位置。它可以放在 div、td、p 或任何类似的东西之间。

脚本看起来像这样:

<script id="myExample" src="http://www.mydomain.com/example.js" ></script>

现在,在“example.js”中,我想动态地包装我的脚本。

我试过类似的东西:

// create the container div
$("#myExample").wrap('<div></div>');
document.getElementById("myExample").firstChild.setAttribute("id","myExampleContainer");

...但我收到一个错误:

TypeError: document.getElementById(...).firstChild is null

可以用 div 包装当前元素(这是一个 js),并给包装器一个 id 可能吗?

更新:请参阅下面 Musa 的答案。

两种工作解决方案:

// create the container div
$("#myExample").wrap('<div></div>');
document.getElementById("myExample").parentNode.setAttribute("id","myExampleContainer");

...或者:

$("#myExample").wrap('<div id="myExampleContainer"></div>');
4

3 回答 3

1

应该childNodes代替firstChild

document.getElementById("myExample").childNodes[ 0 ].setAttribute...

但不要忘记检查父节点是否有子节点:

if( document.getElementById("myExample") && document.getElementById("myExample").childNodes.length ) {
    // some stuff here...
}
于 2013-06-09T14:57:46.187 回答
1
$("myExample").wrap($("<div/>", { id: "myExampleContainer" }));
于 2013-06-09T14:59:09.627 回答
1

包装器是#myExample不是孩子的父母,所以你必须这样做

document.getElementById("myExample").parentNode.setAttribute("id","myExampleContainer");

http://jsfiddle.net/awz8U/1/
或者只是在 div 中添加 id

$("#myExample").wrap('<div id="myExampleContainer"></div>');

http://jsfiddle.net/awz8U/2/

于 2013-06-09T14:59:15.383 回答