首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我必须调用alert一次才能让javascript工作?

为什么我必须调用alert一次才能让javascript工作?
EN

Stack Overflow用户
提问于 2012-08-18 03:13:24
回答 2查看 93关注 0票数 0

这个问题真的很奇怪。我想做的是将选中的框值添加到隐藏字段中,如果隐藏字段未选中,则从隐藏字段中删除该值。我使用javascript来实现这一点,但是,我发现只有我调用alert一次,代码才能工作,否则就不能工作。谁能告诉我为什么?

代码语言:javascript
复制
var cpo={
    AddCheckList:function(){
    alert('aaaaaaaaaa'); //If I comment this line, the following code won't work.
    $(".BillChecked").change(function() {
            if ($(this).is(':checked')) {
                var idList = $('#CPO_BillList').val() + $(this).attr('value') + ",";
                $('#CPO_BillList').val(idList);
            } else {
                var temp = $('#CPO_BillList').val().replace($(this).attr('value') + ',', '');
                $('#CPO_BillList').val(temp);
            }
            alert($('#CPO_BillList').val());
    });
}

我调用页面底部的cpo.AddCheckList();。

上面是$(document).ready()函数。仅当有一个alert方法被调用一次时才有效。

EN

回答 2

Stack Overflow用户

发布于 2012-08-18 03:22:03

尝试这种方式,检查代码,也避免做循环。

代码语言:javascript
复制
$(document).ready(function(){

    var billChecked = $(".BillChecked");
    var cpoBill = $('#CPO_BillList');

    var cpo = {AddCheckList:function(){

        billChecked.change(function(){

            var checked = $(this).is(':checked');
            var billVal = $(this).val();

            checked ? v = cpoBill.val() + billVal : v = cpoBill.val().replace(billVal + ',', '');
            cpoBill.val(v);
        });
    };

});
票数 0
EN

Stack Overflow用户

发布于 2012-08-18 03:23:50

警告对话框会阻止其余javascript的执行。以下其中一种方法可以正常工作:

将代码放入

代码语言:javascript
复制
$(document).ready(function{
    /*code here*/
});

或者将脚本块放在<body>标记的底部。

此外,您应该将$(".BillChecked")存储在一个变量中,因为每个带有选择器的jQuery调用都是非常昂贵的。

代码语言:javascript
复制
var $billChecked = $(".BillChecked");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12011842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档