代码之家  ›  专栏  ›  技术社区  ›  Centro

附加到InnerHtml而不翻转其余内容

  •  2
  • Centro  · 技术社区  · 15 年前

    我有一个div元素和一些格式化的图像。根据用户请求,我异步加载其他图像,而不进行回发,并使用JavaScript将结果(新图像的格式化HTML)附加到div元素:

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

    一切正常,除了之前加载的面板中的图像在附加HTML后闪烁的部分。据我所知,面板是重建的,而不仅仅是新的HTML被添加到它的底部。所以这不是web2.0行为。

    不弹弹怎么办?提前谢谢。

    4 回复  |  直到 15 年前
        1
  •  1
  •   Aaron Butacov    15 年前

    使用dom方法添加它们:

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

        2
  •  1
  •   wtaniguchi    15 年前

    使用+=运算符与以下操作相同:

    images.innerHTML = images.innerHTML + result;
    

    在容器中添加新元素时,应该能够得到相同的结果,而不会出现闪烁。为此,需要createElement和appendChild方法。

    嗯!

        3
  •  0
  •   Pointy    15 年前

    <span class='endMarker'></span>
    

    然后,不只是像那样更新“innerHTML”,而是在目标内部的DOM中查找最后一个 <span> 使用类“endMarker”,然后在此之后附加新内容。如果不想成为一个“使用jQuery解决问题”的人,我会说这样的库会让事情变得更简单一些。要附加内容,可以将其放到隐藏的div中,然后移动它。

        4
  •  0
  •   Babiker    15 年前

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