2016-04-09 48 views
0

我想創建一個表單域。然後在頁面加載時顯示兩個變量(已經賦值)。我知道我可以使用「<input id="formField" value="John Smith"/>,但我想使用document.getElementById要做到這一點,什麼是錯我的代碼?想使用document.getelementbyid顯示兩個變量

表單域加載,但它是空的。

我很新的JS ....

<!doctype html> 
<html> 

<body> 
<input type="number" id="formField"/> 

<script> 

var one = "John"; 
var two = "Smith"; 

function concat() { 
var x = one.value; 
var y = two.value; 
var z = one + "" + two; 
    document.getElementById("formField").innerHTML = z; 
                //Why doesn't this work? 

} 

concat(); 

</script> 
</body> 
</html> 
+0

var one和var two是變量,所以它們沒有值屬性。只有輸入元素才具有值屬性。 – jeff

+0

噢好的....做各種輸入元素都有值屬性嗎? – divpinto18

回答

1

有幾個問題在你的代碼

  1. input type = "number"但你正試圖把一個字符串,其值。哪個不行。因此,將輸入類型更改爲文字
  2. one & two是變量,因此沒有one.valuetwo.value。只要one + two將工作
  3. 你必須使用.value而不是innerHTML把值回輸入

HTML

<input type="text" id="formFieldText" value=""/> 

JS

var one = "John"; 
    var two = "Smith"; 

    function concat() { 

    var x = one; 
    var y = two; 
    var z = one + " " + two; 
    console.log(z) 
     document.getElementById("formFieldText").value = z; 
    } 

    concat(); 

Click here for demo

+0

Heyyy它工作! 非常感謝! :) :)掙扎了幾個小時,那件事情! – divpinto18

+0

@ divpinto18考慮接受它作爲答案? – brk

+0

當然...我該怎麼做? 哦,算了:) – divpinto18

1

input元素沒有一個innerHTML財產你要設置的value屬性,像這樣:

document.getElementById("formField").value = z;

其他注意事項:

  • 你設置x等於oney等於two,然後只用onetwo直接。沒有點xy
  • onetwo確實沒有value屬性 - 它們只是字符串。
  • 不要忘記這些字符串之間的空格。這似乎是你想要的是one + " " + two(注意引號之間的空間),否則你的輸出中會JohnSmith
+0

是的,我擺脫了x = 1,y = 2 ....有你的觀點!謝謝! 那麼,如果一個和兩個是數字,他們會有價值屬性呢? – divpinto18

+0

不可以。就目前而言,「一」和「二」是弦,就是這樣。所以他們有任何String.prototype具有的屬性或方法,比如'length'和'indexOf()'。但是你不需要引用'value'屬性來獲取字符串本身。如果你想要像數字或字符串這樣的原始值的值,只需使用變量名稱即可。即'console.log(one)'。 –