【问题标题】:How to put value from 3 set of arrays into differences div in javascript如何将3组数组中的值放入javascript中的差异div中
【发布时间】:2013-09-08 11:45:25
【问题描述】:

假设我有 3 个 div。我有 3 组数组。我需要将每个数组中的值放入这 3 个 div 中。不知道怎么办?

让我们看看我的示例 div。

<div id='001'><div id="nr001"><div id="clr001"></div></div></div>
<div id='002'><div id="nr002"><div id="clr002"></div></div></div>
<div id='003'><div id="nr003"><div id="clr003"></div></div></div>

我有 3 组这样的数组(也许我有更多,但现在让我们以 3 组为例):

**These array are from JSON.parse();**

[["001", "002", "003"],["8", "9", "20"], [ "brown", "black", "yellow"]]

我想做的事: 我想将数组中的这些值放入正确的 id div 中,它必须是这样的:

<div id='001'>8<div id="nr001"><div id="clr001">brown</div></div></div>
<div id='002'>9<div id="nr002"><div id="clr002">black</div></div></div>
<div id='003'>20<div id="nr003"><div id="clr003">yellow</div></div></div>

我试过的是:

var str = xmlHttp.responseText;
var res = JSON.parse(str);

var set1 = res[0], set2 = res[1], set3 = res[3];
for (var i = 0; i < set1.length; i++) {
    var div1 =  document.getElementById("nr"+set1[i]);
    var div2 =  document.getElementById("clr"+set1[i]);
    if (div1) {
        div1.innerHTML = set2[i];     
    }

  if (div2) {
        div2.innerHTML = set3[i];     

    }
}

我只有 div2,但没有 div1。我想我需要更多的脚本行。或新方法:S

获得解决方案后更新:

我要感谢所有给我解决方案的人。每个人都是正确的,这是我的错,我没有解释我使用 setTimeout() 每 15 秒调用一次函数的所有细节。那么其他答案是附加元素吗?当另一个调用完成时,结果追加到旧结果+++++

但是在我分配跨度而不是同时使用 div 之后。所以问题就没有了。我收到了我想要的消息。谢谢大家。

【问题讨论】:

    标签: javascript ajax arrays


    【解决方案1】:

    由于您的 div 是嵌套的,您不能简单地分配外部 div 的 innerHTML - 这会破坏其内容。您需要一个额外的标签才能将文本放入:

    <div id='001'><span id="xyz001"></span><div id="nr001"><div id="clr001"></div></div></div>
    
    var span =  document.getElementById("xyz"+set1[i]);
    var div2 =  document.getElementById("clr"+set1[i]);
    if (span) {
        span.innerHTML = set2[i];     
    }
    
    if (div2) {
        div2.innerHTML = set3[i];     
    }
    

    【讨论】:

    • 嗨,我很乐意按照你说的做,但是 div nr#2 我需要为它分配绝对位置。所以我不能使用 span 标签。
    • 嗯,您的解决方案是最好的。虽然我必须稍微改变我的设计,但它节省了我像这样疯狂的时间。谢谢s
    【解决方案2】:

    刚刚修改了 Omer Hassan 的答案。您必须使用其 innerHTML 将数据附加到主 div,然后将数据附加到内部 div,例如:

    var res = [["001", "002", "003"],["8", "9", "20"], [ "brown", "black", "yellow"]];
    
    for (var i = res[0].length - 1; i > -1; i--)
    {
        var suffix = res[0][i];
        var div1 =  document.getElementById("nr" + suffix);
    
    
        div1.innerHTML = res[1][i] + div1.innerHTML;   
    
        var div2 =  document.getElementById("clr" + suffix);
        div2.innerHTML = res[2][i];
    }
    

    DEMO FIDDLE

    【讨论】:

    • 我很想试试这个,但数据不是以这种形式出现的。我的意思是我的数组前面没有 res 这个词。
    【解决方案3】:
    var res = [["001", "002", "003"], ["8", "9", "20"], [ "brown", "black", "yellow"]];
    
    for (var i = res[0].length - 1; i > -1; i--)
    {
        var suffix = res[0][i];
        var container = document.getElementById(suffix);
        var div1 = document.getElementById("nr" + suffix);
        var div2 = document.getElementById("clr" + suffix);
    
        container.insertBefore(document.createTextNode(res[1][i]), div1);
        div2.innerHTML = res[2][i];
    }
    

    【讨论】:

    • 可能是因为您忘记关闭&lt;div&gt; 标签之一。
    • 我很抱歉我的错误,我已经更新了问题,请再次查看 Divs。最后一个 div 在第二个里面。你认为这是问题所在吗?还是没关系?
    • 你好我已经试过很多次了。是的,我得到了两个值,但是 div 改变了位置:S
    • 我能看到的另一个问题是 div clr。每 15 秒开始增加值。我忘了说我使用 setTimeout() 每 15 秒调用一次函数。
    【解决方案4】:

    这样的事情怎么样:

    var data = [["001", "002", "003"],["8", "9", "20"], ["brown", "black", "yellow"]];
    
    for ( var i = 0; i < data[0].length; i++ ) {
        var div1 = document.getElementById(data[0][i]);
        div1.innerHTML = data[1][i] + div1.innerHTML;
        document.getElementById('clr' + data[0][i]).innerHTML = data[2][i];  
    }
    

    顺便说一句,我假设第一个数组是IDs,所以我只是循环遍历它们。这就是你看到data[0].length的原因。

    再次直播@@JSFiddlehere

    【讨论】:

    • 嗨 JSFiddle 我很想试试你的,但我的数据不是这种形式的。我不知道怎么做。您能否更改我在问题中设置的数据?我的意思是我的数组前面没有数据这个词。
    • @PoramatFin 好吧,我真的不明白。我刚刚添加了一些 CSS 类,我应该删除它们吗?这只是为了演示...... DOM 和数据结构与你在那里的完全一样......
    • 您不需要删除,因为它可以用于其他。我感谢每一个答案。我想保留它!也许我在其他情况下使用。
    • @PoramatFin 顺便说一句,我的意思是删除 CSS Classes 不是答案! :)
    • 啊抱歉我误会了。Mahdi 我可以看到你的演示是有效的,但正如我所说,我的数据不是来自这个。要使用您的脚本,我需要更改从 php.ini 发送数据的方式。我使用 json_encode() 从 php 发送这些数组。
    猜你喜欢
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 2020-08-05
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多