2009-07-03 6 views
0

Maintenant, je suis sûr que c'est super facile, j'ai une fonction appelée "remove_deposit" dont je veux que la case à cocher soit fausse si c'est vrai. Mais je ne peux pas sembler le faire fonctionner ..javascript onclick remove single checkbox

function remove_deposit() { 
    if(document.getElementById('deposit').checked == true) { 
     document.getElementById('deposit').checked == false; 
    }; 
}; 

Suis-je au moins sur la bonne voie ?? lol

+1

Vous n'avez besoin que d'un "=" sur la troisième ligne. Est-ce une faute de frappe ou avez-vous copier coller? – Joel

Répondre

3
function remove_deposit() { 
    if(document.getElementById('deposit').checked == true) { 
     document.getElementById('deposit').checked = false; 
    }; 
}; 

Vous effectuiez une comparaison au lieu de simplement définir l'attribut checked sur false.

3
function remove_deposit() { 
    document.getElementById('deposit').checked = false 
} 

C'est tout ce dont vous avez besoin. La raison pour laquelle votre code ne fonctionnait pas était que vous utilisiez deux signes égal, qui est un opérateur de comparaison, au lieu d'un signe égal, qui est l'opérateur d'affectation.

Addendum: J'ai supprimé l'instruction if car elle ne fait vraiment rien d'utile. Si vous avez fait cela pour optimiser le code, alors je voudrais juste souligner que vérifier l'instruction if sera probablement plus lent que de simplement cocher la case false. En outre, vous n'avez pas besoin de terminer chaque ligne avec un point-virgule en JavaScript. Vous pouvez le faire si vous voulez mettre plusieurs commandes sur une seule ligne, mais sinon ce n'est pas nécessaire.

résultats sont.

Si la plupart des gens de temps en cours d'exécution du javascript pour régler la case à false n'ont la case à cocher la valeur true, sauter l'instruction if est plus rapide. Sinon, si la case à cocher est définie sur false la plupart du temps, l'instruction if sera plus rapide. Avec un rapport de 1: 1, aucune instruction if est préférée.

La case à cocher doit être définie sur false au moins 54% du temps pour que le code if soit plus efficace. au lieu de document.getElementById() Si c'est une case à cocher, il est probablement sous une forme, vous pouvez également accéder à la méthode ancienne document.formName.elementName:

http://img33.imageshack.us/img33/4260/results.png http://img33.imageshack.us/img33/4260/results.png

Side note . Parce que la méthode de formulaire n'a pas besoin de traverser le DOM comme le fait getElementById, je pense que ce serait plus rapide.

Les résultats sont en.

Avec 0 ID précédant, document.test_form.checkbox (DTFC) est plus lente que document.getElementById ('case') (GEBI). Avec 100 identifiants qui le précèdent, document.test_form.checkbox est toujours plus lent que document.getElementById ('checkbox').

http://img8.imageshack.us/img8/6683/resultsw.png http://img8.imageshack.us/img8/6683/resultsw.png

je suppose que cela règle.

PS: Ils ont tous été testés sur Firefox en utilisant Firebug. Je ne peux pas prétendre à l'efficacité du WebKit de Safari, du KJS de Konqueror, du moteur propriétaire d'IE ou du V8 de Google Chrome. Je suppose qu'ils devraient ressembler à ceux-ci, mais ils pourraient être différents.

+0

Je suppose que non, mais je ne vois pas exactement comment je suis impoli non plus. –

+1

J'ai supprimé la remarque de début inutile. –

+0

Je ne voulais pas rejeter l'auteur pour poser la question; J'étais simplement rebuté par la déclaration inutile. Cela ressemblait à une perte pour moi. Quoi qu'il en soit, je supprimerais le commentaire mais Josh m'a battu au coup de poing. : -/ Tout va bien qui finit bien? –

1

Vous avez une petite erreur dans votre exemple de code sur la ligne 3.Vous avez utilisé un double égal ==

Il faut lire:

document.getElementById ('dépôt') checked = false;.