2016-11-15 14 views
0

我是JavaScript新手,所以這是我的學習項目之一,但經過大量研究後,我被卡住了。有人能告訴我我哪裏出錯了嗎?在提交第一個問題後,我似乎無法在第二個文本框中顯示結果。這兩個ID是在我的HTML。功能與表格上的if/else語句

function myFunction(age1, level1) { 

    var age1 = document.getElementById("age").value; 
    var level1 = document.getElementById("level").value; 

if (age1 <= 20) { 
    level1.value = 1; 
} 
else if(age1 <= 40) { 
    level1.value = 2; 
} 
else { 
    level1.value = 3; 
} 
} 

回答

0

你聲明你的變量既是函數參數,也是函數本身。此外,您在變量聲明中以及指向變量時都指向「值」。

這會導致問題。

如果我理解正確的話你正在嘗試做的,你應該刪除函數變量聲明(X,Y),並指向「價值」只有一次:

function myFunction() { 

    var element1 = document.getElementById("age"); // removed value here 
    var element2 = document.getElementById("level"); // removed value here 

    if (element2.value <= 20) { 
    element1.value = 1; 
    } 
    else if(element2.value <= 40) { 
    element1.value = 2; 
    } 
    else { 
    element1.value = 3; 
    } 
} 

在這種情況下,你的變量真的是「常數」。您希望每次都指向相同的html元素。在這種情況下,你只需聲明一個變量,就像你已經在做的那樣,在你需要的任何地方(只要它們在scope

你爲什麼要把它們放在函數參數中的一個原因是當你想讓你的函數「動態」行爲並且可重用。像這樣

function myFunction(elementIdToCheck, elementIdToSelect) { 

    var elementToCheck = document.getElementById(elementIdToCheck); 
    var elementToSet = document.getElementById(elementIdToSelect); 

    if (elementToCheck.value <= 20) { 
    elementToSet.value = 1; 
    } 
    else if(elementToCheck.value <= 40) { 
    elementToSet.value = 2; 
    } 
    else { 
    elementToSet.value = 3; 
    } 
} 

myFunction("age", "level");