我很难把这个有条件地写好。我想将它更改为如果#number的值等于"1“,而#status_dropdown的值等于”Active“,那么就做一些事情。到目前为止,这就是我所拥有的:
var status = document.getElementById("status_dropdown").value;
$('#number').on('change', function(){
if ($(this).val() == "1" && (status).val() == " Active") {
$('div[class*="member-"], .amounts').hide();
$('.member-1, .donation-0').show();
} else if ($(this).val() == "2") {
$('div[class*="member-"]').hide();
$('.member-2').show();
} else if ($(this).val() == "3") {
$('div[class*="member-"]').hide();
$('.member-3').show();
} else if ($(this).val() == "0") {
$('div[class*="member-"]').hide();
}
});下面也是js操纵html的工具:https://jsfiddle.net/jelane20/c11z8xak/
我不知道如何将逻辑运算符与jQuery结合起来,但也可以使用直接的JS解决方案。
发布于 2018-01-27 21:05:43
您正在将状态选择的值存储在已准备好的页面上。您也必须获得更改事件的值,而不是(status).val()使用$("#status_dropdown").val()。
发布于 2018-01-27 21:03:36
这不起作用的原因是你把Vanilla JS和jQuery结合在一起。在第一行中,您将状态作为#status-dropdown的值,这在语法上是很好的。
然后使用该值并将其传递给jQuery $(status),因此它试图寻找一个元素,其中包含状态值的选择器。如果您只想要一个jQuery解决方案,可以跳过第一行,用选择器$('#status-dropdown')替换$(status)。
此外,您只检查状态值一次,所以您的代码正在检查状态是否处于活动状态,初始条件下的值是否为1,但是它只检查$(this)的值。
您可以将&& $('#status-dropdown').val() == "Active")添加到每个检查中,或者最好先执行该检查:
$('#number').on('change', function() {
if ($('#status-dropdown').val() === 'Active') {
if ($(this).val() === "1") {
$('div[class*="member-"], .amounts').hide();
$('.member-1, .donation-0').show();
} else if ($(this).val() === "2") {
$('div[class*="member-"]').hide();
$('.member-2').show();
} else if ($(this).val() === "3") {
$('div[class*="member-"]').hide();
$('.member-3').show();
} else if ($(this).val() === "0") {
$('div[class*="member-"]').hide();
}
}
});附带注意:为了进行更强的检查,我已经将您的==更改为===。
https://stackoverflow.com/questions/48480466
复制相似问题