2016-02-20 65 views
1

我正在使用一些JS代码来查找页面上的所有内部链接并向它们添加子文件夹。此代码用于翻译的页面,因此到其他翻译页面的内部链接是正确的。用JavaScript替换html中的链接

我想让这段代码更新所有内部链接,除非它们有一个类属性。

如果class属性存在,我希望链接被JavaScript函数忽略。

<a class="noTranslateLink" href="domain.com" 

<script> 
    function replace_url(elem, attr) { 
     var elems = document.getElementsByTagName(elem); 
     for (var i = 0; i < elems.length; i++) 
      elems[i][attr] = elems[i][attr].replace('<?php echo $_SERVER['HTTP_HOST'] ?>', '<?php echo $_SERVER['HTTP_HOST'] ?>/ru'); 
    } 
    window.onload = function() { 
     replace_url('a', 'href'); 
    } 
</script> 

回答

1

我没有测试过,但是这必须努力:

function replace_url(elem, attr) { 
    var elems = document.getElementsByTagName(elem); 
    for (var i = 0; i < elems.length; i++) { 
    if (elems[i].getAttribute('class') != "noTranslateLink") 
     elems[i].setAttribute(attr,elems[i].setAttribute(attr).replace('','')); 

    } 
} 
+0

完美,漂亮,简单。 swap == for!=以反转条件。万分感谢! –

+0

哦,是的,那是一个问题。让我编辑这个答案:) 谢谢! –

1

要选择无类属性的所有锚元素:

var elems = document.querySelectorAll(elem + ':not([class])'); 

相反的是:

var elems = document.querySelectorAll(elem + '[class]'); 
+0

谢谢,悬停它似乎与我的代码一样工作。 '' –