Maison > interface Web > js tutoriel > le corps du texte

Solution au problème de l'utilisation de jQuery pour exploiter dynamiquement le nom dans IE7

小云云
Libérer: 2017-12-29 13:33:19
original
1489 Les gens l'ont consulté

Dans IE7, Jquery ne peut pas être utilisé pour exploiter dynamiquement l'attribut name des éléments de la page. Comment résoudre ce problème ? Cet article vous explique principalement comment résoudre le problème de l'utilisation de jQuery pour exploiter dynamiquement les noms dans IE7. Les amis qui en ont besoin peuvent s'y référer. J'espère que cela pourra aider tout le monde.

Problème : Jquery ne peut pas être utilisé pour exploiter dynamiquement l'attribut name des éléments de page dans IE7.

Il y a un problème dans le projet. Les machines de certains clients ont parfois des problèmes. L'arrière-plan ne peut pas obtenir les valeurs des données du front.

Cependant, l'environnement de développement et de test ne peut toujours pas reproduire le problème. C'est l'astuce. Si vous ne pouvez pas le reproduire, vous ne pouvez pas le déboguer. Vous ne pouvez pas savoir s'il y aura un tel problème après la modification.

Pensez-y, la seule différence par rapport à l'environnement client peut être un problème de cache js, puis ajoutez un paramètre d'heure actuelle à toutes les références de fichiers js, mais le problème existe toujours.

La version initialement spécifiée était IE8, donc je n'ai jamais pensé qu'il y aurait des problèmes de compatibilité de version. Après avoir mentionné que nous utilisons jquery, l'émergence de jqeruy n'est-elle pas censée résoudre les problèmes de compatibilité des navigateurs.

Au diable le problème, c'est le vrai problème de version. Étant donné que certaines pages doivent utiliser le mode de compatibilité d'IE8, mais que le mode de compatibilité est en fait compatible avec ce qui suit, n'est-il pas compatible avec IE7 ?

Je l'ai donc testé localement en utilisant la démo.

<form id="form1" runat="server">
  <p id="p">
   <input id="input" name="1" value="123" />
  </p>
 </form>
 <script src="jquery-1.6.4.min.js"></script>
 <script>
  $("#input").attr("name", "myname");
  alert("name:" + $("#input").attr("name") + "***html:" + $("#p").html());
 </script>
Copier après la connexion

IE8 :

ok !

Mode de compatibilité IE8 :

?? Pourquoi $("#input").attr("name") obtient-il la valeur modifiée ? le nom obtenu par $("#p").html() est toujours la valeur d'origine ? ?

F12 pour afficher le code HTML généré

Qu'est-ce que submitName ? Le nom n’a évidemment pas changé. submitName doit être généré par jquery, et lors de la lecture du nom, la valeur de submitName est également lue directement.

Alors pourquoi n'y a-t-il pas de submitName dans la valeur de $("#p").html() ? ? Je ne sais pas comment la méthode html dans jquery est implémentée~~ La méthode d'implémentation dans le projet

est similaire à :

<form id="form1" runat="server">
  <p id="p">
   <input id="input" name="1" value="123" type="text" />
  </p>
  <p id="p2">
  </p>
 </form>
 <script src="jquery-1.6.4.min.js"></script>
 <script>
  //alert("name:" + $("#input").attr("name") + "***html:" + $("#p").html());
  $("#input").attr("name", "myname");
  $("#p2").html($("#p").html());
  var nameVal = $("#p2").find("input[name='myname']").val();
  alert(nameVal);
 </script>
Copier après la connexion

De cette façon, la valeur est normale dans IE8 et Le mode de compatibilité Google Chrome IE8 ne peut pas obtenir la valeur. [Ne demandez pas pourquoi vous devez attribuer et récupérer des valeurs comme celle-ci, il s'agit d'une implémentation « similaire » de la démo, et c'est un framework]

Solution :

1 Modifiez le nom directement avec jquery puis accédez-y. Le nom est ok, bien que submitName soit généré au milieu.

2. Vous pouvez d'abord $("#p2").html($("#p").html()); puis modifier .attr("name", "myname");

3. Le HTML peut être épissé directement. $("#p").html("")

Finalement, Baidu a cliqué, Il s'avère qu'IE7 ne peut pas utiliser document.getElementsByName() pour accéder à la valeur de nom créée et modifiée dynamiquement par js.

Recommandations associées :

Exemple détaillé de node.js utilisant fs.rename pour forcer le renommage ou le déplacement d'un dossier

Comment résoudre le problème selon lequel les éléments dom dans le navigateur IE8 ne distinguent pas la casse de l'attribut name

Utilisez l'attribut name du HTML pour obtenir les éléments dom

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal