我有一个选择,以下是控制台输出。
> select.options[select.selectedIndex]
<option value="49">books & stationary</option>
> select.options[select.selectedIndex].innerHTML;
"books & stationary"
当我使用innerHTML调用时,它会格式化值并用&
替换&
我如何才能获得未格式化的值?
答案 0 :(得分:2)
在询问innerHTML
时,您要求使用HTML。在HTML中,&
字符很特殊,编写books & stationery
在技术上是错误的 - 应该说books & stationery
。浏览器非常智能,可以识别出不明确的含义,并对其进行更正。因此,当您要求返回HTML时,您将获得更正的值。
如果你想要文本,那就另当别论了。使用.textContent
代替.innerHTML
。
如果您已经 HTML并希望删除HTML标记并从中获取文本,则可以执行以下操作:
function strip_html_to_text(html) {
var el = document.createElement('div');
el.innerHTML = html;
return el.textContent;
}
答案 1 :(得分:1)
事实证明它更简单。文本函数调用给出了我正在寻找的文本
select.options [select.selectedIndex]的.text;
output: books & stationary
答案 2 :(得分:1)
将replace与textContent一起使用而不是innerHTML:
select.options[select.selectedIndex].textContent.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
答案 3 :(得分:1)