查找由另一个脚本生成的元素

时间:2015-05-20 08:53:46

标签: javascript jquery datatables

我有一个网页,其中包含由datatables jQuery插件生成的表格。该表的代码如下所示:

<div id="countdown" style="display: none;">Countdown <span id="counter"></span></div>

<table id="zones">
<thead>
    <tr>
        <th>Column Header 1</th>
        <th>Column Header 2</th>
    </tr>
</thead>
<tbody></tbody>
</table>

因此脚本会添加<tbody>内的所有内容。我可以在Chrome开发工具中查看完整的表格内容,但不能在页面来源中看到。

我想要做的是检查表中的任何元素是否具有类icon-refresh,如果是这样,请激活我的js代码,如下所示:

$(document).ready(function() {
function countdown(elementName, minutes, seconds)
{
    var element, endTime, hours, mins, msLeft, time;

    function twoDigits(n)
    {
        return (n <= 9 ? "0" + n : n);
    }

    function updateTimer()
    {
        msLeft = endTime - (+new Date);
        if (msLeft < 1000) {
            setTimeout(function () {
                window.location.reload(true);
            }, 5000);
        } else {
            time = new Date(msLeft);
            hours = time.getUTCHours();
            mins = time.getUTCMinutes();
            element.innerHTML = (hours ? hours + ':' + twoDigits(mins) : mins) + ':' + twoDigits(time.getUTCSeconds());
            setTimeout(updateTimer, time.getUTCMilliseconds() + 500);
        }
    }

    element = document.getElementById(elementName);
    endTime = (+new Date) + 1000 * (60*minutes + seconds) + 500;
    updateTimer();
}

if ($('table').find('.icon-refresh')) {
    countdown('counter', 0, 60 - new Date().getSeconds());
    document.getElementById('countdown').style.display = 'block';
}
});

正如您所看到的,它应该倒计时到下一整分钟刷新页面。问题在于$('table').find('.icon-refresh'),它似乎总是正确的,因为即使没有一个元素具有类icon-refresh,也会显示倒计时。我也试过$('.icon-refresh').length,但是这个没有找到任何元素。有一个简单的解决方案吗?

另外,第二件事是,由于数据表中存在分页,因此每次用户单击<a tabindex="0" class="paginate_button"></a>元素时都应检查该条件。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

编辑,误解了OP。

第二个脚本在第一个脚本完成测试后加载。因此,<script>会返回.length,因为此时0不存在。

onload可以直接在标签上使用,例如标签

在页面上加载表格后运行倒计时脚本。例如:.icon-refresh