Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选中复选框时,将文本框值乘以0.9_Javascript_Jquery_Html - Fatal编程技术网

Javascript 选中复选框时,将文本框值乘以0.9

Javascript 选中复选框时,将文本框值乘以0.9,javascript,jquery,html,Javascript,Jquery,Html,我有一个不可点击的文本框,每次点击一个复选框时,它的值都会被添加到文本框中 然而,我正在努力对这个文本框值进行乘法运算。我有一个复选框,选中后,我想乘以0.9来模拟10%的折扣。我该怎么做呢 以下是我到目前为止得到的但不起作用的内容-文本框值刚好变为0.00: $document.readyfunction${ var总和=0; $“输入[id=10%”。单击函数{ 总和=0; $'input[id=15%]:已选中。每个函数{ 调试器; var val=parseFloat$this.val

我有一个不可点击的文本框,每次点击一个复选框时,它的值都会被添加到文本框中

然而,我正在努力对这个文本框值进行乘法运算。我有一个复选框,选中后,我想乘以0.9来模拟10%的折扣。我该怎么做呢

以下是我到目前为止得到的但不起作用的内容-文本框值刚好变为0.00:

$document.readyfunction${ var总和=0; $“输入[id=10%”。单击函数{ 总和=0; $'input[id=15%]:已选中。每个函数{ 调试器; var val=parseFloat$this.val; 总和*0.9; }; $'sum'.valsum.toFixed2; }; }; 运行CPC总计(单位:%): 收音机盒的HTML格式: 代理折扣 没有一个 九折 八五折
jQuery:您的JS似乎有点困惑。您只附加了一个事件处理程序,并尝试在只包含单个元素的不相关选择器上循环。您还将值相乘,但不将结果分配给任何对象

要实现这一点,您需要将事件处理程序附加到所有单选按钮。然后,您可以使用所有收音机的value属性来保存数字,将总和乘以以获得折扣总数

还请注意,您需要在某个地方存储原始总额,即在应用任何折扣之前的值,以便计算始终从基准数字开始。您可以为此使用数据属性,但请注意,您必须随值一起更新此属性

说了这么多,试试这个:

jQueryfunction${ $'input[name=percentdiscount]'。在'change'上,函数{ applyDiscount; }; $'input[type=checkbox]'。单击函数{ 设和=0; $'input[type=checkbox]:选中。每个函数{ sum+=parseFloat$this.val; }; $'sum'。valsum.toFixed2.数据'total',sum; applyDiscount; }; 函数applyDiscount{ var pc=parseFloat$'input[name=percentdiscount]:选中'.val; $'sum'.valfunction{ 返回$this.data'total'*pc.toFixed2; }; } }; 标签{ 显示:块; } £10.00 £5.00 £19.99 运行CPC总计(单位:%): 代理折扣 没有一个 九折 八五折
您必须使用他们的名称而不是id。因此,您的代码必须如下所示:

$document.readyfunction${ $'input[type=radio]'。在'change'上,函数{ var sum=$输入[名称=百分比折扣]:已选中.attr'value'*0.9; $'sum'.valsum.toFixed2; }; }; 运行CPC总计(单位:%): 代理折扣 没有一个 九折 八五折
这是怎么回事。。。总和*0.9@jsotola将文本框的当前值乘以0.9我认为这不太正确-您已经将值硬编码为折扣百分比,然后输出该任意值的90%。这只是关于他的问题的一个示例。我只是给了他逻辑。不必担心@Rorymcrossant这只会根据您分配给文本框的数据值1000执行计算,但此值会根据选中的复选框不断变化?这是正确的。正如我在问题中提到的,当值发生更改时,您需要确保同时更新数据总数,以便将原始值保存在某个位置,以便进行计算。哦,我明白了,抱歉。做这件事最好的方法是什么?我想你在某个时候打电话给$'sum'.valN?同时设置数据“总计”,N个齿库。我编辑了答案,告诉你怎么做。还要注意,我将折扣计算逻辑提取到它自己的函数中,因为在值更改时以及在选择新折扣值时,您都需要调用它。