JQuery .attr问题。 $( '#ID')ATTR( '值')。返回未定义

时间:2011-04-23 04:51:01

标签: javascript jquery

我有这个工作,在某些地方,我搞砸了一些东西。从那时起,我已经做了几次修改,试图解决问题,现在我只是卡住了。截至目前我有这个:

            var calBtn = $('#calButton').attr('value');
        function disappearingTable() {
            if (calBtn = 'Turn Calendar Off') 
            {
                $('.calendarLayer').toggle();
                $('#calButton').attr('value', 'Turn Calendar On');
            }
            else if (calBtn = 'Turn Calendar On') 
            {
                $('.calendarLayer').toggle();
                $('#calButton').attr('value', 'Turn Calendar Off');
            }
        }

这是标题中的脚本标记。然后在身体里我有这个。

<form id="calendarForm" action="javascript:void(0);">
                <input type="submit" id="calButton" value="Turn Calendar Off" onclick="disappearingTable()" />
            </form>

我无法理解我的生活。即使我尝试了常规的Javascript,我仍然未定义。有人帮吗?谢谢!

3 个答案:

答案 0 :(得分:4)

=是赋值运算符,您应该使用=====来表示相等:

if (calBtn == 'Turn Calendar Off') 
{
    $('.calendarLayer').toggle();
    $('#calButton').attr('value', 'Turn Calendar On');
}
else if (calBtn == 'Turn Calendar On') 
{
    $('.calendarLayer').toggle();
    $('#calButton').attr('value', 'Turn Calendar Off');
}

答案 1 :(得分:3)

首先如no.good.at.coding所述=是赋值运算符,即使有效也不正确。 =====用于测试相等性

除此之外,如果我没有遗漏任何内容,变量calBtn的值仅在函数外部设置一次。每当调用函数以获得不同的calBtn值时,每次调用函数时都需要在函数中更改函数或从dom元素中获取函数。

试试这个..

function disappearingTable() {
            var calBtn = $('#calButton').attr('value');
            if (calBtn ==='Turn Calendar Off') 
            {
                $('.calendarLayer').toggle();
                $('#calButton').attr('value', 'Turn Calendar On');
            }
            else if (calBtn === 'Turn Calendar On') 
            {
                $('.calendarLayer').toggle();
                $('#calButton').attr('value', 'Turn Calendar Off');
            }
        }

答案 2 :(得分:0)

除了仍然需要更改的相等检查之外,我认为你有一个与隐含全局变量相关的问题,因为你的calButton变量不在你的函数之外。

如果您重构代码怎么办:

$('#calButton').click(function(e) {
    var element = $(this);
    var value = element.val();
    var layer = $('.calendarLayer');

    if (value === 'Turn Calendar Off') {
        layer.toggle();
        element.attr('value', 'Turn Calendar On');
    } else if (value === 'Turn Calendar On') {
        layer.toggle();
        element.attr('value', 'Turn Calendar Off');
    }
});

<form id="calendarForm">
    <input type="submit" id="calButton" value="Turn Calendar Off" />
</form>