2010-03-21 4 views
6

Ok, quindi sto provando a modificare lo stato di una casella di controllo a livello di codice in dashcode. Ho provato:Modifica dello stato di una casella di controllo a livello di codice nel dashcode

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

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

puoi usare checkbox.checked = false ma non usare setAttribute ('checked', 'checked') , Può sembrare funzionante, ma fallisce se si fa clic manualmente sulla casella di controllo e quindi si tenta di selezionare o deselezionare utilizzando setAttribute ('checked', 'checked') o removeAttribute ('checked') – jforjs

+0

riferirsi al post recente per questo, http : //jforjs.com/setattribute-removeattribute-checkbox/ – jforjs

risposta

0

Forse:

checkbox.checked = "checked"; 

Poi:

checkbox.checked = "unchecked"; 
+0

L'ho appena provato, non funziona neanche – Daniel

+0

OK. Non ho esperienza con Dashcode, ma sembra HTML. Spero che qualcuno più esperto essere in grado di aiutarti qui. –

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

No, anche questo non funziona. – Daniel

13

Dashboard Widget basta eseguire su tecnologie WebKit, quindi codice valido per Safari dovrebbe anche essere valida in Dashcode. Uno dei seguenti dovrebbe funzionare:

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

Il fatto che non funzionino indica che c'è un problema altrove nel codice. Controllerei linea

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

assegna correttamente un elemento alla variabile checkbox. Inoltre, verifica che l'id del tuo elemento "checkbox" sia valido e corretto (non un duplicato, non ha un refuso, ecc.).

+0

Sì, ho pensato che potesse essere così, ma ho quadruplicato, l'ID è "checkbox" e il codice è checkbox = document.getElementById ("checkbox"); Non ricevo errori in fase di esecuzione. Lo sto eseguendo in uno stacklayout, cambierebbe qualcosa? – Daniel

+0

Questa è la risposta, in particolare la prima versione (non è necessario andare ovunque attributi). Se l'impostazione della proprietà 'checked' non funziona, l'errore si trova altrove. –

+0

Ho appena eseguito un test, impostando la proprietà checked, tuttavia non ha aggiornato la casella di controllo. Inoltre, attraverso altri test, inizialmente dice che la variabile verificata non è definita. – Daniel

5

Questa domanda è di un mese mentre scrivo questa risposta. Probabilmente è già stato risolto, ma in ogni caso vorrei aggiungere che se si utilizza Dashcode, la parte Checkbox è una divisione che contiene un'etichetta e un input, che è la casella di controllo "reale".

Se si ispeziona l'html mentre viene caricato in Safari, si noterà che "checkbox" è il tipo di elemento.

Quindi il modo corretto per modificare lo stato della casella di controllo sarebbe, assumendo "input" è il suo id (potrebbe avere un numero predefinito allegato però):

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

o qualsiasi metodo che si desidera utilizzare .

Il punto principale è che stavi cercando di cambiare lo stato di un altro div.

Spero che aiuti!

+0

Questo è corretto. L'OP sta probabilmente cercando di cambiare lo stato dell'elemento DIV padre in 'checked'. – mclaughlinj

1

Non so quale browser si è utilizzato, ma quando ho provato su FF 3.6, funziona. appena messo in questo modo:

checkbox.checked = false; 

mentre:

checkbox = document.getElementById('blablabla'); 

o scrivere come quello

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

Questa domanda è stato intorno un po '. Indipendentemente da ciò, i seguenti lavori per noi:

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

Come indicato in una risposta precedente, il modo in cui Dashcode crea questi controlli è necessario superare il wrapper div, che ha l'ID effettivo (casella di controllo in questo esempio) e impostare la proprietà per l'input, che è il nodo figlio 1.

Cercare l''id' effettivo dell'input sarebbe problematico in quanto non si ha il controllo su quali ID sono assegnati al nodo. Ad esempio, se hai due caselle di controllo, la prima avrà "input" come id per il nodo figlio 1 e la seconda "input1", a meno che, di origine tu abbia usato "input" o "input1" come id da qualche parte in il tuo design già!

Potrebbe esserci un altro metodo ma non l'ho ancora trovato.

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; 

Creo una tabella, fila quindi cella e creo una casella di controllo al suo interno. Posso afferrare il primo oggetto di input e impostare lo stato selezionato su true.

0

var checkbox = document.getElementById ("checkbox"); c'è un problema con questa linea, dovrebbe essere var checkbox = document.getElementById ('# checkbox');