我尝试使用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;
答案 0 :(得分:1)
您正在将linktext
的值设置为所有textContent
元素的节点列表的a
属性。
节点列表没有textContent
。您需要从特定元素中读取它。
根据您的HTML,您可能需要var linktext = elem[j].textContent
...但这对您列表中的input
,select
或textarea
元素不起作用。
目前尚不清楚要从哪里复制数据。
虽然这听起来确实是一个非常糟糕的主意。您似乎试图复制title属性中元素的文本内容,这看起来完全是多余的(在屏幕阅读器的情况下会非常可读,这将读出文本内容和(相同)标题!)
答案 1 :(得分:0)
var linktext = document.getElementsByTagName('a').textContent;
这是未定义的。这里没有定义textContent属性,只是因为你有多个&#39; a&#39;标签
/*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;