http://bootsnipp.com/snippets/9pwx
问题是:
我一直在研究Bootstrap Navbars的应用程序。为了将值传递到JavaScript函数,我已将属性"值"添加到许多LI元素中。一个例子:
<ul>
<li value="1_1" onclick="doSomethingTo(this);">Option1</li>
<li value="1_2" onclick="doSomethingTo(this);">Option2</li>
</ul>
一切正常,直到我在Internet Explorer中尝试。然后突然,Internet Explorer决定将属性更改为value =" 1"。它在浏览器上呈现为:
<ul>
<li value="1" onclick="doSomethingTo(this);">Option1</li>
<li value="1" onclick="doSomethingTo(this);">Option2</li>
</ul>
我现在无法访问其余值,该值已在处理程序函数中使用。
在这种情况下,我可以对IE做些什么可以使其停止更改属性值?这是一个已知问题吗?
我的解决方法现在是将所有属性名称更改为" val",然后更改我的所有JavaScript。对此不太满意。
谢谢。
在定义非标准字段时,将"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"));
}
有趣的是,即(怪异)实际上有助于找到一个潜在的问题!