关于javascript:使用带有HTML 下拉列表的值更改上有一些图像更改。我已经简化了这里的代码,以便了解一般的想法。以下是我的信息(如果您有任何问题,请告诉我;我知道我没有在这里显示"select_text",但我认为这不是完全必要的,我必须解开一堆代码才能简化这里):

1
2
3
4
5
6
7
8
9
10
var select_option_select = select_text.parent().find('select');

select_option_select.change(function(){
    var changed_value = select_text.parent().find('select option[value="' + $(this).val() + '"]').text();
});

//THIS IS WHERE THE IMAGE CHANGES
if(changed_value=="Standard Crossline Grips (free)"){
    $('#grip_image').attr('src','/v/vspfiles/images/grip_image.jpg');
}

我知道这是可行的,但由于它的设置方式,更改值的字符串必须与我在if语句中输入的值完全相同。我一直在尝试使用"contains",这样可以让我在网站上更灵活地前进。我知道不能对text()值使用"contains",所以我这样重新编写它(注意,我去掉了text()函数):

1
2
3
4
5
6
7
8
9
10
var select_option_select = select_text.parent().find('select');

select_option_select.change(function(){
    var changed_value_2 = select_text.parent().find('select option[value="' + $(this).val() + '"]');
});

//THIS IS WHERE THE IMAGE CHANGES
if(changed_value_2.contains("Standard Crossline Grips (free)")){
    $('#grip_image').attr('src','/v/vspfiles/images/grip_image.jpg');
}

这给了我一个错误:

1
Uncaught TypeError: Object #<Object> has no method 'contains'

我猜这意味着它不承认任何"选择",改变了"价值"2,实际上并没有返回任何东西?

我希望我解释得足够好。如果有任何问题,请告诉我。非常感谢你的帮助。


这可能是你想要的:

1
2
3
if(changed_value.indexOf("Standard Crossline Grips") >= 0){
    $('#grip_image').attr('src','/v/vspfiles/images/grip_image.jpg');
}

1
2
3
if(changed_value.indexOf("(free)") >= 0){
    $('#grip_image').attr('src','/v/vspfiles/images/grip_image.jpg');
}

来源