我有这个工作,在某些地方,我搞砸了一些东西。从那时起,我已经做了几次修改,试图解决问题,现在我只是卡住了。截至目前我有这个:
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,我仍然未定义。有人帮吗?谢谢!
答案 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>