2014-02-21 64 views
2

所以這應該改變頁面,以便當他們點擊按鈕時,它會顯示他們在窗體中選擇的所有內容,但它沒有做任何事情。看來它甚至沒有運行腳本,我不知道到底是什麼。按鈕沒有運行javascript

...more form stuff up here  
<button type="button" onclick="total(this.form)">Get my Total</button> 

    <p id="subtotal"></p> 

    <input type="submit"> 
    </form> 

    <script> 
    function total(form) 
    { 
    var SynCr= form.Synth.value; 
    document.getElementById("subtotal").innerHTML="You have ordered: <br>"+SynCr+" Synth"); 
    } 
    </script> 
+1

什麼錯誤(S)你進去控制檯?另外,什麼'form.Synth.value'? – j08691

回答

3

您的問題是onclick="total(this.form)"。當處理程序被稱爲this引用按鈕,它沒有作爲一個成員的窗體。

嘗試,而不是:

onclick="total(document.getElementById('formId'))" 
+0

如果該按鈕是表單的直接子對象,也可以執行'onclick =「total(this.parentNode)」 – Keith

+0

我試過了第一個建議,仍然沒有任何東西 – user3338822

+0

您應該在控制檯中看到某種錯誤例如使用Chrome和開放式開發工具)。也許form.Synth是一個語法錯誤。既然你沒有包括整個表格,我們不可能說出問題所在。 – Keith

0

首先: this.form不返回父窗體。 第二種:你有一個語法錯誤:document.getElementById("subtotal").innerHTML="You have ordered: <br>"+SynCr+" Synth");最後的)不應該在那裏。

以下是代碼sinppet顯示了一些什麼如何調試你的代碼,它的工作原理:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>JS Bin</title> 
</head> 
<body> 
<form id="hgg"> 
    <input type="text" name="Synth" value="" /> 
    <button type="button" onclick="total(this)">Get my Total</button> 
    </form> 
    <div id="subtotal"> 
    <p>5518</p> 
    </div> 
    <script> 
    function total(button) 
    { 
     form1 = button.parentNode; 
     alert(form1.Synth.value) 
     /*alert(p.id) 
     alert("555");*/ 
    SynCr= form1.Synth.value; 
     alert(SynCr) 
    k = document.getElementById("subtotal"); 
     k.innerHTML = "You have ordered: <br>"+SynCr+"Synth"; 
    } 
    </script> 


</body> 
</html> 

看看這個在線演示:http://jsbin.com/voruzumi/1/

+0

非常感謝你,一切都得到了解決。將每一步分離到自己的行當然有助於調試 – user3338822

+0

@ user3338822非常高興聽到這一點。不要忘記設置最佳答案。 – SaidbakR