if语句未返回预期结果

时间:2015-09-03 19:45:27

标签: javascript

如果用户在密码字段中输入字符串'secret',它应该在最后一个else语句中显示该文本。它只返回第一个语句中的语句。有人可以解释原因吗?

var pword = document.getElementById('password'); //create event listener on password field's blur event
pword.addEventListener('blur', passwordCheck, false);
var messageField = document.createElement('div');
messageField.setAttribute('id', 'forMessage');
var fieldPassword = document.getElementById('password');
//get form id to create parentNode for message field
var form = document.getElementById('form');
//append form to add message field div
form.appendChild(messageField);
//add message to messageField
var paragraph = document.createElement('p');
function passwordCheck(){ //check to make sure the password is equal to the string "secret"
    if (fieldPassword !=='secret'){
       var wrongPassword = document.createTextNode('That is not the right password');
       paragraph.appendChild(wrongPassword);
       messageField.appendChild(paragraph);
    }else{
        var correctPassword = document.createTextNode('Good... That is the right password');
        paragraph.appendChild(correctPassword);
        messageField.appendChild(paragraph);
        console.log('made it');
    }
}

2 个答案:

答案 0 :(得分:2)

fieldPassword是输入元素,而不是值,因此请尝试:

fieldPassword.value !== 'secret'

而不是:

fieldPassword !== 'secret'

答案 1 :(得分:0)

看看你做了什么:

  1. var pword = document.getElementById('password');
  2. 然后再次

    1. var fieldPassword = document.getElementById('password');
    2. 为什么呢? - pwordfieldPassword是相同的对象。

      无论如何,到了这一点。表达式fieldPassword !== 'secret'将始终为true,因为fieldPassword是DOM元素,而不是字符串。

      如果你有类似<input type="password" id="password">的内容,那么你可以从value元素的input属性中获取明确的密码文本。

      您可能想要做的是if(fieldPassword.value !== 'secret')