如何使用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')并保留现有内容。

http://api.jquery.com/append/

即使这会起作用:

 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,然后在代码中使用它们。