2016-08-28 83 views
8

對於Javascript來說,這是非常新穎的東西。嘗試通過使用外部JavaScript文件更改按鈕上的文本來學習代碼。但我甚至無法使用javascript在外部讀取按鈕的值,在Chrome的調試工具中,我看到我的按鈕值爲btn =「」。它讀取按鈕對象,但無法讀取其屬性。Javascript不會將信息從html傳遞到函數

<html> 
<head> 

    <title> Test </title> 
    <script type="text/javascript" src="Gle.js"></script> 
</head> 

<body> 
    <div><canvas id="Gle" width="800" height="600"></canvas> 
</div> 
    <div> 
     <h2>Enter the mass and coordinates</h2> 
     <input id="txtbox" type="text" /><br/> 
     <button id="btn" onclick="change()">Add</button> 

    </div> 


    </body> 
</html> 

的Gle.js

"use strict"; 


function change() { 
    var x = document.getElementById("btn").value; 
    var elem = document.getElementById("btn"); 
    var txt = document.getElementById("txtbox"); 
    txt.text = elem.value; 
    elem.value = "Ok"; 
    } 

當我調試X值是 「」,沒有我的屏幕上的變化。我正在使用括號IDE。

+1

爲什麼不只是使用'this'關鍵字來獲取按鈕? – Li357

+0

1.請創建一個MCVE。這是**不是**你如何在SO上發佈適當的問題。 2.你期望按鈕具有什麼「價值」? – Amit

+0

我期望在調試監視窗口中從x出現按鈕標題「Add」。 – CromeX

回答

8

x嘗試,因爲'#btn'不具有「值」屬性指定爲空。 「添加」字符串是其內在的HTML(或文本)內,

alert(document.getElementById("btn").innerText); 

而且你可以在活動範圍內指數this,它是'#btn'this.innerText參考。

另一種方法是獲取'#btn'子節點值,它是跨瀏覽器的。

alert(this.childNodes[0].nodeValue); 

這提醒元素內部指定的第一個文本。

+3

謝謝大家,這有助於將點連接起來,有時候只需要將想法放在那裏。我注意到

+2

@CromeX如果你正在尋找差異,你可以檢查http:// stackoverflow。com/q/469059#26818133,這個答案有一個很好的報價 – Hydro

0

可以通過分配value屬性您button

<button id="btn" onclick="change()" value="Add">Add</button> 
1

我期待有按鈕標題「添加」出現?

該按鈕沒有value屬性,因此它的value屬性是空字符串。

「添加」是按鈕元素內的文本節點的內容。

var x = document.getElementById("btn").firstChild.data; 
0

如果要更新基於什麼是在輸入框按鈕的文字代碼看起來是這樣的:

<button id="myButton">Change Me</button> 
<input id="myInput" type="text" value="To This"/> 

,並在JS:

document.getElementById("myButton").click(function(){ 
    var inputValue = document.getElementById("myInput").value 
    document.getElementById("myButton").innerText = inputValue 
    // You could also use 'this' to refer to document.getElementById("myButton"): 
    // this.innerText = inputValue 
})