在javascript中用锚标记的名称替换锚标记?

时间:2014-06-09 13:14:26

标签: javascript jquery

我必须替换String

var str =' <a name="tom">test</a>+<a name="jerry">test</a>';

到tom + jerry

像这样我们可以有很多

var str = '<a name="tom">test</a>+<a name="jerry">test</a><a name="tom">test</a>+<a name="jerry">test</a>';

然后输出应为tom+jerrytom+jerry

4 个答案:

答案 0 :(得分:1)

我假设你想使用jQuery,因为jQuery标签。 这是一个jQuery示例,说明如何执行此操作:

$('a').each(function(){//Foreach anchor
    var name = $(this).attr('name');//get the value of the name attribute of the anchor
    $(this).text(name); //write the value in the anchor as text
});

Fiddle

答案 1 :(得分:1)

我假设你想要的是拥有&#39;名称&#39;属性是文本:

var tags = document.getElementsByTagName('a');

for (var i = 0; i< tags.length; i++) {
    tags[i].innerHTML = tags[i].getAttribute('name');

}

如果你想把结果放在一个字符串中..

var tags = document.getElementsByTagName('a');
function resultInString() {
    var result = "";
    for (var i = 0; i< tags.length; i++) {
        result += tags[i].getAttribute('name') + " + ";
    }

    return result;
}

这里是正则表达式,如果这是一个字符串:

var r = /name="([\w\d]+)"/g
var html = '<a name="tom">test</a>+<a name="jerry">test</a>';

function getString(html) { 
    var match;
    var result;
    while (match = r.exec(html)) {
        result += match[1];
    }
    return result;
}
getString(html);

答案 2 :(得分:1)

您可以使用:

$('a').text(function(){
   return this.getAttribute('name');
});

不需要循环来实现此功能,您可以使用.text()方法和回调函数,该函数返回当前锚点的属性name


Demo


根据你的评论:我想要一个变量中的字符串

var htmlstr = '';
$('a').each(function(){
   htmlstr += $(this).get(0).outerHTML;
});

答案 3 :(得分:1)

假设您需要一个唯一的值列表,无论问题多么奇怪: 使用哈希映射:

var uniqueValueMap = {};

$( 'a[name]' ).each( function( idx, elem ) {
    var nameValue = elem.attr( 'name' );
    uniqueValueMap[ nameValue ] = nameValue;
} );

console.log( 'Unique names:', uniqueValueMap );

// "Casting" hash to an array and making a joined string
var arrayOfValues = Array.prototype.slice.call( uniqueValueMap );
var stringOfLife = arrayOfValues.join( '+' );

console.log( 'Final result:', stringOfLife );

如果名称相同,它将使用最新的出现,而不是第一次出现。要解决此问题,您需要在var nameValue...之后添加一个检查,如下所示:

if ( uniqueValueMap.hasOwnProperty( nameValue ) ) continue; //this could be (return true;) instead of (continue;) for "jquery.each" loops. I just don't remember, sorry for inconvience