我正在使用以下代码构建网页:

function change ()
{
    if($(this).hasClass("rosaLC"));
    {
        $(this).toggleClass('rosaLCb');
    }
    if ($(this).hasClass('rosaBC'));
    {
        $(this).toggleClass('rosaBCb');
    }
}


在html上,触发此功能的按钮如下:

<div class="row">
    <article class="columnLeft">
        <div class=rosa>
            <button onclick="playVid('crux');change.call(this)" class=rosaLC style="top:28px; left:75px;" ></button>
            <button onclick="playVid('gloria');change.call(this)" class=rosaBC style="top:460px; right:131px;"></button>
        </div>
    </article>
</div>


但是,当调用函数change()时,if语句无法正确求值,也就是说,当单击类rosaLC的<button>时,函数change ()会向其添加类rosaLCb和rosaBCb,以及原始类。 rosaLC类没有切换,按钮仍然具有3个类:
    <button onclick="playVid('crux');change.call(this)" class="rosaLC rosaLCb rosaBCb" style="top:20px; left:86px;"></button>

怎么了?

作为解决方法,我将该功能分为两个功能:

function change (thisObj)
{
    $(thisObj).toggleClass('rosaLC rosaLCb');

}
function change1 (thisObj)
{
    $(thisObj).toggleClass('rosaBC rosaBCb');
}


并更改html button

<button onclick="playVid('gloria');change1(this)" class=rosaBC style="top:36px; right:58px;"></button>
<button onclick="playVid('crux');change(this)" class=rosaLC style="top:28px; left:75px;" ></button>


这是我希望的唯一工作方式,但是我仍然不理解原始代码的主要问题,主要涉及if语句。

最佳答案

您没有定义使用它来切换的内容

只需这样做

function change ()
{
        $(this).toggleClass('rosaLC rosaLCb');
        $(this).toggleClass('rosaBC rosaBCb');
}


另外,传递元素对象而不是使用this,因为那样它就可以用于除按钮单击之外的目的(另一个元素上的其他事件)

function change (thisObj)
{
        $(thisObj).toggleClass('rosaLC rosaLCb');
        $(thisObj).toggleClass('rosaBC rosaBCb');
}


并以

<button onclick="playVid('crux');change(this)" class=rosaLC style="top:28px; left:75px;" ></button>

关于javascript - jQuery\Javascript-如果语句评估不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35797180/

10-12 15:52