我有以下h1
元素的结构
<h1>
<a href="#">My Text</a> <span>More Text</span> another text <a href="#">and a bit more</a>
</h1>
如何从h1
获取内容并将其转换为文字,以便输出为"My Text More Text another text and a bit more"
然后将其放入页面的<title>
?所以没有链接,跨度等。只是文字?
答案 0 :(得分:5)
使用jQuery只是:
$('title').text($('h1').text());
答案 1 :(得分:4)
如果没有jQuery,您可以访问<h1>
的{{1}}属性(旧IE中的textContent
),您可以更改innerText
(如修改{{1} }})。这是一个例子:
document.title
根据您希望定位<title></title>
的方式,您可以更改var text = "textContent" in document.body ? "textContent" : "innerText";
document.title = document.getElementsByTagName("h1")[0][text];
。
此外,我不确定它会如何影响<h1>
,但除非您document.getElementsByTagName("h1")[0]
,否则将包括第一个title
之前和最后<a>
之后的空白字符串。所以也许把它变成:
</a>
DEMO: http://jsfiddle.net/tzGzC/
当然,只有jQuery,它更简单:
trim
DEMO: http://jsfiddle.net/kMXLW/
<强>参考文献:强>
function trim(s) {
if (typeof s === "string") {
s = s.replace(/^\s+|\s+$/g, "");
}
return s;
}
var el = document.getElementsByTagName("h1")[0],
text = "textContent" in el ? "textContent" : "innerText";
document.title = trim(el[text]);
:https://developer.mozilla.org/en-US/docs/Web/API/document.title var el = $("h1").eq(0),
text = el.text();
document.title = $.trim(text);
:https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent 答案 2 :(得分:1)
var h1content = document.getElementById("h1").innerHTML;
// stripped string taken from http://css-tricks.com/snippets/javascript/strip-html-tags-in-javascript/
var newTitle = h1content.replace(/(<([^>]+)>)/ig,"");
document.title = newTitle;
需要注意的是,抓取工具不会遵循Javascript代码,这意味着虽然这会改变页面的标题,但它不会被搜索引擎优化。