2012-11-17 79 views
0

這是怎麼回事? 在我頭上的標籤......爲什麼我的功能沒有定義?

var movieArray = [ 
["Everything is Illuminated", "0", ""], 
["The Girl Who Leapt Through Time (Toki wo kakeru shojo)", "1", "<ol><li><span class=\"bold quote_actor\">Kosuke Yoshiyama: </span><span class=\"line\">It&#039;s not that rare. Many girls do it at your age.</span></li>            </ol>"], 
["Freedom Writers", "0", ""], 
["Inside Man", "0", ""] 
]; 

function checkAnswer(this.value) { 
    if (this.value == 0) { 
     alert ("Wrong answer!"); 
    } else { 
     alert ("Correct Answer!"); 
    } 

} 

在身體...

<p><a id="0" class="btn btn-primary btn-large" value="0" onclick="checkAnswer(this.value)">Everything is Illuminated</a></p> 
<p><a id="1" class="btn btn-primary btn-large" value="1" onclick="checkAnswer(this.value)">The Girl Who Leapt Through Time (Toki wo kakeru shojo)</a></p> 

的錯誤是沒有定義checkAnswer()。怎麼來的?

謝謝。

+4

你確定你沒有得到更多的錯誤嗎? '函數checkAnswer(this.value)'不是有效的JavaScript,它需要'function checkAnswer(value)' –

+0

你在哪裏可以看到這個錯誤? – ted

+0

你知道你的第二部電影裏有雙引號,對不對?如果將它全部定義在全局範圍內,那麼這將使所有事件都崩潰並燒燬... – Norguard

回答

3

你忘了加上反斜線

var movieArray = [ 
    ["Everything is Illuminated", "0", ""], 
    ["The Girl Who Leapt Through Time (Toki wo kakeru shojo)", "1", "<ol><li><span class=\"bold quote_actor\">Kosuke Yoshiyama: </span><span class=\"line\">It&#039;s not that rare. Many girls do it at your age.</span></li>            </ol>"], 
    ["Freedom Writers", "0", ""], 
    ["Inside Man", "0", ""] 
    ]; 

function checkAnswer(arg1) { 
    if (arg1 == 0) { 
     alert("Wrong answer!"); 
    } else { 
     alert("Correct Answer!"); 
    } 

}​ 

其次this.value逃脫"數組元素的內部,而調用checkAnswer(在defitinion的時間應傳遞),而不是

+2

您的答案如何獲得用戶在問題中從未指定的數據? –

+0

@Cthulhu OP刪除了那些數據,它原來就在那裏。 –

+0

你可能還提到'this.value'不是一個正確的函數參數 –

2

怎麼每個人都錯過了this.value在參數列表中?它應該是一個標識符,如myvalue。這就是沒有定義checkAnswer的原因。

現在,至於其餘的代碼,您不能在checkAnswer函數中使用this,因爲它將引用全局對象,而不是鏈接。此外,鏈接不支持value屬性,因此您需要使用getAttribute或直接將該值放入onClick事件中。

function checkAnswer(myval) { 
    if (myval == 0) { 
     alert ("Wrong answer!"); 
    } else { 
     alert ("Correct Answer!"); 
    } 
} 

<p><a class="btn btn-primary btn-large" onclick="checkAnswer(0)">Everything is Illuminated</a></p> 
<p><a class="btn btn-primary btn-large" onclick="checkAnswer(1)">The Girl Who Leapt Through Time (Toki wo kakeru shojo)</a></p> 

我也去掉了id屬性,因爲開頭的號碼的ID是無效的,除非HTML5(即使如此,他們不是一個好主意,因爲舊的瀏覽器仍然在廣泛使用,甚至沒有他們沒有意義)

+0

感謝您的額外信息。我沒有意識到你提到的事情,但是我從中學到了很多東西。 – Leke

0

函數語法錯誤。

錯誤:

function checkAnswer(this.value) { 

甲函數的語法必須是functionName(formalParameterName)。你正在一個函數參數中傳遞一個對象的值,這將導致錯誤。您必須將其更改爲function checkAnswer(param)