通过插入嵌入javascript创建一个新的div?

时间:2013-05-27 11:21:48

标签: javascript

例如,我有这样的html元素:

<div>
    <script type="text/javascript" src="js/embed.js"></script>
</div>

我应该如何编写embed.js来创建一个新的div而不使用jquery?

非常感谢

4 个答案:

答案 0 :(得分:2)

听起来你想要的结果看起来像下面的标记:

<div>This is the new div</div>
<div>
    <script type="text/javascript" src="js/embed.js"></script>
</div>

如果是这种情况,您需要:

  1. 找到src等于'js / embed.js'的脚本标记
  2. 选择父级(div容器)
  3. 使用insertBefore()添加新的div
  4. 如果这一切都是真的,代码看起来像这样:

    var parent,
        i = 0,
        scripts = document.scripts,
        newDiv =document.createElement('div');
    
    newDiv.innerHTML = "This is the new div";
    
    for (var i = 0; i < scripts.length; i++) {
        if (scripts[i].getAttribute('src') === 'js/embed.js') {
            parent = scripts[i].parentNode;
            parent.parentNode.insertBefore(newDiv, parent)
        }
    }
    

    jsFiddle

    如果您希望您的标记如下:

    <div>
        <div>This is the new div</div>
        <script type="text/javascript" src="js/embed.js"></script>
    </div>
    

    然后使用:

    var i = 0,
        scripts = document.scripts,
        newDiv = document.createElement('div');
    
    newDiv.innerHTML = "This is the new div";
    
    for (i = 0; i < scripts.length; i++) {
        if (scripts[i].getAttribute('src') === 'js/embed.js') {
            scripts[i].parentNode.insertBefore(newDiv, scripts[i])
        }
    }
    

    fiddle

答案 1 :(得分:1)

只需使用document.write()

document.write('<div></div>');

document.write()将输出写入正在执行的位置,在您的情况下写入第一个<div>

答案 2 :(得分:1)

以下可能有效:

<div id="mydiv">
</div>

function addDiv()
{
  document.getElementById("mydiv").innerHTML = "<div>some other text</div>"
}

答案 3 :(得分:0)

document.querySelector("div script[src='js/embed.js']").parentElement.appendChild(document.createElement("div"));