0

我正在开发一种可以收集一些信息的表格。我的代码中有一些设置,当名字文本框更改(onchange)时,子标题(<td>)将填充名字。

出于某种原因,当我发出警报消息时,文本永远不会被写入<td>其中id,但它就在那里。subHeader我究竟做错了什么?

JavaScript(不起作用):

function FirstName_onchange() {
    var LastName = document.getElementById('LastName').value;
    var FirstName = document.getElementById('FirstName').value;
    document.getElementById('subHeader').value = FirstName + " " + LastName;
}

JavaScript(作品):

function FirstName_onchange() {
    var LastName = document.getElementById('LastName').value;
    var FirstName = document.getElementById('FirstName').value;
    alert(document.getElementById('subHeader').value = FirstName + " " + LastName);
}

HTML:

<tr>
    <td id="subHeader" colspan="4">
    </td>
</tr>
4

4 回答 4

2

<td>标签没有价值

想象一下<td value="sample"></td>

你必须使用.innerHTMLor .innerTestor.textContent代替

function FirstName_onchange() {
var LastName = document.getElementById('LastName').value;
var FirstName = document.getElementById('FirstName').value;
document.getElementById('subHeader').textContent = FirstName + " " + LastName;
}
于 2013-08-17T02:58:11.660 回答
1

.value成员仅用于<input />,如果您想快速设置元素的内容使用.textContent(或.innerText)或.innerHTML,如下所示:

function FirstName_onchange() {

    var lastName  = document.getElementById('LastName').value;
    var firstName = document.getElementById('FirstName').value;
    document.getElementById('subHeader').textContent = firstName + " " + lastName;
}

请注意,.textContent优先于.innerText,如果您使用.innerHTMLthen 您应该清理用户输入以防止 XSS 攻击,例如。

于 2013-08-17T02:57:29.260 回答
1

值只是<input />and 和<textarea /> 的有效属性。

您应该使用.innerHTMLor.innerText.textContent。从技术上讲innerText是无效的,但 IE 需要它。

function FirstName_onchange() {
    var LastName = document.getElementById('LastName').value;
    var FirstName = document.getElementById('FirstName').value;
    document.getElementById('subHeader').innerText = FirstName + " " + LastName;
    document.getElementById('subHeader').textContent = FirstName + " " + LastName;
}
于 2013-08-17T02:59:28.093 回答
1

通过做这个

alert(document.getElementById('subHeader').value = FirstName + " " + LastName);

,您向 td 对象添加了一个新属性“值”,并将其传递给警报。这就是警报起作用的原因。

于 2013-08-17T03:13:41.440 回答