在 InnerHTML 页面加载时更新的简单 JavaScript 循环

Posted

技术标签:

【中文标题】在 InnerHTML 页面加载时更新的简单 JavaScript 循环【英文标题】:Simple JavaScript Loop which updates on InnerHTML Page Load 【发布时间】:2012-10-20 01:22:26 【问题描述】:

当页面加载时,我想生成一个 javascript 循环。项目总数取决于页面上已有的 php 字符串。

<script type="text/javascript">

function Generation()
    var loopTotal = <?=$TotalNumberOfRows?>;
    var innerToUpdate=$("#loopItemSet");

    var page=0;
    for (var i=0;i<=<?=$TotalNumberOfRows?>;i+=24)
    
        page++;
        // document.write(i);
        innerToUpdate.innerhtml="<a href='link.php?go="+i+"'> page number "+page+"</a>";
           


$(document).ready(function()
    Generation();   
);

</script>

它应该从 24 开始返回三个链接,进入 52,3 次。

【问题讨论】:

你忘了告诉我们$TotalNumberOfRows的值是什么。 @Jasper,据我了解,这是一个动态创建的数字。 @FrankB,是的,但他没有告诉我们问题出在哪里,而是在喃喃自语一些数字,如果不是所有数字都已知,这将毫无意义 24 变成 52 三倍?不,24 * 3 = 72。 @jasper 实际上,虽然我同意问题不清楚,但知道价值与问题的核心无关。 【参考方案1】:

此行会在每次迭代中覆盖您元素的innerHTML。您可以像这样简单地添加+

innerToUpdate.innerHTML += "<a href='link.php?go="+i+"'> page number "+page+"</a>";

或先收集一个字符串中的所有条目,然后只更新该元素的 HTML 内容一次:

    function Generation()
        var loopTotal = <?=$TotalNumberOfRows?>;
        var innerToUpdate=$("#loopItemSet");
        // var innerToUpdate=$(".loopItemSet"); // for multiple elements.

        var page=0, content = '';
        for (var i=0;i<=<?=$TotalNumberOfRows?>;i+=24)
        
            page++;
            // document.write(i);
            content += "<a href='link.php?go="+i+"'> page number "+page+"</a>";
        
        innerToUpdate.html( content );
    

我用 jQuery 的 html() 替换了你对 innerHTML 的调用。在我看来,如果您使用 jQuery,请在需要的地方使用它。

【讨论】:

如果我有更多 &lt;div id="loopItemSet"&gt; 上的内容,我该怎么做才能插入到页面上的所有内容? @TheBlackBenzKid id 表示唯一,因此您不应拥有该 id 的多个元素。改用例如class。然后只需选择所有这些元素并为每个元素调用html()【参考方案2】:

你想使用 jQuery 的 append

而不是这个:

    innerToUpdate.innerHTML="<a href="link.php?go="+i+""> page number "+page+"</a>";

试试这个:

    innerToUpdate.append('<a href="link.php?go='+i+'"> page number '+page+'</a>');

检查该行中的引号,我编辑了一些嵌套严重的双引号。

【讨论】:

【参考方案3】:

问题尚不清楚,但我假设您只获得一个链接而不是 3 个,并且想知道原因。在这里:

    for (var i=0;i<=<?=$TotalNumberOfRows?>;i+=24)
    
        page++;
        // document.write(i);
        innerToUpdate.innerHTML="<a href='link.php?go="+i+"'> page number "+page+"</a>";
           

应阅读:

  for (var i=0;i<=<?=$TotalNumberOfRows?>;i+=24)
        
            page++;
            // document.write(i);
            innerToUpdate.innerHTML+="<a href='link.php?go="+i+"'> page number "+page+"</a>";
         

您当前的代码每次都重置 html,而不是连接到它。

【讨论】:

以上是关于在 InnerHTML 页面加载时更新的简单 JavaScript 循环的主要内容,如果未能解决你的问题,请参考以下文章

在页面加载时在输入字段中加载 innerHTML 数据

使用 InnerHTML 加载 html 页面时保持 CSS 样式

简单的innerHTML更新不起作用[重复]

更改 innerhtml 但页面不显示新的 innerhtml

可以用 innerHTML 插入脚本吗?

当元素的innerHTML改变时触发一个函数?