0

我是这个网站的第一次用户,所以请原谅我的错误。我只是尝试使用 .click() 根据可以单击的 4 个自定义按钮来更新名为“v1PackCharge”的变量。我遇到的问题是我无法在 .click() 之外获取变量,以便我在代码中的进一步计算中使用。我正在尝试使用 .click() 做的事情,还是有更简单的方法可以做到这一点?我可以只使用复选框,但我真的希望能够使用我的自定义按钮。

var v1PackCharge;
$('#v1BasPkBTN, #v1IntExtPkBTN, #v1FamFlydPkBTN, #v1FulDetPkBTN').click(function(){
    if(this.id == 'v1BasPkBTN'){
        v1PackCharge = totalBasic;
    }else if(this.id == 'v1IntExtPkBTN'){
        v1PackCharge = totalIntExt;
    }else if(this.id == 'v1FamFlydPkBTN'){
        v1PackCharge = totalFamousFloyds;
    }else if(this.id == 'v1FulDetPkBTN'){
        v1PackCharge = totalFullDetail;
    }else {
        v1PackCharge = 0.00;
    }
});
alert(v1PackCharge);
4

4 回答 4

1

如果您只想提醒 click 事件中的值,则根本不需要声明 v1PackCharge。你需要做的就是这个

$('#v1BasPkBTN, #v1IntExtPkBTN, #v1FamFlydPkBTN, #v1FulDetPkBTN').click(function(){
    if(this.id == 'v1BasPkBTN'){
        alert(totalBasic);
    }else if(this.id == 'v1IntExtPkBTN'){
        alert(totalIntExt);
    }else if(this.id == 'v1FamFlydPkBTN'){
        alert(totalFamousFloyds);
    }else if(this.id == 'v1FulDetPkBTN'){
        alert(totalFullDetail);
    }else {
        alert(0.00);
    }
}); 

如果您确实需要 v1PackCharge 用于其他功能或其他用途,您可以这样做。将警报功能移动到点击事件中

$('#v1BasPkBTN, #v1IntExtPkBTN, #v1FamFlydPkBTN, #v1FulDetPkBTN').click(function(){   
     if(this.id == 'v1BasPkBTN'){            
            v1PackCharge = totalBasic;            
        }else if(this.id == 'v1IntExtPkBTN'){            
            v1PackCharge = totalIntExt;            
        }else if(this.id == 'v1FamFlydPkBTN'){            
            v1PackCharge = totalFamousFloyds;            
        }else if(this.id == 'v1FulDetPkBTN'){            
            v1PackCharge = totalFullDetail;            
        }else v1PackCharge = 0.00;

        alert(v1PackCharge); 
});

小提琴:http: //jsfiddle.net/Ah4hM/

于 2013-07-09T05:05:12.303 回答
1

您需要有一个单独的函数检查V1PackCharge. 绑定点击事件后立即调用警报只会在页面加载时在警报框中产生未定义的 V1PackCharge 值。

这是一个修改后的示例,显示设置了全局变量V1PackCharge。顺便说一句,我也会this.id通过一个switch声明来代替。

Javascript

var v1PackCharge;
$('#one, #two, #three, #four').click(function(){
    if(this.id == 'one'){
        v1PackCharge = 1;
    }else if(this.id == 'two'){
        v1PackCharge = 2;
    }else if(this.id == 'three'){
        v1PackCharge = 3;
    }else if(this.id == 'four'){
        v1PackCharge = 4;
    }else {
        v1PackCharge = 0;
    }
});

$('#checkV1').click(function() {
    alert(v1PackCharge);
});

HTML

<input type="button" id="one" value="one"/>
<input type="button" id="two" value="two"/>
<input type="button" id="three" value="three"/>
<input type="button" id="four" value="four"/>
<input type="button" id="checkV1" value="check var"/>

演示:http: //jsfiddle.net/45SdJ/

于 2013-07-09T05:08:17.880 回答
0

在这种情况下,警报将显示undefined,因为它是在实际点击发生之前执行的。

但是 的值v1PackCharge是全局设置的,您可以在点击处理程序之外使用它。唯一的事情是你需要修改测试用例

演示:小提琴

于 2013-07-09T05:02:09.767 回答
0

我不认为需要 var v1PackCharge 除非您使用它来保持一些价值。因为现在你只是硬编码它的值。如果您只是在 click() 内移动警报,它将返回值。

于 2013-07-09T05:52:58.730 回答