用javascript中的锚标记名称替换锚标记?
我得换一根绳子用javascript中的锚标记名称替换锚标记?,javascript,jquery,Javascript,Jquery,我得换一根绳子 var str =' <a name="tom">test</a>+<a name="jerry">test</a>'; 汤姆+杰瑞 像这样我们可以有很多 var str = '<a name="tom">test</a>+<a name="jerry">test</a><a name="tom">test</a>+<a name="jerry">
var str =' <a name="tom">test</a>+<a name="jerry">test</a>';
汤姆+杰瑞
像这样我们可以有很多
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,我假设您想使用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
});
我假设您想要的是将“name”属性设置为文本:
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);
您可以使用以下选项:
$('a').text(function(){
return this.getAttribute('name');
});
实现这一点不需要循环,您可以使用.text方法和返回当前锚点属性名称的回调函数
根据您的评论:我想要一个变量中的字符串
假设您需要一个唯一的值列表,不管问题的表述有多奇怪: 使用哈希映射:
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…之后添加一个检查,如下所示:
如果uniqueValueMap.hasOwnProperty nameValue继续//这可能是真的;而不是继续;对于jquery.each循环。我只是不记得了,对不起,你试过什么了?如果您给出一些示例代码并解释出错的地方,您会得到更好的响应。jQuery?或者没有?预期结果是什么?在第一种情况下使用jquery out将是tom+jerry,在第二种情况下使用tom+jerrytom+jerry所以选择它们,分别使用,使用texttest+test是一个字符串我需要一个字符串tom+jerry整个事情都是一个字符串?或者只需要将最终结果作为字符串?var myhtml='test+test'stringOK,在这种情况下,您需要使用rgex@bpbhat77看看我答案的更新,让我知道这是否是你想要的..我将删除我的答案,因为他自己很困惑,不值得回答..@Alien先生似乎是这样的,他自己真的很困惑。
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 );