2010-03-21 13 views
6

好吧,所以我試圖在代碼中以編程方式更改複選框的狀態。我已經試過:以編程方式在代碼中更改複選框的狀態

var checkbox = document.getElementById("checkbox"); 

// I have tried all the following methods. 
checkbox.checked = false; 
checkbox.selected = false; 
checkbox.value = false; 
+0

你可以使用checkbox.checked = false但不要使用setAttribute('checked','checked') ,它似乎工作,但它失敗,如果你手動點擊複選框,然後嘗試檢查或取消選中使用setAttribute('checked','checked')或removeAttribute('checked') – jforjs 2016-11-30 13:13:34

+0

引用我最近的帖子爲此,http ://jforjs.com/setattribute-removeattribute-checkbox/ – jforjs 2016-11-30 13:14:23

回答

0

可能:

checkbox.checked = "checked"; 

然後:

checkbox.checked = "unchecked"; 
+0

剛剛嘗試過,它也不行。 – Daniel 2010-03-21 21:39:18

+0

好的。我對Dashcode沒有經驗,但它看起來像HTML。:)希望有更有經驗的人 – 2010-03-22 00:35:35

2
checkbox.setAttribute("checked", "checked"); // set 
checkBox.removeAttribute("checked"); // remove 
+0

不是,那也行不通 – Daniel 2010-03-21 21:45:11

13

Dashboard構件只是WebKit的技術運行,所以代碼有效期爲Safari瀏覽器也應該是有效的在Dashcode中。以下任何一種都可以工作:

checkbox.checked = true; 
checkbox.setAttribute("checked", "true"); 

他們不工作的事實表明您的代碼中存在其他問題。我會檢查線路

var checkbox = document.getElementById("checkbox");  

正確分配給checkbox可變的元件。此外,檢查您的「複選框」元素的ID是否有效和正確(不重複,沒有錯字等)。

+0

是的,我認爲它可能是這樣的,但我已經四重檢查,ID是「複選框」,代碼是 checkbox = document.getElementById(「checkbox」); 我在運行時沒有收到任何錯誤。我在堆棧佈局中運行它,會改變什麼嗎? – Daniel 2010-03-21 22:26:11

+0

這是答案,尤其是第一個版本(不需要去任何屬性)。如果設置'checked'屬性不起作用,則故障位於其他地方。 – 2010-03-22 00:22:56

+0

我剛剛運行了一個測試,它設置了checked屬性,但是它沒有更新複選框。另外,通過一些更多的測試,最初它說被檢查的變量是未定義的。 – Daniel 2010-03-22 01:52:14

5

這個問題是一個月前,因爲我寫這個答案。它可能已經解決了,但無論如何我想補充一點,如果你使用的是Dashcode,複選框部分是一個包含一個標籤和一個輸入的div,這是一個「真正的」複選框。

如果您檢查HTML,因爲它在Safari中加載,您會注意到「複選框」是元素的類型。

因此,正確的方法來改變複選框會的狀態,假設「輸入」是它的ID(它可能有雖然連接默認號碼):你想使用

document.getElementById("input").checked="true"; 

或任何方法。

這裏的重點是你試圖改變另一個div的狀態。

希望它有幫助!

+0

這是正確的。 OP可能試圖將父DIV元素的狀態更改爲「checked」。 – mclaughlinj 2010-08-21 09:32:01

1

我不知道你使用了哪個瀏覽器,但是當我在FF 3.6上測試時,它可以工作。 只是把這樣的:

checkbox.checked = false; 

同時:

checkbox = document.getElementById('blablabla'); 

或寫這樣的

document.getElementById('idhere').checked = false; 
1

這個問題已經存在了一段時間。無論如何,以下作品適用於我們:

checkbox.childNodes [1] .checked = true; checkBox.childNodes [1] .checked = false;

正如在前面的答案中指出的那樣,Dashcode創建這些控件的方式需要通過具有實際ID(此示例中爲複選框)的div包裝器並設置輸入屬性,即子節點1。

尋找輸入的實際'id'會有問題,因爲您無法控制分配給節點的id。例如,如果你有兩個複選框,那麼第一個將有'輸入'作爲子節點1和第二個'input1'的id,除非你的輸入源或輸入1是一個id你的設計已經!

有可能是另一種方法,但我還沒有找到它。

0
cell = row.insertCell(-1); 
sel = document.createElement('input'); 
sel.setAttribute("type", "checkbox") 
sel.setAttribute("name", "myCheckBox") 
cell.appendChild(sel); 
cell.getElementsByTagName('input')[0].checked = true; 

我創建了一個表格,然後將行和單元格創建並在其中創建一個複選框。 我可以抓住第一個輸入對象並將檢查狀態設置爲true。

0

var checkbox = document.getElementById(「checkbox」);這行應該有問題,它應該是var checkbox = document.getElementById('#checkbox「);