点击事件第一次执行有效果,第二次执行没效果

大可之人 2016-04-15 04:26:38
function changeMode(musicMode){
if (musicMode=="list") {
$("#mode").attr("src","images/volume-add-button.gif");
var musicMode="shuffle";
}
else if (musicMode == "shuffle") {
$("#mode").attr("src","images/progress-button.gif");
var musicMode="repeat";
}
else if (musicMode == "repeat") {
$("#mode").attr("src","images/pause-button-hover.gif");
var musicMode="list";
}
}


给musicMode赋初始值为list,执行第一次后更改图片路径,第二次执行为什么不更改路径了?
...全文
1076 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
瑞卡哥哥 2016-04-17
  • 打赏
  • 举报
回复
引用 6 楼 qq_16161417 的回复:

var musicMode = "list";
function changeMode(musicMode) {
	if (musicMode == "list") {
		$("#mode").attr("src", "images/volume-add-button.gif");
		musicMode = "shuffle";
	} else if (musicMode == "shuffle") {
		$("#mode").attr("src", "images/progress-button.gif");
		musicMode = "repeat";
	} else if (musicMode == "repeat") {
		$("#mode").attr("src", "images/pause-button-hover.gif");
		musicMode = "list";
	}
}
这样全局变量还是没有变化,每次进来变量都还是list[/quote] 不要传参数 直接在局部使用全局变量 like this:

var musicMode = "list";
function changeMode() {
	if (musicMode == "list") {
		$("#mode").attr("src", "images/volume-add-button.gif");
		musicMode = "shuffle";
	} else if (musicMode == "shuffle") {
		$("#mode").attr("src", "images/progress-button.gif");
		musicMode = "repeat";
	} else if (musicMode == "repeat") {
		$("#mode").attr("src", "images/pause-button-hover.gif");
		musicMode = "list";
	}
}
大可之人 2016-04-15
  • 打赏
  • 举报
回复

var musicMode = "list";
function changeMode(musicMode) {
	if (musicMode == "list") {
		$("#mode").attr("src", "images/volume-add-button.gif");
		musicMode = "shuffle";
	} else if (musicMode == "shuffle") {
		$("#mode").attr("src", "images/progress-button.gif");
		musicMode = "repeat";
	} else if (musicMode == "repeat") {
		$("#mode").attr("src", "images/pause-button-hover.gif");
		musicMode = "list";
	}
}
[/quote] 这样全局变量还是没有变化,每次进来变量都还是list
天际的海浪 2016-04-15
  • 打赏
  • 举报
回复
引用 4 楼 qq_16161417 的回复:
[quote=引用 2 楼 zhouqinghe24 的回复:] 不要做为参数传进来. 直接修改全局变量就可以了
麻烦再请教下,如何直接修改全局变量?局部变量的值传不到全局变量[/quote]

var musicMode = "list";
function changeMode(musicMode) {
	if (musicMode == "list") {
		$("#mode").attr("src", "images/volume-add-button.gif");
		musicMode = "shuffle";
	} else if (musicMode == "shuffle") {
		$("#mode").attr("src", "images/progress-button.gif");
		musicMode = "repeat";
	} else if (musicMode == "repeat") {
		$("#mode").attr("src", "images/pause-button-hover.gif");
		musicMode = "list";
	}
}
大可之人 2016-04-15
  • 打赏
  • 举报
回复
引用 2 楼 zhouqinghe24 的回复:
不要做为参数传进来. 直接修改全局变量就可以了
麻烦再请教下,如何直接修改全局变量?局部变量的值传不到全局变量
somnus3421 2016-04-15
  • 打赏
  • 举报
回复
你这段代码等价于

    function changeMode(musicMode) {
        var musicMode;
        if (musicMode == "list") {
            $("#mode").attr("src", "images/volume-add-button.gif");
            musicMode = "shuffle";
        } else if (musicMode == "shuffle") {
            $("#mode").attr("src", "images/progress-button.gif");
            musicMode = "repeat";
        } else if (musicMode == "repeat") {
            $("#mode").attr("src", "images/pause-button-hover.gif");
            musicMode = "list";
        }
    }
每次进来都会重新赋值变量,所以根本没有往下面走啊
瑞卡哥哥 2016-04-15
  • 打赏
  • 举报
回复
不要做为参数传进来. 直接修改全局变量就可以了
瑞卡哥哥 2016-04-15
  • 打赏
  • 举报
回复
var musicMode="shuffle"; 把每个这一句代码的 var 去掉 在外部设置一个 全局变量记录

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧