附加到InnerHtml而没有其他内容轻弹

时间:2010-06-14 18:14:32

标签: javascript html ajax

我有一个带有一些格式化图像的div元素。在用户请求时,我异步加载其他图像,没有回发,并使用JavaScript将结果(新图像的格式化HTML)附加到div元素:

function onRequestComplete(result) {
        var images = document.getElementById('images');
        images.InnerHtml += result;
    }

一切都没问题,但是当附加HTML后,加载面板中的图像之前闪烁的部分除外。据我所知,面板是重建的,而不只是新的HTML附加在其底部。所以它不是Web 2.0的行为。

如果不轻弹,怎么办呢?提前谢谢。

4 个答案:

答案 0 :(得分:1)

使用+ =运算符与:

相同
images.innerHTML = images.innerHTML + result;

将重新渲染所有容器,从而导致“闪烁”。

您应该能够将相同的结果附加到容器中,而不会出现闪烁现象。为此,您将需要createElement和appendChild方法。

HTH!

答案 1 :(得分:1)

使用dom方法添加它们:

var div = document.createElement('div');
div.innerHTML= result;
document.getElementById('images').appendChild(div);

或者,如果你真的想以正确的方式做到这一点,为每个图像创建一个dom元素,然后附加它们。这也具有预加载图像的好处。

或者只是使用jQuery。 ;)

答案 2 :(得分:0)

当您添加内容时,您可以使用

这样的内容
<span class='endMarker'></span>

然后,不是像这样更新“innerHTML”,而是查看目标中的DOM,找到带有“endMarker”类的最后<span>,然后在此之后添加新内容。没有意义成为“使用jQuery问题解决”的人,我会说像这样的库会让事情变得容易一些。要附加内容,您可以将其放入隐藏的div中,然后移动它。

答案 3 :(得分:0)

使所有图像成为单个图像,而不是使用CSS定位来显示所需的部分。闪烁是由于加载了新图像。