2016-06-14 61 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

相關問題