检索要在标题文本中使用的锚文本

时间:2018-02-24 19:57:04

标签: javascript html hyperlink

我尝试使用JavaScript来检索开始和结束锚标记之间的文本,因此我可以将其添加到标题标记中。我有成千上万的链接和十九个插件,我需要添加标题标签,我真的不必手动执行此操作。另外,你知道,弄乱第三方插件真的不是一个好主意。

我已经搜索了大约两个小时。在StackOverflow和谷歌之间,我最接近的是下面的代码。它部分有效,但标题标签读取未定义。我不确定自己做错了什么。



var linktext = document.getElementsByTagName('a').textContent;
var titletext = ['a', 'input', 'select', 'button', 'textarea'];

for (var i = 0; i < titletext.length; i++) {
  var elem = document.getElementsByTagName(titletext[i]);
  for (var j = 0; j < elem.length; j++) {
    elem[j].setAttribute('title', linktext);
  }
}
&#13;
<a href="#">Some Link Text</a>
<a href="#">More Link Text</a>
<a href="#">Further Link Text</a>
<a href="#">Last Link Text</a>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

您正在将linktext的值设置为所有textContent元素的节点列表的a属性。

节点列表没有textContent。您需要从特定元素中读取它。

根据您的HTML,您可能需要var linktext = elem[j].textContent ...但这对您列表中的inputselecttextarea元素不起作用。

目前尚不清楚要从哪里复制数据。

虽然这听起来确实是一个非常糟糕的主意。您似乎试图复制title属性中元素的文本内容,这看起来完全是多余的(在屏幕阅读器的情况下会非常可读,这将读出文本内容和(相同)标题!)

答案 1 :(得分:0)

var linktext = document.getElementsByTagName('a').textContent;

这是未定义的。这里没有定义textContent属性,只是因为你有多个&#39; a&#39;标签

&#13;
&#13;
/*var linktext = document.getElementsByTagName('a').textContent;*/

var titletext = ['a', 'input', 'select', 'button', 'textarea'];

for (var i = 0; i < titletext.length; i++) {
  var elem = document.getElementsByTagName(titletext[i]);
  for (var j = 0; j < elem.length; j++) {
    /*elem[j].setAttribute('title', linktext);*/
    elem[j].setAttribute('title', elem[j].textContent);
  }
}
&#13;
<a href="#">Some Link Text</a>
<a href="#">More Link Text</a>
<a href="#">Further Link Text</a>
<a href="#">Last Link Text</a>
&#13;
&#13;
&#13;