求助 初级的jq问题

weixin_39788242 2017-08-09 03:49:53
自己尝试着做个简易的购物车 求各位大神帮我看下 为什么alert 不到zongjia1。


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="js/jquery-3.1.0.min.js"></script>
</head>
<body>
¥<span class="heiheihei">116.00</span>元
<br />

<input class="shuliang" type="text" value="" />
<img class="upup" src="images/upup.png" />
<img class="downdown" src="images/donw.png" />
<br />
¥<span class="hohoho">26</span>元
<br />
<input class="shuliang-2" type="text" value="" />
<img class="upup-2" src="images/upup.png" />
<img class="downdown-2" src="images/donw.png" />
<br />
总价:¥<span class="hahaha"></span>元
</body>
<script>

$(document).ready(function(){

var i = 1;
var p = 1;
var a = Number($('.heiheihei').html());
var b = Number($('.hohoho').html());

$('.shuliang').val(i);
$('.upup').click(function(){
$('.shuliang').val(++i);
zongjia1 = Number($('.heiheihei').html()) + a;
$('.heiheihei').html(zongjia1);

});
$('.downdown').click(function(){
$('.shuliang').val(--i);
zongjia1 = Number($('.heiheihei').html()) - a;
if(i<1){
i=1;
$('.shuliang').val(i);
zongjia1 = Number($('.heiheihei').html())*i;

}
$('.heiheihei').html(zongjia1);

});



$('.shuliang-2').val(p);
$('.upup-2').click(function(){
$('.shuliang-2').val(++p);
zongjia2 = Number($('.hohoho').html()) + b;
$('.hohoho').html(zongjia2);
});
$('.downdown-2').click(function(){
$('.shuliang-2').val(--p);
zongjia2 = Number($('.hohoho').html()) - b;
if(p<1){
p=1;
$('.shuliang-2').val(p);
zongjia2 = Number($('.hohoho').html())*p;

}

$('.hohoho').html(zongjia2);
});
// zuihou = Number($('.heiheihei').html(zongjia1)) + Number($('.hohoho').html(zongjia2));
alert(zongjia1);
// $('.hahaha').html(zongjia1+zongjia2);
})

</script>
</html>
...全文
174 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_39788242 2017-08-10
  • 打赏
  • 举报
回复
引用 6 楼 showbo 的回复:
[quote=引用 3 楼 weixin_39788242 的回复:] [quote=引用 2 楼 showbo 的回复:] zongjia1变量式在事件中赋值的,你没有执行过事件,不是通过var申明的对象当然不存在,所以报错了,自己好好看下这个:javascript运行机制浅析
谢谢,大概的意思明白了 但。。。应该怎么修改? 我的本意是想让zongjia1和zongjia2作为全局变量在句尾调用,但是现在失败了。[/quote] 定义那2个变量并赋值为单价,看红色部分,设置总费用独立为一个函数,事件中执行一次 $(document).ready(function () { var i = 1; var p = 1; var a = Number($('.heiheihei').html()); var b = Number($('.hohoho').html()); $('.shuliang').val(i); var zongjia1 = 116, zongjia2 = 26; function setTotal() {//////// zuihou = Number($('.heiheihei').html(zongjia1)) + Number($('.hohoho').html(zongjia2)); $('.hahaha').html(zongjia1 + zongjia2); } $('.upup').click(function () { $('.shuliang').val(++i); zongjia1 = Number($('.heiheihei').html()) + a; $('.heiheihei').html(zongjia1); setTotal()////////// }); $('.downdown').click(function () { $('.shuliang').val(--i); zongjia1 = Number($('.heiheihei').html()) - a; if (i < 1) { i = 1; $('.shuliang').val(i); zongjia1 = Number($('.heiheihei').html()) * i; } $('.heiheihei').html(zongjia1); setTotal()////////// }); $('.shuliang-2').val(p); $('.upup-2').click(function () { $('.shuliang-2').val(++p); zongjia2 = Number($('.hohoho').html()) + b; $('.hohoho').html(zongjia2); setTotal()////////// }); $('.downdown-2').click(function () { $('.shuliang-2').val(--p); zongjia2 = Number($('.hohoho').html()) - b; if (p < 1) { p = 1; $('.shuliang-2').val(p); zongjia2 = Number($('.hohoho').html()) * p; } $('.hohoho').html(zongjia2); setTotal()////////// }); setTotal(); })[/quote] 好了 是我自己改的问题 谢谢大神
weixin_39788242 2017-08-10
  • 打赏
  • 举报
回复
引用 6 楼 showbo 的回复:
[quote=引用 3 楼 weixin_39788242 的回复:] [quote=引用 2 楼 showbo 的回复:] zongjia1变量式在事件中赋值的,你没有执行过事件,不是通过var申明的对象当然不存在,所以报错了,自己好好看下这个:javascript运行机制浅析
谢谢,大概的意思明白了 但。。。应该怎么修改? 我的本意是想让zongjia1和zongjia2作为全局变量在句尾调用,但是现在失败了。[/quote] 定义那2个变量并赋值为单价,看红色部分,设置总费用独立为一个函数,事件中执行一次 $(document).ready(function () { var i = 1; var p = 1; var a = Number($('.heiheihei').html()); var b = Number($('.hohoho').html()); $('.shuliang').val(i); var zongjia1 = 116, zongjia2 = 26; function setTotal() {//////// zuihou = Number($('.heiheihei').html(zongjia1)) + Number($('.hohoho').html(zongjia2)); $('.hahaha').html(zongjia1 + zongjia2); } $('.upup').click(function () { $('.shuliang').val(++i); zongjia1 = Number($('.heiheihei').html()) + a; $('.heiheihei').html(zongjia1); setTotal()////////// }); $('.downdown').click(function () { $('.shuliang').val(--i); zongjia1 = Number($('.heiheihei').html()) - a; if (i < 1) { i = 1; $('.shuliang').val(i); zongjia1 = Number($('.heiheihei').html()) * i; } $('.heiheihei').html(zongjia1); setTotal()////////// }); $('.shuliang-2').val(p); $('.upup-2').click(function () { $('.shuliang-2').val(++p); zongjia2 = Number($('.hohoho').html()) + b; $('.hohoho').html(zongjia2); setTotal()////////// }); $('.downdown-2').click(function () { $('.shuliang-2').val(--p); zongjia2 = Number($('.hohoho').html()) - b; if (p < 1) { p = 1; $('.shuliang-2').val(p); zongjia2 = Number($('.hohoho').html()) * p; } $('.hohoho').html(zongjia2); setTotal()////////// }); setTotal(); })[/quote] 不管用啊 初始的价格加在一起了 但是不会随着两个单价因为数量的变动而变动 求大神解惑
weixin_39788242 2017-08-10
  • 打赏
  • 举报
回复
引用 6 楼 showbo 的回复:
[quote=引用 3 楼 weixin_39788242 的回复:] [quote=引用 2 楼 showbo 的回复:] zongjia1变量式在事件中赋值的,你没有执行过事件,不是通过var申明的对象当然不存在,所以报错了,自己好好看下这个:javascript运行机制浅析
谢谢,大概的意思明白了 但。。。应该怎么修改? 我的本意是想让zongjia1和zongjia2作为全局变量在句尾调用,但是现在失败了。[/quote] 定义那2个变量并赋值为单价,看红色部分,设置总费用独立为一个函数,事件中执行一次 $(document).ready(function () { var i = 1; var p = 1; var a = Number($('.heiheihei').html()); var b = Number($('.hohoho').html()); $('.shuliang').val(i); var zongjia1 = 116, zongjia2 = 26; function setTotal() {//////// zuihou = Number($('.heiheihei').html(zongjia1)) + Number($('.hohoho').html(zongjia2)); $('.hahaha').html(zongjia1 + zongjia2); } $('.upup').click(function () { $('.shuliang').val(++i); zongjia1 = Number($('.heiheihei').html()) + a; $('.heiheihei').html(zongjia1); setTotal()////////// }); $('.downdown').click(function () { $('.shuliang').val(--i); zongjia1 = Number($('.heiheihei').html()) - a; if (i < 1) { i = 1; $('.shuliang').val(i); zongjia1 = Number($('.heiheihei').html()) * i; } $('.heiheihei').html(zongjia1); setTotal()////////// }); $('.shuliang-2').val(p); $('.upup-2').click(function () { $('.shuliang-2').val(++p); zongjia2 = Number($('.hohoho').html()) + b; $('.hohoho').html(zongjia2); setTotal()////////// }); $('.downdown-2').click(function () { $('.shuliang-2').val(--p); zongjia2 = Number($('.hohoho').html()) - b; if (p < 1) { p = 1; $('.shuliang-2').val(p); zongjia2 = Number($('.hohoho').html()) * p; } $('.hohoho').html(zongjia2); setTotal()////////// }); setTotal(); })[/quote] 还没试呢 等下试试 不过先谢啦
Go 旅城通票 2017-08-09
  • 打赏
  • 举报
回复
引用 3 楼 weixin_39788242 的回复:
[quote=引用 2 楼 showbo 的回复:] zongjia1变量式在事件中赋值的,你没有执行过事件,不是通过var申明的对象当然不存在,所以报错了,自己好好看下这个:javascript运行机制浅析
谢谢,大概的意思明白了 但。。。应该怎么修改? 我的本意是想让zongjia1和zongjia2作为全局变量在句尾调用,但是现在失败了。[/quote] 定义那2个变量并赋值为单价,看红色部分,设置总费用独立为一个函数,事件中执行一次 $(document).ready(function () { var i = 1; var p = 1; var a = Number($('.heiheihei').html()); var b = Number($('.hohoho').html()); $('.shuliang').val(i); var zongjia1 = 116, zongjia2 = 26; function setTotal() {//////// zuihou = Number($('.heiheihei').html(zongjia1)) + Number($('.hohoho').html(zongjia2)); $('.hahaha').html(zongjia1 + zongjia2); } $('.upup').click(function () { $('.shuliang').val(++i); zongjia1 = Number($('.heiheihei').html()) + a; $('.heiheihei').html(zongjia1); setTotal()////////// }); $('.downdown').click(function () { $('.shuliang').val(--i); zongjia1 = Number($('.heiheihei').html()) - a; if (i < 1) { i = 1; $('.shuliang').val(i); zongjia1 = Number($('.heiheihei').html()) * i; } $('.heiheihei').html(zongjia1); setTotal()////////// }); $('.shuliang-2').val(p); $('.upup-2').click(function () { $('.shuliang-2').val(++p); zongjia2 = Number($('.hohoho').html()) + b; $('.hohoho').html(zongjia2); setTotal()////////// }); $('.downdown-2').click(function () { $('.shuliang-2').val(--p); zongjia2 = Number($('.hohoho').html()) - b; if (p < 1) { p = 1; $('.shuliang-2').val(p); zongjia2 = Number($('.hohoho').html()) * p; } $('.hohoho').html(zongjia2); setTotal()////////// }); setTotal(); })
weixin_39788242 2017-08-09
  • 打赏
  • 举报
回复
引用 4 楼 jslang 的回复:
zongjia1是在$('.upup').click()事件中定义(你没有用var 会隐式的定义成全局变量)并被赋值的,在事件触发之前当然是未定义和没有值的。
嗯 谢谢 看过二楼给的链接后明白了一些 但还是不会改
天际的海浪 2017-08-09
  • 打赏
  • 举报
回复
zongjia1是在$('.upup').click()事件中定义(你没有用var 会隐式的定义成全局变量)并被赋值的,在事件触发之前当然是未定义和没有值的。
weixin_39788242 2017-08-09
  • 打赏
  • 举报
回复
引用 2 楼 showbo 的回复:
zongjia1变量式在事件中赋值的,你没有执行过事件,不是通过var申明的对象当然不存在,所以报错了,自己好好看下这个:javascript运行机制浅析
谢谢,大概的意思明白了 但。。。应该怎么修改? 我的本意是想让zongjia1和zongjia2作为全局变量在句尾调用,但是现在失败了。
Go 旅城通票 2017-08-09
  • 打赏
  • 举报
回复
zongjia1变量式在事件中赋值的,你没有执行过事件,不是通过var申明的对象当然不存在,所以报错了,自己好好看下这个:javascript运行机制浅析
weixin_39788242 2017-08-09
  • 打赏
  • 举报
回复
求各位大神帮忙

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧