页面完全加载后,JavaScript函数停止工作

时间:2019-06-24 08:41:54

标签: javascript php wordpress

我有一个wordpress网站,其中一项功能已开始运行。 在我的议程页面上:http://staging.chinahiking.cn/agenda/ 过去,当您点击这些标签时,即将到来的旅程将会改变。我只是意识到现在它已经停止工作了,我不确定为什么。有时甚至更奇怪的是,当我进行一次强制刷新时,并且当页面仍在加载并且我单击选项卡时,它再次起作用,但是当页面完全加载时,它停止了工作。这是JS函数:

<?php get_header();
$cur_month = date('n');
$month = array(1=>"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
$agenda = get_agenda_by_month();
?>

var $=function(objectId){
    if(document.getElementById&&document.getElementById(objectId)){
        return document.getElementById(objectId)
    }
    else if(document.all&&document.all(objectId)){
        return document.all(objectId)
    }
    else if(document.layers&&document.layers[objectId]){
        return document.layers[objectId];
    }
    else{
        return false;
    }
};
function tabTurn(presObj, classon, showdiv){
    var pObj = presObj.parentNode;
    var items = pObj.getElementsByTagName('li');

    for(var i=0; i<items.length; i++){
        var n = i + 1;
        var cntDiv = $('location_desc_' + n);
        if(items[i] == presObj){
            items[i].className=classon;
            cntDiv.className = showdiv;
        }
        else{
            items[i].className='off';
            cntDiv.className = 'undis';
        }
    }
};

这是html:

  <div class="monthes">
            <div class="month_list">
                <ul class="month">
                <?php for($i=1; $i<=12; $i++){
                    if($i!=$cur_month)
                       echo "<li onclick=\"tabTurn(this, 'on', 'month_desc');\" class=\"off\">$month[$i]</li>";
                    else
                       echo "<li onclick=\"tabTurn(this, 'on', 'month_desc');\" class=\"on\">$month[$i]</li>";
                }?>
                </ul>
            </div>
        </div>
          <?php
                for($i=1; $i<=12; $i++):
                    if((isset($agenda[$i]))):
            ?>
            <div id="location_desc_<?php echo $i;?>" class="month_desc <?php if($i!=$cur_month) echo "undis";?>">

有人知道为什么这突然停止工作吗?有时只有在页面仍在加载时才能工作,但在页面完全加载后才停止?

1 个答案:

答案 0 :(得分:0)

我认为您没有正确使用jquery。您应该使用addClassremoveClass函数。

在您的站点上打开devtools,我可以通过运行以下命令来更改页面:

$('#location_desc_6').addClass("undis")
$('#location_desc_8').removeClass("undis")

请注意,如果要按ID选择元素,则选择器必须以#开头。

如果您确实想使用className = whatever,则需要指定要在选择器返回的第一项上运行,例如:

$('#location_desc_6')[0].className = "undis"