各位大大好,本人是JS小白,因为我的网页需要涉及到一个价格的运算,在网上找了一个JS监测checkbox 值并计算价格的代码,就拿来用了,因为需要美化checkbox ,所以用了jquery的一个插件,该插件的样式比较符合我网页的要求,但是该样式需要在每一个checkbox 的外部套一个DIV ,代码如下:
<?php foreach($rows as $row) { ?>
<div class="checkbox" id="<?php echo $row['id']; ?>">
<input name="shop" id="<?php echo $row['id']; ?>" type="checkbox" value="<?php echo $row['menshijiage']; ?>" onclick="javascript:shops(this)" >
<label for="<?php echo $row['id']; ?>"><?php echo $row['jingdianname']; ?></label>
</div>
<?php } ?>JS的代码(计算价格的代码)如下:
<script type="text/javascript">
var sum=0;
function shops(o){
sum+=parseInt(o.checked?o.value:-o.value);//如果选中就加选中的那个复选框的值,否则就减去
jingprice=sum+100;//数值为利润
document.getElementById('gong').innerHTML='共'+jingprice+'元';
}
</script> 现在的情况是,不增加checkbox的DIV,也就是不用美化插件,价格是能正常运算的,但是增加了这个DIV的层,JS 就不管用了,请问各位大大:
怎么修改该JS代码,才能保证JS可以计算价格呢?
divjavascriptjqueryinputfunction
<?php foreach($rows as $row) { ?>
<div class="checkbox" id="<?php echo $row['id']; ?>">
<input name="shop" id="<?php echo $row['id']; ?>" type="checkbox" value="<?php echo $row['menshijiage']; ?>" onclick="javascript:shops(this)" >
<label for="<?php echo $row['id']; ?>"><?php echo $row['jingdianname']; ?></label>
</div>
<?php } ?>JS的代码(计算价格的代码)如下:
<script type="text/javascript">
var sum=0;
function shops(o){
sum+=parseInt(o.checked?o.value:-o.value);//如果选中就加选中的那个复选框的值,否则就减去
jingprice=sum+100;//数值为利润
document.getElementById('gong').innerHTML='共'+jingprice+'元';
}
</script> 现在的情况是,不增加checkbox的DIV,也就是不用美化插件,价格是能正常运算的,但是增加了这个DIV的层,JS 就不管用了,请问各位大大:
怎么修改该JS代码,才能保证JS可以计算价格呢?
divjavascriptjqueryinputfunction
id改成与checkbox的不一样
<div class="checkbox" id="div<?php echo $row['id']; ?>">
1.function shops(o){
alert(123);//看事件方法有没有响应
}
2.把外层div的checkbox样式去掉,看看事件能否响应
所以,您所说的第一种方法可否详细一些呢?
<input name="shop" id="<?php echo $row['id']; ?>"
<label for="<?php echo $row['id']; ?>"
div.id = input.id =label.for
问题是你把 div 的ID与 input的ID设置成一样了,所以label for 对应错了
<input name="shop" id="v1" type="checkbox" value="1" onclick="javascript:shops(this)" >
<label for="v1">aaaa</label>
</div>
<div class="checkbox" id="d2">
<input name="shop" id="v2" type="checkbox" value="1" onclick="javascript:shops(this)" >
<label for="v2">bbbb</label>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
var sum=0;
function shops(o){
sum+=parseInt(o.checked?o.value:-o.value);//如果选中就加选中的那个复选框的值,否则就减去
jingprice=sum+100;//数值为利润
//document.getElementById('gong').innerHTML='共'+jingprice+'元';
alert( jingprice );
}
</script>
你看下这美化插件具体使用AIP吧
onclick="javascript:shops(this)"
1、打个断点测试shops脚本在美化之后能够进去?(ff下firebug调试)
lz测试下这个this变量在美化前后是否有改变,如果指向的不同的对象,就是美化的js有冲突。