2012-04-22 4 views
-2

The code pour un compteur donne une erreurJavaScript: Erreur « L'objet ne prend pas en charge cette action »

Alors que a similar snippet ne le fait pas

Je ne peux pas comprendre aucune raison valable ...

la ligne est à l'étude:

<input type=button name="but2" value="stop" onClick="window.clearTimeout(ID);">  

le code complet est:

<html> 
     <head> 
     <script language="JavaScript"> 
      var counter=0; 
      ID=window.setTimeout("start();",2000); 
      function start() 
      { 
       counter++; 
       document.forms[0].elements[0].value=counter; 
       ID=window.setTimeout("start();",2000); 
      } 
     </script> 
     </head> 
     <body> 
      <form name="frm1"> 
       <input type="text" name="timer1"> 
       <input type="button" name="but1" value="start" onClick="counter=0; start();"> 
       <input type=button name="but2" value="stop" onClick="window.clearTimeout(ID);"> 
      </form> 
     </body> 
</html> 
+1

Quel navigateur utilisez et quelle version? – w0051977

+0

Cela doit fonctionner sur IE9 et la source d'erreur doit être supprimée, pas l'avertissement ... –

+1

J'ai IE9 et j'ai essayé les deux liens. Les deux liens fonctionnent. Quel est le problème exactement? Copiez-vous le code sur votre PC local? – w0051977

Répondre

0

Utilisez window.start au lieu de démarrer pour l'événement onClick. Il se peut que IE ne crée pas de contexte de fenêtre lorsque vous utilisez du code au lieu d'une fonction pour le gestionnaire.

1

Tout sur ce code est faux. Essayez d'éviter cette source de tutoriels à l'avenir.

Voici un script de travail: http://jsfiddle.net/teresko/qTJPx/

Liste des problèmes avec votre script:

  • manquant doctype
  • language="JavaScript" est dépréciée
  • les variables ID et counter a fini par une portée mondiale
  • en utilisant htm l pour attacher des événements
  • utilisation incorrecte de setTimeout
  • tag <script> utilisé dans <head> lorsque DOM est pas encore prêt

.. et je ne veux même pas revenir là-dessus « extrait similaire », il ressemble à quelque chose qui, de tous les droits devrait être mort et enterré. Lorsque vous ajoutez votre code JavaScript, il devrait être juste avant la balise de fermeture </body>, car à ce stade, le DOM est déjà prêt, mais la page n'a pas encore commencé à rendre.

Je vous suggère fortement de vous procurer des matériaux plus récents pour apprendre le JavaScript.

+0

incorrect ou incorrect, je dois développer des applications pour les versions antérieures ... Un bon violon, mais il doit être exactement similaire à celui (correct) mentionné dans la question. –

+0

Quel est le problème avec l'utilisation de html pour attacher des événements? Avec React tout le monde le fait :-) –

0

Salut Je pense que dans cette ligne votre obtenir l'erreur

ID=window.setTimeout("start();",2000); 

droit?

Mettre ce code

var ID=window.setTimeout("start();",2000); 

vous ne serez pas obtenir ce JavaScript: Erreur erreur Object doesn't support this action.

Questions connexes