基于IF语句添加变量无效
Adding a Variable based on IF Statement Not Working?
我有几个变量,然后根据用户输入添加。只有一个例外。用户可以选择用现金或信用卡支付。如果他们选择信用卡选项,将增加.50美元的附加费。问题是我无法将附加费加到总额中。
这是我的代码(我已经删除了其他选项,留下了一个来减少代码。):
$(function() {
var surcharge = parseFloat("0"),
dsT = parseFloat("0");
$('input[type=radio][name=CAT_Custom_1657686]').on('ifChecked', function(event){
if (this.value == 'I will pay with cash at purchase pickup') {
var surcharge = parseFloat("0");
amountTotal();
} else {
var surcharge = parseFloat(".50");
amountTotal();
}
});
$("#CAT_Custom_1657649").change(function (){
var ds = parseFloat("6.00");
dsQ = $(this).val(),
dsT = ds * parseFloat(dsQ);
amountTotal();
});
function amountTotal() {
var myTotal = surcharge + dsT;
$("#Amount").val(myTotal);
console.log(myTotal);
}
$('input').iCheck({
checkboxClass: 'icheckbox_square',
radioClass: 'iradio_square',
aria: true
});
});
下面是显示问题的工作代码的fiddle链接。
正如你将看到的,我正在使用iCheck来设置无线电输入的样式。我不认为是它造成了问题。
我该如何解决此问题?
您正在再次定义作用域中的变量。
在为变量赋值时,去掉那些var
关键字。
这个
var surcharge = parseFloat("0");
应该被这个取代
surcharge = parseFloat("0");
另一个也是如此。
使用
var
将创建变量的新实例,因此不会更改全局变量的值。var surcharge
将为附加费创建新的local scope
这个:
if (this.value == 'I will pay with cash at purchase pickup') {
surcharge = parseFloat("0");
amountTotal();
} else {
surcharge = parseFloat(".50");
amountTotal();
}
Fiddle here
问题在于变量dsT
和surcharge
的范围。
一个好的解决方案是在类似的addTotal
方法中找到它们的值
$(function() {
var surcharge = parseFloat("0"),
dsT = parseFloat("0");
$('input[type=radio][name=CAT_Custom_1657686]').on('ifChecked', amountTotal);
$("#CAT_Custom_1657649").change(amountTotal);
function amountTotal() {
var ds = 6,
dsQ = $("#CAT_Custom_1657649").val(),
dsT = ds * parseFloat(dsQ),
surcharge = $('input[type=radio][name=CAT_Custom_1657686]:checked').data('surchange');
var myTotal = surcharge + dsT;
$("#Amount").val(myTotal);
}
//iCHECK PLUGIN
$('input').iCheck({
checkboxClass: 'icheckbox_square',
radioClass: 'iradio_square',
aria: true
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://icheck.fronteed.com/icheck.js"></script>
<link href="http://icheck.fronteed.com/skins/all.css" rel="stylesheet" />
<label for="CAT_Custom_1657649">Daily Special</label>
<select name="CAT_Custom_1657649" id="CAT_Custom_1657649" class="cat_dropdown">
<option value="0" selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<br>
<br>
<label>Payment</label>
<br>
<input name="CAT_Custom_1657686" id="CAT_Custom_1657686_0" value="I will pay with cash at purchase pickup" type="radio" data-surchange="0"> I will pay with cash at purchase pickup
<br>
<input name="CAT_Custom_1657686" id="CAT_Custom_1657686_1" value="I will pay with credit/debit card immediately" type="radio" data-surchange="0.5"> I will pay with credit/debit card immediately
<br>
<br>Amount:
<input type="text" name="Amount" id="Amount" class="purchase-amount" readonly />
相关文章:
- 变量赋值无效
- jquery$(“#someID”).width(变量+'px')有效,现在无效
- React:未捕获的不变量冲突:ReactDOM.render():无效的组件元素
- 变量在 JavaScript 中无效
- Javascript 表单验证 - PHP 变量作为 VALUE - 无效输入
- 变量传递无效-值未定义
- 基于IF语句添加变量无效
- if语句没有'计数器变量无效
- Javascript模糊处理程序,它重用变量名,使搜索和替换无效
- 为什么第一个有效,第二个无效?全局和私有变量声明
- 错误:无效XML:jquery或将多个根转换为多个变量
- 如何使用jQuery在变量中查找无效的未闭合XML标记
- 变量名称-赋值中左侧无效
- 不变量冲突:对象作为React的子对象是无效的
- 在Angular指令中,大写只对blur变量有效,而对set变量无效
- 流星环境变量在生产环境中无效
- Javascript将类作用域赋给局部变量是无效的
- IE8中变量对象属性的无效参数问题
- 值“XX/YY/ZZZZ”对日期时间变量无效
- 将php echo设置为javascript变量无效数据