有没有办法在纯Javascript中只循环更新内容?

有没有办法在纯Javascript中只循环更新内容?,javascript,html,local-storage,Javascript,Html,Local Storage,我使用了一个div,其中包含一个元素,我在其中添加了一些动态创建的元素localStorage key,以使其更具体。我想每x秒更新一次div,但只更新一次,而不是整个页面。我知道可以使用Ajax和JQuery$here.loadwindow.location.href+here;来完成 但是有没有什么方法可以用纯js来实现呢 更新 具体的情况是,我选择了所有的localstorage键并将它们附加到div中的一个列表中。但我想周期性地更新它。如果我使用setinterval或按钮调用函数,前面

我使用了一个div,其中包含一个元素,我在其中添加了一些动态创建的元素localStorage key,以使其更具体。我想每x秒更新一次div,但只更新一次,而不是整个页面。我知道可以使用Ajax和JQuery$here.loadwindow.location.href+here;来完成

但是有没有什么方法可以用纯js来实现呢

更新

具体的情况是,我选择了所有的localstorage键并将它们附加到div中的一个列表中。但我想周期性地更新它。如果我使用setinterval或按钮调用函数,前面的键会重复追加。比如:文件1。。。。然后:文件1,文件1,文件2。。。然后:文件1文件1文件2文件1文件1文件1文件2文件3

window.onload = function cargararchivos() {
    localstorage = []
    var keys = Object.keys(localStorage);
    for (let i = 0; i < keys.length; i++) {
    var elemento_lista = document.createElement('li')
    elemento_lista.innerHTML = keys[i]
    var lista = document.getElementById('lista_archivos')
    lista.appendChild(elemento_lista)
    localstorage[ keys[i] ] = localStorage.getItem( keys[i] )

    elemento_lista.onclick = function() 
    {alert(JSON.parse(localStorage[keys[i]]))}}
}; 

这可以使用setInterval函数完成。它在预先确定的时间后执行您选择的函数

要做到这一点,您的DIV必须具有唯一的ID,因此我们可以使用Javascript的getElementById方法访问它

下面是一个简单的示例,每1000毫秒用当前时间更新一个div:

功能更新{ document.getElementByIdmyDiv.innerHTML=新日期; } var区间=设定区间值更新,1000;
您的方法第一次工作,但之后不工作的原因是该方法添加了DOM节点。在第二次调用之后,您将看到第一次调用和第二次调用中的DOM节点。在第三次调用之后,您将看到第一次、第二次和第三次调用中的节点。。。等等

如果要重复调用像cargararchivos这样添加DOM节点的方法,必须首先删除以前添加的任何DOM元素。我已经更新了您的代码,假设lista_archivos开始时没有子元素:

function cargararchivos() {
    localstorage = []
    var keys = Object.keys(localStorage);
    var lista = document.getElementById('lista_archivos')

    // Ensure any previously added DOM nodes are removed.
    while (lista.firstChild) {
        lista.removeChild(lista.firstChild);
    }

    for (let i = 0; i < keys.length; i++) {
        var elemento_lista = document.createElement('li')
        elemento_lista.innerHTML = keys[i]

        lista.appendChild(elemento_lista)
        localstorage[ keys[i] ] = localStorage.getItem( keys[i] )

        elemento_lista.onclick = function() 
        {alert(JSON.parse(localStorage[keys[i]]))}
    }
}; 

查看jQuery加载提示的源代码:它是用纯jsp编写的,您不需要任何ajax,因为您是从localStorage获取数据的。使用setTimeout并首先进行一些编码,更新的HTML元素具体是什么,元素属性ex的值。这对我不起作用,我将编辑qestion使其更清晰。