2014-01-08 3 views
0

Я начинаю работать в 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" /> 

Когда я использую оповещения (а), он отлично работает, но когда использовать переменную x не работает

+0

Переменная 'x' не волшебным образом обновляется при обновлении' a'. Вы просто получаете значение 'a' в тот момент, когда вы строите строку. – epascarello

ответ

0

Да, я согласен с комментарием: «Вы только что получили значение a в тот момент, когда вы строите строку».

Дополнительные замечания о том, что происходит:

В Javascript, строки inmutable. Итак, в первый раз, когда вы присваиваете значение 'a' 'x', копия 'a' (значение в этот момент) присваивается 'x'. Независимо от того, изменится ли позднее «а», потому что вы не назначаете «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/

Я надеюсь, что это помогает.

2

Вы слишком рано определяете x. Определите x в show с текущим значением a.

var a = ""; 
function setvalue(){ 
    a = 1; 
    return a; 
} 

function show(){ 
    var x = "hola" + a; 
    alert(x); 
} 
Смежные вопросы