【问题标题】:Append element in tag right before contents with Javascript使用Javascript在内容之前的标签中附加元素
【发布时间】:2012-05-18 17:54:47
【问题描述】:

我用一个例子来说明:我需要用javascript转换下面的html

<a>Text 1</a>
<a>Text 2</a>
<a>Text 3</a>
...

编码

<a><input/>Text 1</a>
<a><input/>Text 2</a>
<a><input/>Text 3</a>
...

我不知道如何使用 createElement、appendChild 或 insertBefore/After 来实现。

【问题讨论】:

标签: javascript html dom appendchild


【解决方案1】:

没那么难:)

​(function() {
    var links = document.getElementsByTagName("a"),
        input,
        i = links.length;

    while (i--) {
        input = document.createElement("input");
        links[i].insertBefore(input, links[i].firstChild);
    }
}())​

【讨论】:

    【解决方案2】:

    .insertBefore 和 .firstChild

    您可以在每个锚点的第一个子元素之前插入新的输入元素:

    // Gather up a reference to all anchors
    var anchors = document.getElementsByTagName("a"), inputEl;
    // Cycle over all of them
    for ( var i = 0; i < anchors.length; i++ ) {
      // Create a new input field
      inputEl = document.createElement("input");
      // Insert it before the first child of the anchor
      anchors[i].insertBefore( inputEl, anchors[i].firstChild );
    }
    

    演示:http://jsbin.com/ibugul/edit#javascript,html

    正则表达式

    或者您可以使用replace 方法:

    var a = document.getElementsByTagName("a"), 
        c = a.length;
    
    while ( c-- ) {
      a[c].innerHTML = a[c].innerHTML.replace( /(.*)/, function( s, c2 ){
        return "<input />" + c2;
      }); 
    }
    

    修改.innerHTML

    var a = document.getElementsByTagName("a"), 
        c = a.length;
    
    while ( c-- ) a[c].innerHTML = "<input />" + a[c].innerHTML;
    

    jQuery

    如果您已经在您的网站上使用jQuery,您可以使用它来缩短它:

    $("a").prepend("<input />");
    

    注意,不值得为此包含库只是

    【讨论】:

    • 我知道,使用 jQuery 很简单,但这次我不需要它。
    猜你喜欢
    • 2012-08-26
    • 2011-11-07
    • 2014-01-16
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 2012-08-30
    相关资源
    最近更新 更多