Javascript全局变量 var切换; 切换=1; 函数open(){ jQuery(window.bind(“beforeunload”,function(){$.post(“logout.php”);}) $.post(“online.php”,函数(数据){ $(“#Layer6”).html(数据); }); } 函数切换() { $(“#Layer4”).animate({height:'toggle'}); $(“#Layer6”).animate({height:'toggle'}); 如果(切换==1) { $(“#toggle”).attr('src',“toggle_up.jpg”); 切换=0; } 其他的 { $(“#toggle”).attr('src',“toggle#down.jpg”); 切换=1; } }
在这里,我将toggle定义为一个全局变量,并最初将其值设置为1。 在执行toggle()时,toggle的值应作为全局变量进行更改。在执行时,脚本似乎根本不起作用(toggle部分)Javascript全局变量 var切换; 切换=1; 函数open(){ jQuery(window.bind(“beforeunload”,function(){$.post(“logout.php”);}) $.post(“online.php”,函数(数据){ $(“#Layer6”).html(数据); }); } 函数切换() { $(“#Layer4”).animate({height:'toggle'}); $(“#Layer6”).animate({height:'toggle'}); 如果(切换==1) { $(“#toggle”).attr('src',“toggle_up.jpg”); 切换=0; } 其他的 { $(“#toggle”).attr('src',“toggle#down.jpg”); 切换=1; } },javascript,variables,global,Javascript,Variables,Global,在这里,我将toggle定义为一个全局变量,并最初将其值设置为1。 在执行toggle()时,toggle的值应作为全局变量进行更改。在执行时,脚本似乎根本不起作用(toggle部分) 请帮忙。谢谢 您已将变量和函数命名为相同的名称(“切换”)。函数定义正在重写变量声明(因为它是在后面出现的)。将函数重命名为其他函数,例如doToggle() 发生这种冲突的原因是您可以将函数对象分配给Javascript中的变量。基本上,当您调用函数时,Javascript会查找具有该名称的函数或具有该名称的变
请帮忙。谢谢 您已将变量和函数命名为相同的名称(“切换”)。函数定义正在重写变量声明(因为它是在后面出现的)。将函数重命名为其他函数,例如
doToggle()
发生这种冲突的原因是您可以将函数对象分配给Javascript中的变量。基本上,当您调用函数时,Javascript会查找具有该名称的函数或具有该名称的变量,以防它包含对函数的引用:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
var toggle;
toggle=1;
function open(){
jQuery(window).bind("beforeunload", function(){$.post("logout.php");})
$.post("online.php",function(data){
$("#Layer6").html(data);
});
}
function toggle()
{
$("#Layer4").animate({height:'toggle'});
$("#Layer6").animate({height:'toggle'});
if(toggle==1)
{
$("#toggle").attr('src',"toggle_up.jpg");
toggle=0;
}
else
{
$("#toggle").attr('src',"toggle_down.jpg");
toggle=1;
}
}
</script>
正如Cameron指出的,问题在于变量和函数具有相同的名称 另外,请记住jQuery有一个名为的方法。。。这不会导致冲突,因为这是
$
或jQuery
的方法。。。但这可能会让阅读您的代码的人感到困惑
无论如何,这里有一个更简洁的方法来解决您的问题:
var variable = 3;
variable = function() { alert('Function called') };
variable(); // Calls the function, whose reference is stored in 'variable'
上面使用将
向上
或向下
连接到#toggle
的src
属性中
(count++%2?“向上”:“向下”)
将首先获取count的当前值(然后增加其值)并将其修改2。此值将为1或0。如果为1(true),向上
被连接。如果为0(false),down
被连接。递增是为了跟踪切换
需要注意的是,您可以将变量、函数和任何jQuery/其他在自动执行匿名函数中使用的代码包装起来,以便最大限度地减少全局名称空间的混乱,并在以后向页面添加更多脚本时减少变量名冲突的机会
var count = 1;
function toggle()
{
$("#Layer4").animate({height:'toggle'});
$("#Layer6").animate({height:'toggle'});
$("#toggle").attr('src',"toggle_" + (count++ % 2 ? "up" : "down") + ".jpg");
}
(function() {
var count = 1;
function open() { ... }
function toggle() { ... }
$(function() {
...
});
}());