2012-05-31 93 views
2

我剛開始自學JavaScript,正在做一些基本的練習。現在,我正在嘗試創建一個具有三個值並打印出最大值的函數。但是,該功能拒絕點擊按鈕時觸發。我試圖做一個單獨的,非常簡單的功能來調試,但它拒絕啓動。我用幾乎完全相同的方式編寫了其他練習函數(它們有兩個參數,而不是三個),這些函數可以正常工作。任何有識之士將不勝感激。JavaScript功能不會觸發按鈕點擊

<!DOCTYPE HTML> 
<html> 
<head> 
<script type = "text/javascript"> 
<!-- 

//Define a function Max() that takes three numbers as 
//arguments and returns the largest of them. 
function Boo(){ 
    document.write("boo"); 
    alert("boo"); 
} 


function Max(p1, p2, p3){ 
    document.write(p1+p2+p3); 
    alert('BOO!') 

    document.write(document.getElementById('value1').value); 

    var max = Number(p1); 
    v2 = Number(p2): 
    v3 = Number(p3);  

    if (v2 > max) 
     max = v2; 
    if (v3 > max) 
     max = v3; 

    document.write(max); 
} 
--> 
</script> 
    </head> 
    <body> 
<form> 
    <input type="text" id="value1" name="value1"/><br /> 
    <input type="text" id="value2" name="value2"/><br /> 
    <input type="text" id="value3" name="value3"/><br /> 
    <input type = "button" 
    onclick="Boo()" 
    value = "Compare!"/> 
    <!-- onclick="Max(document.getElementById('value1').value, 
       document.getElementById('value2').value, 
       document.getElementById('value3').value)" --> 
</form> 
    </body> 
</html> 
+0

Boo()是否工作?如果沒有,那麼檢查JS是否在你的瀏覽器中啓用 – mariosk89

+0

那麼在你的最大功能中,你會在第二行末尾丟失分號,這會導致它失敗。 – RedEyedMonster

+0

對於所有變量,比如'v2'和'v3',應該使用'var'來避免在javascript中隱式使用全局變量(Max的多個實例或其他名稱爲'v2'的函數將會覆蓋對方的值)。 – ninjagecko

回答

5
v2 = Number(p2): 

應該

v2 = Number(p2); 

此外,考慮無論什麼瀏覽器使用的是找到像簡單的語法錯誤,開發工具這個。 (在大多數瀏覽器中,您可以按F12)。

+0

* headdesk,就是這樣。謝謝。我試過讓Firebug這樣愚蠢的東西,但長話短說,我不能:()有沒有類似你推薦的程序? – Daniel

+0

最新版本的firefox有一些很好的開發工具,這樣也可以。 Shift + CTRL + J(在Firefox中) – aquinas

1

JavaScript函數被註釋掉與<!-- -->

+2

實際上,這是有效的。適用於所有不支持JavaScript的瀏覽器。這是非常古老的學校。 :)。請參閱:http://javascript.about.com/library/blhtmcmt.htm – aquinas

2

鉻開發工具說它有語法錯誤!

v2 = Number(p2): 

應該是:

v2 = Number(p2); 
0

這就是你需要:

var elements = document.getElementsByName('to_compare'); 
    var elementsAsArray = [].slice.call(elements); 
    var numberValues = elementsAsArray.map(function(x) { 
     return Number(x.value) 
    }); 
    return Math.max.apply(this, numberValues); 

完整的示例,包括使用console.log而非document.write,還包括如何追加,而不將其清除記錄:http://jsfiddle.net/yYhjD/1/

<head> 
    <script type="text/javascript"> 

function compare() { 
    var elements = [].slice.call(document.getElementsByName('to_compare')); 
    var numberValues = elements.map(function(x){return Number(x.value)}); 
    return Math.max.apply(this, numberValues); 
} 

    </script> 
</head> 

<body> 
    <input type="text" id="value1" name="to_compare" value="-10"/> 
    <input type="text" id="value2" name="to_compare" value="080"/> 
    <input type="text" id="value3" name="to_compare" value="79"/> 
    <br/> 
    <input type="button" onclick="console.log(compare())" value="Compare!"/> 
</body>