如何从div中的所有链接中删除“title”属性?

问题描述:

所以我有一个div,#footer-float,为此我只想在页面加载时自动删除所有“标题”属性,而不编辑链接本身的标记(它们是由MediaWiki自动生成的)。基本上,小小的工具提示很突兀,并妨碍了阅读链接所说的内容。如何从div中的所有链接中删除“title”属性?

我可以很容易地用jQuery来做到这一点,我想,但是,如果这可能我会用它来装载整个库。

任何想法?谢谢。

+4

问题键入 “Pleaze给我德codez” 都不是很欢迎的。首先尝试,如果出现问题,请使用附加的代码提问,如果可能,请使用jsFiddle示例。 – elclanrs

+0

@elclanrs:公平点。 –

+0

@elclanrs,肯定的事情。我会记住,但我不知道从哪里开始。 –

您可以通过循环所有链接元素并将标题设置为空字符串来删除所有标题:

function onLoad() { 
    var div = document.getElementById('footer-float'); 
    var links = div.getElementsByTagName('a'); 
    for(var i = 0; i < links.length; i++) { 
    links[i].title = ''; 
    }  
} 
+0

Doh!我错过了OP想要做链接。 +1,要简单得多。 –

+0

两者都有效,因为在div中只有li和a。但是这更简洁一点。谢谢你的时间! –

+0

@JoshK:是的,一旦我意识到我也认为这是更好的答案。 –

这是一个相当直接的递归函数:

// Clear the "title" on all child elements. 
function removeTitleOnChildren(node) { 
    var child; 

    for (child = node.firstChild; child; child = child.nextSibling) { 
     if (child.nodeType === 1) { // Element 
      if (child.nodeName === "A") { // An "a" element 
       child.title = ""; 
      } 
      removeTitleOnChildren(child); 
     } 
    } 
} 

用法:

removeTitle(document.getElementById("footer-float")); 

(以上假设HTML,而不是XHTML;它的事项为nodeName,这将是 “a”在XHTML中。)

(function(){ 
    var links = document.getElementById("footer-float").getElementsByTagName("a"); 

for(var i = 0; i < links.length; i++){ 
    links[i].removeAttribute("title"); 
} 
    console.log(links); 
})(); 

例子:

http://jsfiddle.net/udyZa/6/

+0

你正在堕入* [隐式全局恐怖](http://blog.niftysnippets.org/2008/03/horror-of-implicit-globals.html)* there ... ;-) –

+0

所以只是放在一个匿名函数里面呢? – Muqito

+0

@ MaggiQall:不,我'*仍*是一个隐式的全局。 –