以下是我想做的简单示例:
var footnote = somewhere.innerHTML // This is <q>the note</q>.
var result = ???(footnote)
target.setAttribute("title", result) // This is "the note".
我已经为&#34; ???&#34;尝试了各种方法和功能,但最后是标题中显示的原始标记,或者是纯文本,没有引号。< / p>
除了自己处理所有内部标记之外,有没有办法将元素转换为包含HTML扩展时的显示方式的字符串?
澄清:
我认为这很明显来自&#34;我有&#34;和#34;我想&#34;代码注释中指示的值,但这是我想要做的:
<p>
)
有内容&#34; This is <q>the note</q>.
&#34; title="..."
属性中使用的字符串。<q>
)需要进行HTML解释,以便它们显示为实际引号,理想情况下处理嵌套引号。答案 0 :(得分:0)
当您添加q
标记时,您真正添加了一个文本节点(这是您使用textContent, innerText, etc
获得的),其周围有两个CSS伪元素,即打开和关闭报价。
伪元素和伪类都不会出现在文档源或文档树中。它们实际上并不存在于DOM中,因此无法选择/赢得任何元素属性值。
简而言之,使用<q></q>
更具语义标记,但如果您希望在视图范围之外表示这些引用,则可能需要使用传统的"
< / p>
示例:
let p = document.querySelector("p"), div = document.querySelector("div");
div.title = p.textContent;
console.log(div.title);
&#13;
<p>"Example Text"</p>
<div></div>
&#13;
此外,虽然我会说我不推荐它,但如果你真的想保留你拥有的东西并且你不太关心优化,你可以简单地使用替换:
let p = document.querySelector("p"), div = document.querySelector("div");
div.title = p.innerHTML.replace(/<q>|<\/q>/gmi, '"');
console.log(div.title);
&#13;
<p><q>Example Text</q></p>
<div></div>
&#13;