javascript - Pourquoi ne puis-je pas modifier le style de l'invite une fois que le formulaire d'origine a perdu le focus?
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-16 13:38:30
0
1
478

Pour implémenter un formulaire, s'il n'y a aucune saisie dans la colonne de saisie du mot de passe ou si les deux saisies sont incohérentes, l'invite sera affichée, sinon elle sera masquée. Mais l'invite ne s'affiche jamais. Pourquoi ai-je besoin d'aide ?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link type="text/css" href="checkload.css" rel="stylesheet" /> 
<script type="text/javascript">
function checkEmpty(obj){
    if(!obj.value)
        obj.nextSibling.style.display="block";
    else 
        obj.nextSibling.style.display="none";    
}
    
function checkPwd(obj){
    var pwd = document.getElementById("pwd").value;
    var pwdAgain = obj.value;
    if(pwd != pwdAgain)
        obj.nextSibling.style.display="block";
    else
        obj.nextSibling.style.display="none";
}
</script>
<title>用户登录验证</title>
</head>

<body>
<form class="bg">
    <ul>
        <li>用户名:</li>
        <li>输入密码:</li>
        <li>确认密码:</li>
    </ul>
    <p class="list">
        <p><input type="text"/></p>
        <p><input type="password" onblur="checkEmpty(this)" id="pwd"/>
        <span style="display:none">密码不能为空!</span></p>
        <p><input type="password" onblur="checkPwd(this)"/>
        <span style="display:none">密码不一致!</span></p>
        <input type="submit" />
    </p>
</form>
</body>
</html>

code CSS :

@charset "utf-8";
/* CSS Document */
body{font-size:14px; font-family:"微软雅黑";}

body,p,ul,li{margin:0; padding:0; list-style:none;}

.bg{
    width:400px;
    height:180px;
    margin:50px;
    border:3px double #ccc;
    padding:40px;
    background:#CCC;
}


ul{float:left;}

li{
    text-align:right;
    height:50px;
}

.list{float:left;}

p{
    width:320px;
    height:50px;    
}

span{
    float:left;
    padding:0 0 0 10px;
    color:red;
}

#pwd{}
曾经蜡笔没有小新
曾经蜡笔没有小新

répondre à tous(1)
仅有的幸福

Retrouvez le paragraphe suivant dans votre code

        <p><input type="password" onblur="checkEmpty(this)" id="pwd"/>
        <span style="display:none">密码不能为空!</span></p>
        <p><input type="password" onblur="checkPwd(this)"/>
        <span style="display:none">密码不一致!</span></p>

Veuillez supprimer le saut de ligne entre <input/> et <span>.

La propriété

Reason
DOMElement.nextSibling renvoie l'élément DOM frère suivant du nœud. Les sauts de ligne ou les espaces sont comptés comme un nœud de type #text. Votre code précédent nextSibling renvoie un nœud de texte, et la définition de l'attribut style dessus ne répondra certainement pas à vos besoins.

Si vous n'y croyez pas, vous pouvez aussi le vérifier : sans changer votre code html, remplacez DOMElement.nextSibling dans le script par DOMElement.nextSibling.nextSibling et cela fonctionnera normalement.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal