2012-01-05 1 views
0

Я получил этуделает Javascript переменной видимым во всем сценарии

$('#password').change(function() { 
    var toSha1 = $('#msisdn').val() + $('#password').val(); 
    var authCode = $.sha1(toSha1); 
}); 

Как я могу сделать переменную AUTHCODE быть видимым во всем сценарии. Например, чтобы это работало должным образом:

$('#password').change(function() { 
    var toSha1 = $('#msisdn').val() + $('#password').val(); 
    var authCode = $.sha1(toSha1); 
}); 
alert(authCode); 

Я попытался определив его без ключевого слова «вар», но это, похоже, не работает.

Редакцией: вот источник

<div data-role="content"> 
    <textarea id='resultArea'></textarea> 
    <label for='msisdn'>MSISDN:</label> 
    <input type='text' id='msisdn' value='+359899888777'> 
    <label for='authCode'>authCode:</label> 
    <input type='text' id='authCode' value='8bcac5dabf06219843a5a3b755c47e69600e050a'> 
    <label for='password'>Password:</label> 
    <input type='password' id='password' value='123'> 
    <button data-role='button' data-inline='true' data-theme='e' id='register'>Register</button> 
    <button data-role='button' data-inline='true' data-theme='e' id='login'>Login</button> 
</div><!-- /content --> 
<script> 
$('#resultArea').hide(); 
$('#password').change(function() { 
    var toSha1 = $('#msisdn').val() + $('#password').val(); 
    window.authCode = $.sha1(toSha1); 
}); 
alert(window.authCode); 
</script> 

ответ

3

Чтобы сделать его глобальным явно:

window.authCode = $.sha1(toSha1); 

Глобальные переменные свойства window объекта.

Обратите внимание, что в вашем коде есть отдельная проблема: вы сообщаете значение authCode сразу после подключения обработчика, а не при возникновении события change. Смотрите комментарии:

$('#resultArea').hide();    // Happens immediately 
$('#password').change(function() {  // change() call happens immediately, setting up the handler 
    // ...but this code runs when the handler is *called*, not inline with the code above and below 
    var toSha1 = $('#msisdn').val() + $('#password').val(); 
    window.authCode = $.sha1(toSha1); 
}); 
alert(window.authCode);    // Happens immediately after the calls above 
+0

ок я использовал window.authCode InstEd из вар AUTHCODE и AUTHCODE, но когда Я использую alert (authCode), ничего не происходит, и когда u sing alert (window.authCode) печатает "undefined". Посмотрите на мой первый комментарий к источнику – user1113314

+0

@ user1113314: Это потому, что ваше «предупреждение» происходит до того, как событие «change» будет запущено. –

+0

Спасибо вам большое! Я это полностью понял :) – user1113314

1

изменение:

var authCode = $.sha1(toSha1);

в

window.authCode = $.sha1(toSha1);

Смежные вопросы