2010-10-21 22 views
0

我正在嘗試將數組中的文本(每個值一個字)插入到html中。所有的代碼在這裏:http://jsfiddle.net/chromedude/r6wVq/3/使用javascript在html中插入<input>標籤時出現問題

更新: 我的問題是我做錯了什麼?它不會做任何奇怪的事情。

只是想知道這段代碼應該幫我做什麼的每個人都記住了很長一段段時間的學校。

+2

謝謝你撞我的瀏覽器! – palswim 2010-10-21 21:50:02

+2

它對我沒有任何幫助。另外,你的問題是什麼? – 2010-10-21 21:50:46

+0

@palswim什麼?! – chromedude 2010-10-21 21:53:11

回答

3

我定你的提琴:http://jsfiddle.net/yEKPt/1/

什麼是錯的:

  1. 的迭代器範圍(here
  2. 這條線(27)扔了語法錯誤:

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

    應該是:

    textPrelim = '<input type="text"></input>'; //Quoted. 
    
  3. 您顛倒了Math.random和Math.floor(第8,14行)。(參見:Math.Random()Math.Floor()

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

看看我的修訂版本。我認爲它完成了你在找的東西?

+0

正是我在找的。謝謝。 – chromedude 2010-10-21 22:23:54

+2

幹得好!:))@ @ chromedude:我建議接受這個答案。 – 2010-10-21 22:28:17

4

你有一個無限循環,這就是爲什麼瀏覽器崩潰:

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

第二循環總是計數器變量i重置爲0。如果你有嵌套循環,你必須使用不同的變量。並且使用var來將變量聲明爲本地的,例如,

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

相同爲您最外面的for循環!


我不知道究竟你要實現的代碼是什麼,但這裏有一些評論:

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

Math.random不帶參數,但Math.floor一樣。

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

blanks仍然是空的,在這一點上,所以循環將永遠不會運行。

if (currentText==blanks[i]){ 

您確定blanks[i]將包含文本嗎?前面提到的(從不運行)循環似乎將數字添加到數組中。

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

這裏出現語法錯誤,必須將該字符串括在引號中。

+0

謝謝,我完全搞砸了'math.random(math.floor'部分我的意思是它是相反的。 – chromedude 2010-10-21 22:20:30

1

除了Felix的回答,請嘗試檢查代碼爲http://www.jslint.com的語法錯誤和未聲明(隱式全局)變量。

相關問題