2013-01-10 29 views
0

我正在編寫一個程序,讓用戶輸入一個電話號碼,並告訴用戶它是否被接受/拒絕基於幾個條件。 我已經完成了計算的功能,但是我無法讓JavaScript使用HTML文檔:找不到它。未在HTML文檔中定義JavaScript函數,爲什麼不呢?

這裏有兩個代碼:(JS然後HTML):

function testanummer(nummer){ 
    nummer = document.getElementById("a").value; 
    if isNaN(nummer){ 
     console.log("Hi! This phone number appears faulty, please try again."); 
    } else if (nummer.length <=8) && else if (nummer.length >=14) { 
     console.log("Thanks! We'll be in touch shortly."); 
    } else { 
     console.log("Hi! This phone number appears faulty, please try again."); 
    } 

HTML:

<html> 
<head> 
    <title> Uppgift nummer 5</title> 

    <script src="testanummer.js"></script> 
</head> 


<body> 
    <form> 
     <label for="a">Skriv in ditt telefonnummer här: </label> 
     <input type="text" name="nummer" id="a"> 
     <input type = "button" value ="Testa telefonnummer" onclick="testanummer(nummer);"> 
    </form> 
</body> 
</html> 

任何想法,爲什麼它不工作?我得到這個錯誤:

Uncaught SyntaxError: Unexpected identifier

和:

Uncaught ReferenceError: testanummer is not defined

任何想法,爲什麼它不工作?

非常感謝!

+1

你 「nummer」 在'onclick'事件變量是不確定的。將其更改爲'onclick =「testanummer(this.value)」'。或者從函數參數中刪除'nummer',並且只需調用'testanummer()',因爲無論如何您都可以在函數中檢索輸入的數字。 – Jules

+1

該函數未定義,因爲您有語法錯誤。這個錯誤信息會告訴你在哪裏(你必須將所有if語句的條件包含在括號中,如:if(isNaN(nummer))')。 –

+1

你的JS格式不正確,testanumer.js的確切內容是? – Nix

回答

4

代碼中有兩個語法錯誤。第一個語法錯誤是在這裏:

if isNaN(nummer){ 

它應該是:

if (isNaN(nummer)) { 

第二個語法錯誤是在這一行:

} else if (nummer.length <=8) && else if (nummer.length >=14) { 

的語法應爲:

} else if (nummer.length <= 8 && nummer.length >= 14) { 

但是,看起來你得到了條件倒退,我認爲這是你的意思:

} else if (nummer.length >= 8 && nummer.length <= 14) { 

當調用該函數,你應該從文本框中的值,而不只是它的一個引用。此外,並非所有的瀏覽器把輸入域在全球範圍內,使用的形式訪問字段:

<input type = "button" value ="Testa telefonnummer" onclick="testanummer(this.form.nummer.value);"> 

那麼你可以跳過該函數的變量nummer的分配。

+0

@FelixKling:是的,我剛剛注意到。 :) – Guffa

0

兩個錯誤:

} else if ((nummer.length <=8) && else if (nummer.length >=14)) { 

將其更改爲(即使你的條件是錯誤的...比8比14較短和較長的?):

} else if ((nummer.length <=8) && (nummer.length >=14)) { 

而且你必須在onclick事件處理程序的錯誤:

onclick="testanummer(nummer);" 

應該是:

onclick="testanummer(this.form.nummer.value);" 

,或者從函數中刪除參數(因爲你內檢索無論如何功能)甚至:

onclick="testanummer();" 

因此,最終的.js文件應該是:

function testanummer(nummer){ 
    nummer = document.getElementById("a").value; 
    if (isNaN(nummer)) { 
     console.log("Hi! This phone number appears faulty, please try again."); 
    } else if ((nummer.length <=8) && (nummer.length >=14)) { //HAVE A LOOK AT THIS CONDITION 
     console.log("Thanks! We'll be in touch shortly."); 
    } else { 
     console.log("Hi! This phone number appears faulty, please try again."); 
    } 
} 
+1

你忘了一對括號......這段代碼也不會編譯。 – Martijn

+0

我已經完成了你所說的話,並且我理解它背後的邏輯,但錯誤仍然存​​在。 – user1916173

+0

@Martijn葉我忽略了這一點。改變。 – Jules

相關問題