admin管理员组文章数量:1287584
I'm trying to create a post button that inserts the latest posts into a div, without clearing everything that is inside. My current code inserts the new divider, but clears everything inside it, so i end up with just the last post.
Does anyone know how to fix it?
Thanks
The code is:
var xmlHttp
function submitNews() {
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null) {
alert ("Your browser does not support XMLHTTP!");
return;
}
var content = document.getElementById('newsfeed_box').value;
var uid = document.getElementById('pu_uid').innerHTML;
var url="ajax/submit_post.php";
url=url+"?post="+content+"&id="+uid;
url=url+"&validate="+Math.random();
xmlHttp.onreadystatechange=stateChange;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function stateChange() {
switch(xmlHttp.readyState) {
case 1:
document.getElementById('successs').innerHTML = "<img src=\"style/images/loader.gif\" />";
document.getElementById('successs').style.display = "block";
break;
case 2:
document.getElementById('successs').innerHTML = "<img src=\"style/images/loader.gif\" />";
document.getElementById('successs').style.display = "block";
break;
case 3:
document.getElementById('successs').innerHTML = "<img src=\"style/images/loader.gif\" />";
document.getElementById('successs').style.display = "block";
break;
case 4:
var newdiv = document.createElement('div');
newdiv.innerHTML = xmlHttp.responseText;
document.getElementById('successs').appendChild(newdiv);
break;
}
}
// creating the XMLHttpRequest
function GetXmlHttpObject() {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject) {
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
I'm trying to create a post button that inserts the latest posts into a div, without clearing everything that is inside. My current code inserts the new divider, but clears everything inside it, so i end up with just the last post.
Does anyone know how to fix it?
Thanks
The code is:
var xmlHttp
function submitNews() {
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null) {
alert ("Your browser does not support XMLHTTP!");
return;
}
var content = document.getElementById('newsfeed_box').value;
var uid = document.getElementById('pu_uid').innerHTML;
var url="ajax/submit_post.php";
url=url+"?post="+content+"&id="+uid;
url=url+"&validate="+Math.random();
xmlHttp.onreadystatechange=stateChange;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function stateChange() {
switch(xmlHttp.readyState) {
case 1:
document.getElementById('successs').innerHTML = "<img src=\"style/images/loader.gif\" />";
document.getElementById('successs').style.display = "block";
break;
case 2:
document.getElementById('successs').innerHTML = "<img src=\"style/images/loader.gif\" />";
document.getElementById('successs').style.display = "block";
break;
case 3:
document.getElementById('successs').innerHTML = "<img src=\"style/images/loader.gif\" />";
document.getElementById('successs').style.display = "block";
break;
case 4:
var newdiv = document.createElement('div');
newdiv.innerHTML = xmlHttp.responseText;
document.getElementById('successs').appendChild(newdiv);
break;
}
}
// creating the XMLHttpRequest
function GetXmlHttpObject() {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject) {
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
Share
Improve this question
edited Oct 26, 2009 at 19:21
Dinah
54.1k31 gold badges134 silver badges149 bronze badges
asked Oct 26, 2009 at 19:07
StephenStephen
1692 gold badges5 silver badges12 bronze badges
2
-
1
You realize the code you have that "inserts the new divider" is only 1 of 4
switch
cases? And it's these 3 other cases that actually clears the div? – Crescent Fresh Commented Oct 26, 2009 at 19:25 - Unless you're specifically trying to avoid it, I would remend using a framework like jQuery to help out with some of this ajax voodoo. In the long run, it will make your life significantly easier. – jckeyes Commented Oct 26, 2009 at 19:42
4 Answers
Reset to default 5The problem is in your switch statement. Your cases to handle 1 - 3 pletely reset the innerHTML of your element. You may not be able to see it, but these cases are getting hit. Try moving your loading image into a different container and it will start to work.
switch(xmlHttp.readyState) {
case 1:
document.getElementById('status').innerHTML = "<img src=\"style/images/loader.gif\" />";
document.getElementById('status').style.display = "block";
break;
case 2:
document.getElementById('status').innerHTML = "<img src=\"style/images/loader.gif\" />";
document.getElementById('status').style.display = "block";
break;
case 3:
document.getElementById('status').innerHTML = "<img src=\"style/images/loader.gif\" />";
document.getElementById('status').style.display = "block";
break;
case 4:
var newdiv = document.createElement('div');
newdiv.innerHTML = xmlHttp.responseText;
document.getElementById('successs').appendChild(newdiv);
break;
}
- copy the inner html into a variable
- mix the new content and the variable the way you need (new + old OR old + new)
- set the inner html = your mixed stuff
I believe this will do the trick:
whatever.innerHTML += additionalInfo;
var currentContent = document.getElementById('status').innerHTML;
document.getElementById('status').innerHTML = currentContent+"new stuff";
本文标签: javascriptInsert contents into innerHTML without clearing what39s already insideStack Overflow
版权声明:本文标题:javascript - Insert contents into innerHTML without clearing what's already inside - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741311791a2371687.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论