Javascript 为什么浏览器会更改a<;中选项的值;选择>;元素?

Javascript 为什么浏览器会更改a<;中选项的值;选择>;元素?,javascript,php,html,Javascript,Php,Html,我有一个在php中生成选项的示例。其中一些值包括HTML特殊字符,如&;或者像在这种情况下Ø;(丹麦文) 出于某种原因,浏览器会更改选项的值,使其难以与传递给简单比较函数的相同值进行比较 选择选项1(“Ø;strig”)并将“Ø;strig”传递到下面的countryFilter函数,它将返回false???我可以看到e.value等于“Østrig”,而不是我在HTML中设置的值 HTML: 显示的文本转换为&和Ø是有意义的,但值选项中的数据应该保持不

我有一个在php中生成选项的示例。其中一些值包括HTML特殊字符,如&;或者像在这种情况下Ø;(丹麦文)

出于某种原因,浏览器会更改选项的值,使其难以与传递给简单比较函数的相同值进行比较

选择选项1(“Ø;strig”)并将“Ø;strig”传递到下面的countryFilter函数,它将返回false???我可以看到e.value等于“Østrig”,而不是我在HTML中设置的值

HTML:

显示的文本转换为&和Ø是有意义的,但值选项中的数据应该保持不变

如果我更改要在JavaScript iso php中动态添加的选项,那么它会再次工作,但显示的值不会转换:-/

1) 为什么浏览器(经过Chrome和IE测试)会弄乱我的数据


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;
  }