我有一组变量,用来判断调查中的问题是否得到了回答,它们最初设置为false:q0=false; q1=false; qX=false;。然后在主体中,我有几个绑定了.change(function(){ counter_radio(q#,INPUT'S_ID); });的input type="radio"。以下是函数counter_radio()的代码:
function counter_radio(q,id){
if (q===false) {
q=true;
count++;
$("#counter").css("width", count);
$("#percent").text(count + "%");
}
$("span#"+id).append(", "+q);
$("span#"+id).fadeIn();
}我希望计数器只递增一次(第一次从集合中选择一个无线电时)。但是,每次input type=radio更改时,计数器都会递增。我的问题是,q返回true,但q#仍然是false。在php中,我会让q引用q#,这样当q设置为true时,q#也设置为true。javascript中有这样的构造吗?
发布于 2011-11-02 06:05:02
正如其他人所说,像布尔值这样的简单变量在Javascript中是通过值传递的,而不是通过引用传递的,所以没有办法改变这一点。
如果您有多个变量,如下所示:
var q0=false, q1=false, qX=false;然后,将它们放在一个数组中可能会更容易:
var qArray = [false, false, false];然后,因为数组和对象是以可以修改原始数据的方式传递的,所以可以像这样将数组和索引传递给函数,然后就可以修改函数中的原始数据了:
function counter_radio(q, index, id){
if (q[index] === false) {
q[index] = true;
count++;
$("#counter").css("width", count);
$("#percent").text(count + "%");
}
$("span#"+id).append(", " + q[index]);
$("span#"+id).fadeIn();
}
counter_radio(qArray, 2, id);发布于 2011-11-02 05:16:03
您可以将绑定函数更改为:
.change(function(){ q# = counter_radio(q#,INPUT'S_ID); });
并在counter_radio函数的末尾添加一个return q;。
发布于 2011-11-02 05:15:41
这方面没有原生语法,但你可以使用对象:
function counter_radio(q_,id){
if (q_.ref===false) {
q_.ref=true;
count++;
$("#counter").css("width", count);
$("#percent").text(count + "%");
}
$("span#"+id).append(", "+q);
$("span#"+id).fadeIn();
}https://stackoverflow.com/questions/7972985
复制相似问题