函数只能工作一次
function only works one time
这是我在这里的第一个问题。我一直使用这个网站,但从来没有在这里发过帖子。
当我调用函数 writeMessage() 时,当复选框被选中时,文本区域被创建。当我取消选中该复选框时,文本区域将被删除。当我第二次选中该复选框时,不会调用该函数。有什么建议么?我需要它在选中复选框时显示文本区域,而不仅仅是第一次。下面是我的代码。
HTML:
<table>
<th>
<input type = "checkbox" name = "os0" id = "spaceForMsg" onClick = "writeMessage()">
<label for "gift"> Gift for someone</label>
</th>
</table>
<table >
<tr id = 'parent'>
<div id = 'printMsg'></div>
</tr>
</table>
javascript 函数:
function writeMessage() {
var x = document.getElementById('spaceForMsg');
var docBody = document.getElementById('parent');
var element = document.createElement('textarea');
element.cols='60';
element.rows='8';
element.id = 'msgArea';
if (x.checked) {
give = 'Type your gift message here: ';
docBody.appendChild(element);
} else {
give = '';
y = document.getElementById('parent').parentNode;
y.removeChild(y.childNodes[0]);
}
document.getElementById('printMsg').innerHTML = give;
}
writeMessage
正在删除“document.getElementById('parent')
父项的第一个子项(恰好等于 docBody
)。这意味着您要删除 docBody
本身。
删除 docBody
后下次调用 writeMessage
时,文档将无法找到合适的 parent
,因此 docBody.appendChild(element);
将失败。
试试这个:
function writeMessage() {
var give;
var x = document.getElementById('spaceForMsg');
var docBody = document.getElementById('parent');
if (x.checked) {
var element = document.createElement('textarea');
element.cols='60';
element.rows='8';
element.id = 'msgArea';
give = 'Type your gift message here: ';
docBody.appendChild(element);
} else {
give = '';
y = docBody.removeChild(docBody.getElementsByTagName('textarea')[0]);
}
document.getElementById('printMsg').innerHTML = give;
}
您正在使用这一行 y.removeChild(y.childNodes[0]);
删除 <div id='parent'></div>
,因此您不能在其中放置任何内容,因为它不存在。
这是我在这里的第一个问题。我一直使用这个网站,但从来没有在这里发过帖子。
当我调用函数 writeMessage() 时,当复选框被选中时,文本区域被创建。当我取消选中该复选框时,文本区域将被删除。当我第二次选中该复选框时,不会调用该函数。有什么建议么?我需要它在选中复选框时显示文本区域,而不仅仅是第一次。下面是我的代码。
HTML:
<table>
<th>
<input type = "checkbox" name = "os0" id = "spaceForMsg" onClick = "writeMessage()">
<label for "gift"> Gift for someone</label>
</th>
</table>
<table >
<tr id = 'parent'>
<div id = 'printMsg'></div>
</tr>
</table>
javascript 函数:
function writeMessage() {
var x = document.getElementById('spaceForMsg');
var docBody = document.getElementById('parent');
var element = document.createElement('textarea');
element.cols='60';
element.rows='8';
element.id = 'msgArea';
if (x.checked) {
give = 'Type your gift message here: ';
docBody.appendChild(element);
} else {
give = '';
y = document.getElementById('parent').parentNode;
y.removeChild(y.childNodes[0]);
}
document.getElementById('printMsg').innerHTML = give;
}
writeMessage
正在删除“document.getElementById('parent')
父项的第一个子项(恰好等于 docBody
)。这意味着您要删除 docBody
本身。
删除 docBody
后下次调用 writeMessage
时,文档将无法找到合适的 parent
,因此 docBody.appendChild(element);
将失败。
试试这个:
function writeMessage() {
var give;
var x = document.getElementById('spaceForMsg');
var docBody = document.getElementById('parent');
if (x.checked) {
var element = document.createElement('textarea');
element.cols='60';
element.rows='8';
element.id = 'msgArea';
give = 'Type your gift message here: ';
docBody.appendChild(element);
} else {
give = '';
y = docBody.removeChild(docBody.getElementsByTagName('textarea')[0]);
}
document.getElementById('printMsg').innerHTML = give;
}
您正在使用这一行 y.removeChild(y.childNodes[0]);
删除 <div id='parent'></div>
,因此您不能在其中放置任何内容,因为它不存在。