【发布时间】:2023-03-30 03:00:02
【问题描述】:
我正在尝试为用户提供游戏主题选项。以下是 .js 文件中的代码:
var clicks = 0;
$("#theme").on( "click", function(){
clicks++;
if(clicks == 1){
var themeVal = $("#theme").val();
var url = "url(../images/backgrounds/" + themeVal + ".jpg)";
$("body").css('background-image', url);
clicks = 0;
}
});
这里是 html 的简短版本:
<select id="theme">
<option value="" disabled="disabled" selected="selected">Select theme</option>
<option value="tropical_beach">Beach</option>
<option value="forest">Forest</option>
....
</select>
这是我的文件结构:
在控制台中,我没有收到任何错误,并且所有值都按预期返回......但是当我从下拉列表中选择一个新值时,背景没有改变。我可能忽略了一些小东西。感谢您的眼球;)
更新:
var clicks = 0;
$("#theme").on( "change", function(){
clicks++;
if(clicks == 1){
var themeVal = $("#theme").val();
var url = "url('../images/backgrounds/" + themeVal + ".jpg')";
$("body").css('background-image', url);
clicks = 0;
}
});
【问题讨论】:
-
第一件事。对
select使用change事件而不是单击。接下来尝试使用带引号的url('...')。 -
当你点击
select而不是当你选择一个选项时点击会触发。其余的看起来不错jsfiddle.net/2ttvf93r。 -
好的,所以我取出了所有的点击内容并将其更改为更改。现在看起来像这样: $("#theme").change (function(){ var themeVal = $("#theme").val(); var url = "url('../images/backgrounds/" + themeVal + ".jpg')"; });
-
那么什么不起作用?有什么错误吗? ID 为
#theme的多个元素?这个下拉菜单是动态添加的吗? -
不,它在 html 中,我没有收到任何错误,它根本没有改变 :(
标签: jquery css drop-down-menu