Javascript 为什么浏览器会更改a<;中选项的值;选择>;元素?
我有一个在php中生成选项的示例。其中一些值包括HTML特殊字符,如&;或者像在这种情况下Ø;(丹麦文) 出于某种原因,浏览器会更改选项的值,使其难以与传递给简单比较函数的相同值进行比较 选择选项1(“Ø;strig”)并将“Ø;strig”传递到下面的countryFilter函数,它将返回false???我可以看到e.value等于“Østrig”,而不是我在HTML中设置的值 HTML: 显示的文本转换为&和Ø是有意义的,但值选项中的数据应该保持不变 如果我更改要在JavaScript iso php中动态添加的选项,那么它会再次工作,但显示的值不会转换:-/ 1) 为什么浏览器(经过Chrome和IE测试)会弄乱我的数据Javascript 为什么浏览器会更改a<;中选项的值;选择>;元素?,javascript,php,html,Javascript,Php,Html,我有一个在php中生成选项的示例。其中一些值包括HTML特殊字符,如&;或者像在这种情况下Ø;(丹麦文) 出于某种原因,浏览器会更改选项的值,使其难以与传递给简单比较函数的相同值进行比较 选择选项1(“Ø;strig”)并将“Ø;strig”传递到下面的countryFilter函数,它将返回false???我可以看到e.value等于“Østrig”,而不是我在HTML中设置的值 HTML: 显示的文本转换为&和Ø是有意义的,但值选项中的数据应该保持不
2) 有没有办法避免这种情况?值属性的内容定义为CDATA() 对于CDATA,请访问: CDATA是文档字符集和 可能包括字符实体。用户代理应该解释属性 数值如下:
- 用字符替换字符实体
- 忽略换行
- 用一个空格替换每个回车或制表符
Østrig
进行比较,或者当您希望使用实体字符串时,请在比较之前解析字符串:
function countryFilter(country){
var e = document.getElementById('country'),
n = document.createElement('span');
n.innerHTML=country;
if (e.value=='') return true;
return e.value.localeCompare(n.textContent)==0;
}
很难理解你的问题,因为你可能使用了一些在线英语翻译。无论如何试着换成。谢谢。根据定义可以看出它是正确的。它能改变数据对我来说毫无意义。顺便说一句,我用php双重编码解决了这个问题。。。。i、 e&;奥斯拉什;strig成为Ø;奋斗
function countryFilter(country)
{
var e = document.getElementById('country');
if (e.value=='') return true;
return e.value.localeCompare(country)==0;
}
function countryFilter(country){
var e = document.getElementById('country'),
n = document.createElement('span');
n.innerHTML=country;
if (e.value=='') return true;
return e.value.localeCompare(n.textContent)==0;
}