J'ai reçu le "Nouveau formulaire utilisateur". Il existe trois niveaux de clearence:Javascript ne parvient pas à masquer des DIVs
- client
- clientContact
- clientRepresentative
Et il y a des champs, comme newMail, newPostalCode, etc.
Voici un I code j'utilise pour afficher un élément:
function doShow(obj) {
document.getElementById(obj).style.display = '';
}
Et un code J'utilise pour cacher un élément:
function doHide(obj) {
document.getElementById(obj).style.display = 'none';
}
Il fonctionne pour les petits blocs de données. Lors de la création d'un utilisateur, le niveau de clairance est spécifié, s'il est clientRepresentative, le champ approprié est affiché. Dans l'exemple, le client a une seule adresse e-mail, clientRepresentative a deux adresses e-mail et clientContact en a trois.
Mais ce ne fonctionne pas!. Si je choisis le client, il y a un e-mail, comme prévu, mais si je choisis clientContact et que je passe à clientRepresentative, le champ redondant (e-mail3) est ne pas être caché. Je crois qu'il s'agit d'un problème JavaScript, aidez-moi, car mon niveau de colère atteint le plafond.
modifier: J'ai oublié de coller la fonction utilisée pour afficher/masquer les éléments.
if (clearenceLevel != "Chose...") {
if (clearenceLevel == "client") {
doShow("newMail");
doHide("newMail2");
doHide("newMail3");
doShow("newNip");
doShow("newRegon");
doShow("newStreet");
doHide("newHeadquarters");
doShow("newAddress");
doShow("newPostalCode");
doShow("kptekst");
doShow("newCity");
doShow("newAccount");
doShow("newState");
doHide("newStatus");
doHide("newPassword");
} else if (clearenceLevel == "clientRepresentative") {
doShow("newMail");
doShow("newMail2");
doHide("newStatus");
doHide("newMail3");
doHide("newNip");
doHide("newRegon");
doHide("newStreet");
doHide("newHeadquarters");
doHide("newAddress");
doHide("newPostalCode");
doHide("newCity");
doHide("newAccount");
doHide("newState");
doHide("kptekst");
doShow("newPassword");
} else if (clearenceLevel == "clientContact") {
doShow("newMail");
doShow("newMail2");
doShow("newMail3");
doHide("newNip");
doHide("newRegon");
doHide("newStatus");
doHide("newStreet");
doHide("newHeadquarters");
doHide("newAddress");
doHide("newPostalCode");
doHide("newCity");
doHide("newAccount");
doHide("newState");
doHide("kptekst");
doHide("newPassword");
}
}
Qu'est-ce que vous passez pour doShow et DoHide? Il semble que ce devrait être une chaîne (l'identifiant de l'élément) mais l'argument est appelé "obj". Si vous avez passé un objet élément DOM, le code ne fonctionnerait pas. – Douglas
Êtes-vous sûr à 100% que chaque ID existe dans le document une seule fois? –
Vous avez vraiment besoin d'outils appropriés pour le débogage de ces choses, comme Firebug (sur Firefox) ou Fiddler (IE). – tdammers