2014-10-22 9 views
0

Я работаю над проектом, в котором я ссылаюсь на переменную в одном объекте/функции от другого. Однако я всегда возвращаю false. Я не уверен, правильно ли я это называю.Всегда возвращает false | Javascript | objects

Вот функция проверки:

app.validation = function(){ 
    'use strict'; 
    var validCheck = true; 

    if((app.process.user.length < 3) || (app.process.user.length > 50)){ 
     validCheck = false; 
     window.alert("The username is not acceptable. Example: username"); 
    }; 
    if((app.process.name.length < 3) || (app.process.name.length > 50) || (!app.process.name.indexOf(" ") === -1)){ 
     validCheck = false; 
     window.alert("The name is not acceptable. Example: John Smith"); 
    }; 
    if((app.process.email.length < 3) || (app.process.email.length > 100) || (!app.process.email.indexOf("@") === -1)){ 
     validCheck = false; 
     window.alert("The email is not acceptable. Example: [email protected]"); 
    }; 
    if((app.process.passlength < 6) || (app.process.pass.length > 20)){ 
     validCheck = false; 
     window.alert("The password is not acceptable. Example: password"); 
    }; 
    if((app.process.age.length < 1) || (app.process.age.length > 2)){ 
     validCheck = false; 
     window.alert("The age is not acceptable. Example: 22"); 
    }; 
    return validCheck; 
}; 

Это где переменная хранится:

app.process = function(){ 
    'use strict'; 
    var user = document.getElementById("user").value; 
    var name = document.getElementById("name").value; 
    var email = document.getElementById("email").value; 
    var pass = document.getElementById("pass").value; 
    var age = document.getElementById("age").value; 

    var test = app.validation(); 
    console.log(test); 
    if(!test){ 
     window.alert("Try Again."); 
    }else{ 
     app.reset(); 
     app.members[app.members.length] = new app.Member(user, name, email, pass, age); 
     app.printMembers(); 
    }; 
}; 

Существует гораздо больше к этому коду, однако, в большой, чтобы разместить сообщение. это две функции, вызывающие проблему.

ответ

1

Вы не можете получить доступ к переменным app.process, поскольку они являются частными для функции. Вам необходимо передать эти значения app.validation, чтобы их проверить.

Как я хотел бы сделать это является

var data = { 
    user: document.getElementById("user").value, 
    name: document.getElementById("name").value, 
    email: document.getElementById("email").value, 
    pass: document.getElementById("pass").value, 
    age: document.getElementById("age").value 
}; 

var test = app.validation(data); 

И валидация

app.validation = function(data) { ... 

И заменить все app.process.field для data.field.

+0

Были ли данные определены в методе процесса или во всем мире? – hudsond7

+0

Внутри, всегда внутри :) глобальные переменные из ада. –

+0

Благодарим вас за помощь. – hudsond7

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