2010-10-21 3 views
0

J'essaie de prendre du texte qui est dans un tableau (un mot par valeur) et l'insérer en html. Tout le code est ici: http://jsfiddle.net/chromedude/r6wVq/3/.Problème avec l'utilisation de javascript pour insérer des balises <input> en html

Mise à jour: Ma question est ce que je fais mal? Ça ne fait rien qui soit bizarre. Juste pour tout le monde qui se demandait ce que ce code est censé m'aider à faire est de mémoriser de longs passages pour l'école.

+2

Merci d'avoir crashé mon navigateur! – palswim

+2

Ça ne fait rien pour moi. Aussi, quelle est votre question? –

+0

@palswim quoi ?! – chromedude

Répondre

3

Je fixe votre violon: http://jsfiddle.net/yEKPt/1/

Quel était le problème:

  1. pour champ d'iterator (here)
  2. Cette ligne (27) a jeté une erreur de syntaxe:

    textPrelim = <input type="text"></input> //Needs to be quoted. 
    

    Devrait être:

    textPrelim = '<input type="text"></input>'; //Quoted. 
    
  3. Vous avez inversé Math.random et Math.floor (lignes 8, 14).(Voir: Math.Random(), Math.Floor())

    var blank = Math.random(Math.floor() * (text.length/2)); 
    

Vérifiez ma version révisée. Je pense que cela accomplit ce que vous cherchiez?

+0

exactement ce que je cherchais .. Merci – chromedude

+2

Bon travail!:) ... @ chromedude: Je suggère d'accepter cela comme réponse. –

4

Vous avez une boucle infinie, c'est pourquoi le navigateur se bloque:

for (i = 0; i < text.length; i++) { 
    var currentText = text[i]; 
    for (i = 0; i<blanks.length; i++){} 
} 

La deuxième boucle revient toujours la variable compteur i-0. Si vous avez des boucles imbriquées, vous devez utiliser différentes variables. Et utilisez var pour déclarer les variables comme locales, par ex.

for (var i = 0; i < text.length; i++) { 
    var currentText = text[i]; 
    for (var j = 0; j<blanks.length; j++){ 
    } 
} 

Identique à la boucle for la plus extérieure!


Je ne sais pas exactement ce que vous voulez atteindre avec le code, mais voici quelques commentaires:

var blankNum = Math.random(Math.floor() * (text.length/2)); 

Math.random prend aucun paramètre, mais Math.floor fait.

for (i = 0; i < blanks.length; i++) { 

blanks est encore vide à ce point, de sorte que la boucle ne fonctionnera jamais.

if (currentText==blanks[i]){ 

Êtes-vous sûr que blanks[i] contiendra le texte? La boucle mentionnée ci-dessus (qui ne tourne jamais) semble ajouter des nombres au tableau.

textPrelim = <input type="text"></input> 

Vous obtenez une erreur de syntaxe ici, vous devez placer la chaîne entre guillemets.

+0

merci, j'ai complètement foiré sur le 'math.random (math.floor' partie que je voulais dire pour que ce soit l'inverse – chromedude

1

En plus de la réponse de Felix, essayez de vérifier votre code au http://www.jslint.com pour les erreurs de syntaxe et les variables non déclarées (implicitement globales).

Questions connexes