Je suis nouveau sur jquery, j'ai essayé d'accéder à l'élément d'entrée via id , je vois qu'il renvoie "undefined" Je l'ai enveloppé dans document.ready; le résultat est le même, voici l'extrait de code

let input;

function maintest() {
   input = $("<input>").attr({"id":"test"});
   input.append("#mainDiv");
   $(document).ready( function(){
     alert($("#test").html());
   });

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<body onload="maintest()">
  <div id="mainDiv"></div>
</body>

Je suis surpris qu'il affiche "undefined" au lieu d'afficher l'intégralité de l'élément d'entrée lorsque j'alerte

0
karansys 12 févr. 2020 à 21:54

1 réponse

Meilleure réponse

Vous avez plusieurs problèmes:

  1. Vous n'avez jamais rien attribué à input avant d'appeler $(input). Si vous essayez de créer un élément d'entrée, vous devez mettre une chaîne littérale <input> dans les arguments.
  2. Vous devez utiliser appendTo(), pas append().
  3. Les éléments input ne sont pas des conteneurs, ils ne contiennent pas de code HTML, donc .html() ne renverra rien (c'est l'équivalent de .innerHTML, pas de .outerHTML). J'ai modifié le script pour utiliser $("#mainDiv").html(), puis il affiche le <input> qu'il contient.
function maintest() {
  let input = $("<input>").attr({
    "id": "test"
  });
  input.appendTo("#mainDiv");
  $(document).ready(function() {
    alert($("#mainDiv").html());
  });
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<body onload="maintest()">
  <div id="mainDiv"></div>
</body>
3
Barmar 12 févr. 2020 à 19:10