我开始使用javascript而且我已经在这场斗争中度过了很多天,在我内心我觉得这很愚蠢而且我很接近解决它,但我看不到它,所以我需要你的帮助。我想用onclick事件更改变量值,我可以这样做,但是当我想在另一个变量中的操作中使用新值时,它不起作用。
这是我想要做的一个例子:
<script type=text/javascript>
a="";
function setvalue(){
a=1;
return a;
}
x= "hola"+a;
function show(){
alert(x);
}
</script>
在html中我有:
<input type="button" onclick="setvalue()" value="1" />
<input type="button" onclick="show()" value="2" />
当我使用alert(a)时,它完全有效但是当使用x变量时它不起作用
答案 0 :(得分:2)
您过早地定义x
。使用当前值x
在show
中定义a
。
var a = "";
function setvalue(){
a = 1;
return a;
}
function show(){
var x = "hola" + a;
alert(x);
}
答案 1 :(得分:0)
是的,我同意评论:“你只是在当前时刻获得了你构建字符串的价值。”
关于正在发生的事情的补充说明:
在Javascript中,字符串是不可变的。因此,第一次将“a”的值分配给“x”时,“a”(该时刻的值)的副本将分配给“x”。无论后来的'a'是否发生变化,因为你没有指定'a'作为参考。
如果您想通过引用分配,则应使用对象。
“对象通过引用传递。它们永远不会被复制。”
样品:
a={name:"cat"};
function setvalue(){
a.name= "dog";
return a.name;
}
x = a;
function show(){
alert(x.name);
}
JSFiddle:http://jsfiddle.net/amontellano/xkZr8/1/
我希望它有所帮助。