Singleton javascript appendChild
Singleton javascript appendChild
我想在DIV
标签中插入DIV
标签;
我有一个主DIV标签,我需要在主DIV标签内插入许多DIV标签;
我想开发一个CHAT
,所以最新的DIV标签,必须在所有旧的DIV标签之前,用玩家发送的文本;
我使用了singleton
javascript模式;
所有新的DIV标签,必须插入id为chat_messages
的DIV标签
我试图使用这个elem[0].appendChild(div);
,但它不工作;
使用elem[0].appendChild(div);
使用elem[0].appendChild(div);
,它插入DIV标签,但它将始终是最后一个DIV;
下面是我在控制台测试功能的方法:Filcai.outBound('message');
<div id="chat" style="padding:10px 10px;background-color:#eeeeee;margin:10px 10px;">
<div>CHAT</div>
<div>
<input id="chat_message" type="text" name="chat_message" />
</div>
<div id="chat_messages">
<div>
message 2
</div>
<div>
message 1
</div>
</div>
</div>
<script type="text/javascript">
var FilcaiClass = FilcaiClass ? FilcaiClass : function() {
var f = function()
{
if (1 == 1) {
console.log('1==1');
}
};
function div1(displayTarget, div_id)
{
console.log('div1');
}
;
function createElementScript(src)
{
var script = document.createElement("script");
script.type = 'text/javascript';
script.src = src;
//console.log("SRC: "+src);
var header = document.getElementsByTagName("head");
header[0].appendChild(script);
}
;
function create_message()
{
var div = document.createElement('div');
div.innerText = 1;//document.getElementById('chat_message').value;
var elem = document.getElementById('chat_messages');
elem[0].appendChild(div);
}
;
f.prototype = {
init: function() {
console.log('init');
},
inBound: function(action, data)
{
try {
if (parseInt(data.code) < 0) {
alert('Internal error!');
return;
}
switch (action)
{
case 'message':
console.log('inBound message');
break;
default:
alert('Unknown inBound action: ' + action);
break;
}
} catch (err) {
alert('Something went wrong, server returned invalid message!');
}
}, //end f inBound()
outBound: function(action)
{
try {
switch (action)
{
case 'message':
create_message();
console.log('outBound message');
break;
default:
alert('Unknown outBound action: ' + action);
break;
}//end switch
}
catch (err) {
alert('Something went wrong, couldn''t prepare data!');
}
}//end f outBound()
}
return f;
}();
var Filcai = new FilcaiClass();
Filcai.init();
</script>
document.getElementById('chat_messages');
只返回一个元素,您不必使用[0]
。
要在开始处包含子元素,可以使用insertBefore:
elem.insertBefore(div, elem.firstChild);
您没有说关于它不工作,但是仅仅浏览这些行是可疑的:
var elem = document.getElementById('chat_messages');
elem[0].appendChild(div);
这里有两个问题:
getElementById
返回元素,而不是列表,因此不需要[0]
。appendChild
将添加到元素的结尾。如果你想让你的新div在顶部,你需要在顶部插入它,你可以通过insertBefore
:
:
elem.insertBefore(div, elem.firstChild);
(不要担心如果elem
是空的开始,elem.firstChild
将是null
和insertBefore
正确处理)
相关文章:
- appendChild在函数外部工作,但在函数内部不工作
- 我该如何解决这个问题?“未捕获的类型错误:无法读取 null 的属性'appendChild'”
- 元素.appendChild()插入IE.变通方法?(与innerText与textContent相关)
- 为什么不是't我的appendChild正在使用createDocumentFragment
- 使用appendChild()动态添加的脚本是按顺序执行还是并行执行
- React AppendChild组件没有'不起作用
- 不显示为表单元素的图像输入按钮的动态创建和appendChild
- AppendChild Form / Table [Javascript/Html/PHP]
- 收到错误:无法在“节点”上执行“appendChild”:参数 1 的类型不是“节点”
- Node.appendChild的参数1不是对象
- 无法调用方法'appendChild'为null
- html5拖动&drop-TypeError:Node.appendChild的参数1不是对象
- 文档本身(正文)中的HTML-appendChild()
- appendChild上的错误-试图在不存在节点的上下文中引用该节点
- 使用appendchild或其他方法向ul添加html代码而不是纯文本
- appendChild dataURI映像到window.open在IE中失败
- 未捕获错误:NOT_FOUND_ERR:appendChild调用的DOM异常8
- 1.js:23未捕获类型错误:执行'失败;appendChild'在'节点':参数1不是
- appendChild赢得'不要处理特定的文件
- appendChild is not correct