0

if...elseステートメントで変数を設定しています。ただし、別の関数で変数を呼び出そうとすると、変数が定義されていないというエラーが表示されます。グローバル変数を設定するにはどうすればよいですか?

function username_check(){  
username = $('#username').val();
if(username == "" || username.length < 7 || username.indexOf(' ') > -1){
    usernameFilled = 0;
else{
    usernameFilled = 1;
}   
}

function email_check(){ 
email = $('#email').val();
if(email == "" || email.indexOf(' ') > -1) {
    emailFilled = 0;
}else{
    emailFilled = 1;
}
}

function password_length(){ 
password = $('#password').val();
if(password == "" || password.indexOf(' ') > -1) {
    passwordFilled = 0;
}else{
    passwordFilled = 1;
}
}

function password_check(){  
  password2 = $('#password2').val();
  password = $('#password').val();
  if(password2.length > 7 && password2 == password) {
    password2Filled = 1; /**setting the variable**/
  }else{
    password2Filled = 0;
  }
}

function upload(){
if (usernameFilled == 0 || emailFilled == 0 || passwordFilled == 0 || password2Filled == 0) {
    alert('All fields are required');
}else{
    /**upload to database**/
}
4

3 に答える 3

1

おそらく関数を間違った順序で呼び出しているか、何か間違ったことをしている可能性があります。コードを少し編集してテストしたため、問題なく動作します。

function password_check(){  
  var password2 = $('#password2').val(), 
      password = $('#password').val();
  password2Filled = (password2.length > 7 && password2 == password) ? 1:0;
}

function upload(){
    console.log(password2Filled); //prints 0 or 1 just fine ???
}

$("#btn").on('click', function() {
    password_check();
    upload();
});

フィドル

于 2012-07-04T02:58:30.330 に答える
1

グローバル変数を設定するのではなく、password2Filled を返して関数の外に保存します。次に、次の関数に渡すことができます。

すなわち

function password_check(){  
   password2 = $('#password2').val();
   password = $('#password').val();
   if(password2.length > 7 && password2 == password) {
       password2Filled = 1; /**setting the variable**/
   }else{
       password2Filled = 0;
   }
   return password2Filled;
}

function upload(password2Filled)
{
    if (password2Filled == 0) { /**calling the variable**/
        alert('All fields are required');
    }else{
        /**upload to database**/
    }
}

....

var passwordsOk = password_check();
upload(passwordOk);

グローバル変数は避けるようにしてください。それらはプログラムを乱雑にし、コードの流れを理解し、再利用可能なコードを作成することを困難にします。

于 2012-07-04T02:54:33.347 に答える
0

JavaScriptでグローバル変数を作成するには、すべての関数の範囲外でグローバル変数を定義します。そのようです:

<script type="text/javascript">
var globalVariable;


function blah()
{
    globalVariable = "something";
}

function anotherFunction()
{
    alert(globalVariable);
}
</script>

ECMAScript / JavaScriptのドキュメントには、「グローバルオブジェクト」は実行コンテキストの外部で作成する必要があると記載されています。

于 2012-07-04T02:48:28.983 に答える