你讓對象與他們的屬性混淆。在這裏,你得到HTMLInputElement
實例「年齡」字段:
var ag = document.getElementById('age');
但在這裏,你正在使用的對象,就好像是一個簡單的值:
a.innerHTML = "Your age is: " + ag;
的HTMLInputElement
對象有一個value
場,你可以使用爲:
a.innerHTML = "Your age is: " + ag.value;
另外,你完全被這樣破壞頁:
var o = document.getElementById('ref');
o.innerHTML = '';
...因爲您已給body
元素ID「ref」。完全替換body
元素將完全取代body
元素,因此不能依賴僅存在於該元素的下屬對象。
通常情況下,要有一個元素來填充和(可選)刪除不再需要的元素。例如(live copy):
HTML:
<form id="theForm">
Please enter your name:<input type="text" id="name" />
Please enter your age:<input type="text" id="age" />
<input type="button" onclick="c()" value="submit">
</form>
<div id="result">
</div>
(注意我搬到按鈕進入形式方便)
的JavaScript:
function c() {
var form = document.getElementById("theForm"),
nameField = document.getElementById("name"),
ageField = document.getElementById("age"),
result = document.getElementById("result");
form.parentNode.removeChild(form);
result.innerHTML =
"Your name is " + nameField.value +
" and your age is " + ageField.value;
}
還有,當按鈕被按下,我刪除表格並填寫「結果」div。
您可以添加格設置動態的,如果你想要的 「結果」(live copy):
HTML:
<form id="theForm">
Please enter your name:<input type="text" id="name" />
Please enter your age:<input type="text" id="age" />
<input type="button" onclick="c()" value="submit">
</form>
的JavaScript:
function c() {
var form = document.getElementById("theForm"),
nameField = document.getElementById("name"),
ageField = document.getElementById("age"),
result;
result = document.createElement("div");
result.innerHTML =
"Your name is " + nameField.value +
" and your age is " + ageField.value;
form.parentNode.insertBefore(result, form);
form.parentNode.removeChild(form);
}
您可以使用一個簡短的訪問域如果您將id
值更改爲name
而不是更改(live copy) :
HTML:
<form name="theForm">
Please enter your name:<input type="text" name="name" />
Please enter your age:<input type="text" name="age" />
<input type="button" onclick="c()" value="submit">
</form>
的JavaScript:
function c() {
var form = document.theForm,
nameField = form.name,
ageField = form.age,
result;
result = document.createElement("div");
result.innerHTML =
"Your name is " + nameField.value +
" and your age is " + ageField.value;
form.parentNode.insertBefore(result, form);
form.parentNode.removeChild(form);
}
延伸閱讀:
否定的。 DOM通過document.forms和元素提供了方便的訪問,所以不需要反覆調用gebi,只需要'document.theForm.age.value ='42'' –
@Downvoterstepintothelight:謝謝你發表評論。不,'document.theForm.age'因OP的標記而失敗,因爲表單和字段沒有*名稱*;他們有* ids *。 (人們可以通過'window'對象訪問它們,但它太擁擠了,除非你小心你的命名,否則就會有麻煩。)如果我們更改OP的標記,那麼我們可以做到這一點。但我們如何進入這些領域與OP的主要問題基本上無關。 –
@ T.J.克羅德,啊,我站在名稱屬性缺席的情況下糾正,沒有注意到你和原始片段之間的差異。你是指通過'window'訪問什麼?看起來我沒有刪除我的downvote :-(你可以請'觸摸'的帖子 –