我有一个Wordpress主题,其中包含一些与WooCommerce中的产品变体下拉有关的Javascript。基本上,这个Javascript语句似乎只是查看每个下拉列表的选定值,然后将值传递给脚本的其余部分,从而更改页面上的某些产品详细信息。
查看下拉列表值的语句如下:
if ((this.attributes[wd_selected_color_name] &&
this.attributes[wd_selected_color_name] === wd_selected_color) &&
(this.attributes[wd_selected_housing_name] &&
this.attributes[wd_selected_housing_name] === wd_selected_housing)) {
除非我的所有产品都只有两个下拉菜单,否则此功能完全正常。有些有三个,在这些情况下,Javascript不会触发,并且页面上的值不会更改。
尽管如此,虽然我对Javascript的知识非常有限,但我能够将以下适用于这些场合的声明拼凑在一起:
if(
(this.attributes[ wd_selected_color_name ] && this.attributes[ wd_selected_color_name ] === wd_selected_color) && (this.attributes[ wd_selected_housing_name ] && this.attributes[ wd_selected_housing_name ] === wd_selected_housing) && (this.attributes[ wd_selected_voltage_name ] && this.attributes[ wd_selected_voltage_name ] === wd_selected_voltage) )
) {
问题是,这会打破所有产品只有两个下降。所以我实际上需要一个足够灵活的单一语句来处理这两种情况。我以为我知道怎么用||来写它运算符,但显然我错了,因为以下代码不起作用:
if(
( (this.attributes[ wd_selected_color_name ] && this.attributes[ wd_selected_color_name ] === wd_selected_color) && (this.attributes[ wd_selected_housing_name ] && this.attributes[ wd_selected_housing_name ] === wd_selected_housing) )|| ( (this.attributes[ wd_selected_color_name ] && this.attributes[ wd_selected_color_name ] === wd_selected_color) && (this.attributes[ wd_selected_housing_name ] && this.attributes[ wd_selected_housing_name ] === wd_selected_housing) && (this.attributes[ wd_selected_voltage_name ] && this.attributes[ wd_selected_voltage_name ] === wd_selected_voltage) )
) {
在这种情况下只有||之前的语句被触发。我通过交换陈述的立场来证实这一点。无论一个人是第一个工作,另一个人被忽略。
知道我做错了什么吗?它与我如何嵌套括号有关吗?