2010-11-29 126 views
1

當使用WebKit瀏覽器(Chrome或Safari)時,如果我嘗試獲取複選框的默認值,則返回「」。但是,在Firefox或IE中的相同的JavaScript將返回「on」。Webkit複選框默認值爲空?

所以可以說我有一個頁面上此複選框:

<input type="checkbox" id="chkDefaultValue"> 

我用這個JavaScript來返回一個頁面

var elems = document.getElementsByTagName('input'); 

然後我經過一個循環上的所有「輸入」元素得到這樣的值

elems[i].getAttribute('value') 

當elems [i]是該複選框時,在Chrome或Safari中返回「」,但是Firef牛或IE它返回「開」。

有沒有什麼方法可以使用Javascript來返回Safari或Chrome中的「on」值?在Chrome中,我使用了一個使用.val()的jquery調用,它實際上返回「on」,但我需要一種方法在Safari中使用Javascript來完成此操作。

謝謝!

編輯:

實際上我尋找「價值」的具體屬性,因爲一個複選框的「值」可以是任何東西,像「貓」或「自行車」。

+0

您是否嘗試將此控件值的值屬性設置爲「on」? – marr75 2010-11-29 16:18:54

回答

4

改爲使用checked來查看是否選中了複選框或無線電輸入。

如果您確實想要的是獲取value屬性,並且看不到該複選框是否已選中,則首先需要將該複選框設置爲set a value。如果沒有設置,那麼你得到null是正常的行爲。

您還可以通過自己作爲一個默認值分配on複製Firefox和IE的行爲:

var myVal = elems[i].getAttribute('value'); 
if(myVal === null) 
    myVal = 'on'; 
+0

我實際上是在尋找「值」屬性,因爲複選框的「值」可以是任何東西,比如「貓」或「自行車」。 – sbonkosk 2010-11-29 16:02:00

0

我認爲,這是因爲elems[i].getAttribute('value')是不是你應該使用以獲得複選框的狀態是什麼。

嘗試使用elems[i].getAttribute('checked')或只是elems[i].checked來獲得狀態。 順便說一句,elems[i].getAttribute('value')可以縮短到只有elems[i].value


剛纔看了您的評論另一個答案...

下面是從jQuery回購爲.val()聲明來源:

getVal = function(elem) 
{ 
    var type = elem.type, val = elem.value; 

    if (type === "radio" || type === "checkbox") 
    { 
    val = elem.checked; 
    } else if (type === "select-multiple") { 
    val = elem.selectedIndex > -1 ? jQuery.map(elem.options, function(elem) {return elem.selected;}).join("-"):""; 
    } else if (elem.nodeName.toLowerCase() === "select") { 
    val = elem.selectedIndex; 
    } 

    return val; 
} 

這是非常簡單的JavaScript,你可以只省略.map()函數。


此外,爲什麼不只是測試value財產的存在?

function niceValue(element) 
{ 
    if (element.value != '') 
    { 
    return element.value; 
    } elseif (element.checked) { 
    if (element.checked) 
    { 
     return 'on'; 
    } else { 
     return 'off'; 
    } 
    } 
} 

祝你好運!