Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用javascript中的锚标记名称替换锚标记?_Javascript_Jquery - Fatal编程技术网

用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 );