【发布时间】:2018-05-09 04:16:42
【问题描述】:
应使用小表单来确保选择特定元素会影响其他表单字段的选择。 为了解决这个问题,我使用了 jQuery Change 函数。 使用 If-Else 语句可以提供所需的结果。 但是,如果仅在 IF 语句中声明了特殊变量“shippingLocalPickup”,则更改函数不会返回所需的结果。 (JS-FIDDLE)
<INPUT type="checkbox" id="checkboxNationalShippingService" name="checkboxNationalShippingService" value="yes" checked="checked" />
<select id="shippingServiceSel" name="shippingService">
<option selected value='DE_Pickup'>Ware muss abgeholt werden</option>
<option selected value='DHL_Paket'>Paket</option>
</select>
<div id="shippingLocalPickup" class="selElement" title="Diese Option sollte bei ja belassen werden">
<p>Artikel kann abgeholt werden?
<select name="shippingLocalPickup">
<option selected value="DE_Pickup">ja</option>
<option value="false">nein</option>
</select>
</p>
查询脚本:
$(document).ready(function() {
$("#shippingServiceSel")
.change(function() {
var shippingService = $("#shippingServiceSel").val();
if (shippingService == "DE_Pickup") {
var shippingLocalPickup = $("#shippingLocalPickup");
shippingLocalPickup.empty().append('<p>Artikel kann abgeholt werden? <select name="shippingLocalPickup"><option value="false">nein</option><option value="true">ja</option></select></p>');
} else {
shippingLocalPickup.empty().append('<p>Artikel kann abgeholt werden? <select name="shippingLocalPickup"><option value="true">ja</option><option value="false">nein</option></select></p>');
}
})
});
如果它在函数的开头声明,一切正常。 (JS-FIDDLE)
$(document).ready(function() {
$("#shippingServiceSel")
.change(function() {
var shippingLocalPickup = $("#shippingLocalPickup");
var shippingService = $("#shippingServiceSel").val();
if (shippingService == "DE_Pickup") {
shippingLocalPickup.empty().append('<p>Artikel kann abgeholt werden? <select name="shippingLocalPickup"><option value="false">nein</option><option value="true">ja</option></select></p>');
} else {
shippingLocalPickup.empty().append('<p>Artikel kann abgeholt werden? <select name="shippingLocalPickup"><option value="true">ja</option><option value="false">nein</option></select></p>');
}
})
});
在我看来,变量应该在函数中的任何地方都可见。如此处所述: (stackoverflow article)
为什么 if 语句中的可见性仍然受到限制?我的错误在哪里? 提前谢谢...
【问题讨论】:
-
shippingLocalPickup是“可见的”,但它只在if分支中初始化,因此它在else分支中是undefined-> MDN:var
标签: javascript jquery variables if-statement scope