2016-06-14 49 views
0

http://bootsnipp.com/snippets/9ypWX
问题是这样的:
我一直在研究一个主要依赖BootStrap Navbars的应用程序。为了将值传递给javascript函数,我将属性“value”添加到了许多li元素中。 一个例子:Internet Explorer 11将value =“1_1”更改为value =“1”!我能做什么?


<ul> 
    <li value="1_1" onclick="doSomethingTo(this);">Option1</li> 
    <li value="1_2" onclick="doSomethingTo(this);">Option2</li> 
</ul> 

一切工作正常,直到我尝试在IE浏览器。然后突然,Internet Explorer决定将属性更改为值=“1”。它在浏览器中呈现为:

<ul> 
    <li value="1" onclick="doSomethingTo(this);">Option1</li> 
    <li value="1" onclick="doSomethingTo(this);">Option2</li> 
</ul> 

我现在无法访问处理函数中使用的值的其余部分。

有什么我可以做IE浏览器,使其停止改变属性值在这种情况下?这是一个已知的问题吗?

我现在的解决方法是将所有的属性名称改为'val',而改变我的所有javascript。对此并不满意。

谢谢。

+2

可能是因为“li”上的'value'不是有效的HTML。用'data-'尝试一些东西,例如'data-value =“1_1”' – putvande

+4

li上的值只能是一个数字(http://www.w3schools.com/tags/att_li_value.asp),它用于排序列表。您的清单没有订购,为什么使用价值? – Cristy

回答

0

当定义非标准字段时,使用"data-"作为属性名称前缀更为标准。正如@Cristy所评论的,<li>上的"value"属性被有意限制为一个数字。

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li#attr-value

<ul> 
    <li data-value="1" onclick="doSomethingTo(this);">Option1</li> 
    <li data-value="1" onclick="doSomethingTo(this);">Option2</li> 
</ul> 

...

function doSomethingTo(element) { 
    console.log(element.getAttribute("data-value")); 
} 

有趣的是,IE存在本身(怪异)实际上有助于发现潜在的问题!

+2

“* IE本身*”不会让IE *对规则更加严格,这使得它在这种情况下更胜一筹?由于[W3C声明](https://www.w3.org/wiki/HTML/Elements/li#HTML_Attributes)'li'(列表项)上的'value'属性可以调用它*很奇怪*只是数字。 – Marcus

+0

是的 - 我的错误... –

+0

@马库斯 - 正确。这里提到的奇怪之处可以与w3规范(在这种情况下,Chrome等人比较混乱)或者与其他浏览器相比较。 – Josh

相关问题