您在 ArrowDir 中定义的 var up 和 down 在该函数范围之外是不可访问的。
如果这是一种一次性的函数,您可以解决此问题的最简单方法就是将向上/向下行为放在 jQuery 函数中,如下所示:
$(function () {
if($("#toggle").onclick){
$("#arrow").attr('src','up_arrow.jpg');
} else {
$("#arrow").attr('src','down_arrow.jpg');
}
});
如果您只想命名这些函数以实现可重用性,则可以改为创建一个对象文字:
ArrowDir = {
up: function(){
$("#arrow").attr('src','up_arrow.jpg');
},
down: function(){
$("#arrow").attr('src','down_arrow.jpg');
}
};
然后你可以调用:ArrowDir.up()
或ArrowDir.down()
其他地方。
对于它的价值,如果您的目标只是为这些函数命名以实现可重用性,我会说对象文字语法对我来说更有意义。
或者,如果您真的想将其作为函数调用来执行,正如 Kolink 指出的那样,向上/向下函数需要在返回值中。你可以这样写...
function ArrowDir() {
var up = function(){
$("#arrow").attr('src','up_arrow.jpg');
}
var down = function(){
$("#arrow").attr('src','down_arrow.jpg');
}
return {up:up,down:down};
}
或者像这样...
function ArrowDir() {
return {
up: function(){
$("#arrow").attr('src','up_arrow.jpg');
},
down: function(){
$("#arrow").attr('src','down_arrow.jpg');
}
};
}
现在打电话ArrowDir().down()
应该可以了。