Javascript HTML:获取特殊字符而不进行格式化
我有一个选择,下面是控制台输出Javascript HTML:获取特殊字符而不进行格式化,javascript,html,select,Javascript,Html,Select,我有一个选择,下面是控制台输出 > select.options[select.selectedIndex] <option value="49">books & stationary</option> > select.options[select.selectedIndex].innerHTML; "books & stationary" >选择.options[选择.selectedIndex] 书籍和文具
> select.options[select.selectedIndex]
<option value="49">books & stationary</option>
> select.options[select.selectedIndex].innerHTML;
"books & stationary"
>选择.options[选择.selectedIndex]
书籍和文具
>select.options[select.selectedIndex].innerHTML;
“书籍和文具”
当我使用innerHTML调用时,它会格式化值并将
&
替换为&代码>如何获得未格式化的值?在要求内部HTML
时,您要求的是HTML。在HTML中,和
字符是特殊的,从技术上讲,写书籍和文具
——应该是书籍和文具是错误的;信纸
。浏览器足够智能,可以在不含糊的情况下识别您的意思,并纠正它。因此,当您要求返回HTML时,您得到的是正确的值
如果你想要文本,那是另一回事。使用.textContent
而不是.innerHTML
如果您已经获取了HTML,并且希望剥离HTML标记并从中获取文本,则可以执行以下操作:
function strip_html_to_text(html) {
var el = document.createElement('div');
el.innerHTML = html;
return el.textContent;
}
在要求innerHTML
时,您要求的是HTML。在HTML中,和
字符是特殊的,从技术上讲,写书籍和文具
——应该是书籍和文具是错误的;信纸
。浏览器足够智能,可以在不含糊的情况下识别您的意思,并纠正它。因此,当您要求返回HTML时,您得到的是正确的值
如果你想要文本,那是另一回事。使用.textContent
而不是.innerHTML
如果您已经获取了HTML,并且希望剥离HTML标记并从中获取文本,则可以执行以下操作:
function strip_html_to_text(html) {
var el = document.createElement('div');
el.innerHTML = html;
return el.textContent;
}
结果证明它相当简单。Text函数调用提供我要查找的文本
select.options[select.selectedIndex].text
结果证明它相当简单。Text函数调用提供我要查找的文本
select.options[select.selectedIndex].text
将替换与textContent而不是innerHTML一起使用:
select.options[select.selectedIndex].textContent.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
将替换与textContent而不是innerHTML一起使用:
select.options[select.selectedIndex].textContent.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
如果只想获取选定选项的文本。您可以使用.textContent
而不是.innerHTML
如果您只想获取所选选项的文本。您可以使用.textContent
而不是.innerHTML
将“&”替换为“&”?或者您的意思是将“&”替换为“&”?使用decodeURIComponent(select.options[select.selectedIndex].innerHTML)
@Prabhuram没有work@Prabhuram:decodeURIComponent
用于URI解码(顾名思义),而不是HTML实体解码。没有现成的函数可以实现这一点-您最好使用自定义的replace
,或者创建一个HTML元素并读取其textContent
。使用select.options[select.selectedIndex]。text
将“&”替换为“&”?或者您的意思是将“&”替换为“&”?使用decodeURIComponent(select.options[select.selectedIndex].innerHTML)
@Prabhuram没有work@Prabhuram:decodeURIComponent
用于URI解码(顾名思义),而不是HTML实体解码。没有现成的函数可以实现这一点-最好是使用自定义的replace
,或者创建一个HTML元素并读取其textContent
。使用select.options[select.selectedIndex]。text
编写书籍和文具
不是错误,XHTML中除外。并且&
这样存储在DOM中。正是对innerHTML
的引用导致的序列化将其转换为&代码>。除了在XHTML中,编写书籍和文具不是错误。并且&
这样存储在DOM中。正是对innerHTML
的引用导致的序列化将其转换为&
。这是最好的答案,因为所有浏览器都支持text
属性。(IE 8及更早版本中不支持textContent
属性。)这是最好的答案,因为所有浏览器都支持text
属性。(IE 8及更早版本中不支持textContent
属性。)