如何使用JavaScript将数据追加到div?
我正在使用AJAX将数据追加到div元素,我从JavaScript填充div,我怎么能追加新的数据到div而不会丢失在div中发现的以前的数据?
尝试这个:
var div = document.getElementById('divID'); div.innerHTML += 'Extra stuff';
使用appendChild:
var theDiv = document.getElementById("<ID_OF_THE_DIV>"); var content = document.createTextNode("<YOUR_CONTENT>"); theDiv.appendChild(content);
使用innerHTML:
这种方法将删除@BiAiB提到的现有元素的所有监听器。 因此,如果您打算使用此版本,请谨慎使用。
var theDiv = document.getElementById("<ID_OF_THE_DIV>"); theDiv.innerHTML += "<YOUR_CONTENT>";
小心innerHTML
,当你使用它的时候,你会失去一些东西:
theDiv.innerHTML += 'content',
相当于:
theDiv.innerHTML = theDiv.innerHTML + 'content'
这将破坏您的div
内的所有节点,并重新创build新的。 所有对它内部元素的引用和监听器都将丢失 。
如果你需要保留它们(例如,当你连接一个点击处理程序时),你必须添加新的内容与DOM函数(appendChild,insertAfter,insertBefore):
var newNode = document.createElement('div'); newNode.innerHTML = data; theDiv.appendChild( newNode )
如果你想快速做到这一点,不想失去引用和监听器,请使用: .insertAdjacentHTML() ;
“它不会重新使用正在使用的元素 ,因此它不会破坏元素中现有的元素 ,而且避免了额外的序列化操作,使得它比直接的innerHTML操作快得多 。
在所有主线浏览器(IE6 +,FF8 +,所有其他和移动设备)上均支持: http : //caniuse.com/#feat=insertadjacenthtml
https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML中的示例;
// <div id="one">one</div> var d1 = document.getElementById('one'); d1.insertAdjacentHTML('afterend', '<div id="two">two</div>'); // At this point, the new structure is: // <div id="one">one</div><div id="two">two</div>
如果您使用的是jQuery,则可以使用$('#mydiv').append('html content')
并保留现有内容。
即使这会起作用:
var div = document.getElementById('divID'); div.innerHTML += 'Text to append';
你可以使用jQuery。 这使得它非常简单。
只需下载jQuery文件添加jQuery到您的HTML
或者你可以在线用户链接:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
并尝试这一点:
$("#divID").append(data);
IE9 +(Vista +)解决scheme,无需创build新的文本节点:
var div = document.getElementById("divID"); div.textContent += data + " ";
然而,这并不是我的伎俩,因为我需要在每条消息后添加一个新的行,所以我的DIV变成了一个样式的UL与这个代码:
var li = document.createElement("li"); var text = document.createTextNode(data); li.appendChild(text); div.appendChild(li);
从https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent :
与innerHTML的区别
innerHTML将按照名称的指示返回HTML。 通常,为了在元素中检索或写入文本,人们使用innerHTML。 应该使用textContent。 由于文本不被parsing为HTML,因此可能会有更好的性能。 而且,这避免了XSS攻击向量。
为什么不使用setAttribute?
thisDiv.setAttribute('attrName','data you wish to append');
那么你可以通过以下方式获得
thisDiv.attrName;
java脚本
document.getElementById("divID").html("this text will be added to div");
jQuery的
$("#divID").html("this text will be added to div");
使用.html()
没有任何参数,看看你已经进入。 您可以使用浏览器控制台快速testing这些function,然后在代码中使用它们。