2016-09-29 35 views
0

我有這個網站:的document.getElementById在外部HTML元素

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Notas</title> 

    <script type="text/javascript" src="notas.js"></script> 

</head> 
<body> 

    <p>Nombre alumno: </p> 
    <input type="text" name="nombre" id="nombre"> 
    <p>Nota alumno:</p> 
    <input type="text" name="nota"> 

    <p><br></p> 
    <input type="button" name="boton" value="Enviar" onclick="respuesta()"> 

</body> 
</html> 

而且此Javascript在另一個文件:

function respuesta(){ 

    nombrej=document.getElementById("nombre"); 
    document.write(nombrej); 
} 

的問題是,當我點擊按鈕的消息「null」 我在論壇上看到類似問題的解決方案,但由於有一個按鈕,我不知道該怎麼做。幫幫我!

+0

這個JS是在另一個文件中?你有一個彈出窗口或一個iframe? – Teemu

+0

適用於我:https://jsfiddle.net/1qa3vu1x/仔細檢查您是否包含正確的JS文件。 –

+2

我看不出任何可能給出結果的方式,除了HTML輸入元素的序列化之外...這是我[測試代碼]時得到的結果(http://jsbin.com/zicafe/1/edit ?HTML,輸出)。在創建[MCVE]時,您似乎錯過了「確保該示例實際上重現了問題」步驟。 – Quentin

回答

0

JavaScript getElementById返回DOM元素。要獲得該文本輸入的值,您需要獲取它的值。

而不是: nombrej = document.getElementById(「nombre」);使用: nombrej = document.getElementById(「nombre」)。value;

示例:JavaScript: how to get value of text input field?

+0

您在'value'前忘記了一段時間 – joh04667

+0

OP表示'nombrej'爲'null'。嘗試讀取'null'的'.value'會拋出一個異常。 – Quentin

+0

我更新了我的帖子,感謝joh04667。 @Quentin,你是對的。我通讀代碼並回答了最明顯的問題。 T. J. Crowder的答案更爲徹底的回答。 – MarkBowman

1

有幾個問題有:

  1. 您還沒有宣佈nombrej(這不應該是​​?)這意味着你的代碼正在淪爲The Horror of Implict Globals(這是我博客上的一篇文章)。聲明你的變量。

  2. 您已將nombrej設置爲HTMLInputElement。你可能想要它的價值,這是它的value財產。

  3. 一旦頁面完成,調用document.write將隱式調用document.open,該頁面會擦除頁面並將其替換爲您所寫的內容。

所以respuesta可能是這個樣子,而不是:

function respuesta(){ 

    var nombrej=document.getElementById("nombre").value; 
// ^^^--- #1         ^^^^^^--- #2 
    console.log(nombrej); 
// ^^^^^^^^^^^--- #3 
} 

附註:我看你已經把你的script標籤在head部分。你會發現很多人這樣做,並告訴你這樣做,但這是一種反模式。除非您有特殊原因需要做其他事情,否則在body的末尾放置script標籤,就在關閉</body>標籤之前。更多在YUI's guidelines

+0

非常感謝!問題是缺少聲明,並且我錯過了getElementById中的.value。 –