JQuery val est indéfini?

J'ai ce code:

<input type="hidden" id="editorTitle" name="title" value="home"> <textarea name="text" id="editorText"></textarea> 

Mais quand j'écris $('#editorTitle').val() et $('#editorText').html() , $('#editorTitle').val() est 'indefini' et $('#editorText').html() est vide?

Qu'est-ce qui ne va pas?


Modifier:

Voici mon code complet:

 function openEditor() { $("#editor").show().animate({ width: 965, height: 380 }, 1500); $("#editor textarea").show(); } function closeEditor() { $("#editor").animate({ width: 985, height: 1 }, 1500, function () { $("#editor").hide(); $("#editor textarea").hide(); }); } function setedit() { $.ajax({ type: "POST", url: "engine.php", data: "title=" + $('#editorTitle').attr('value') + "&text=" + $('#editorText').html(), beforeSend: function () { $('#mainField').html('<img src="data/images/loader.gif" alt="Loading...">'); }, success: function (msg) { alert(msg); closeEditor(); search(); } }); } function search() { $('#title').val($('#search').val()); $.get('engine.php?search=' + $('#search').val(), function (data) { $('#mainField').html(data); }); $.get('engine.php?raw=true&search=' + $('#search').val(), function (data2) { $('#editorText').html(data2); }); $.get('engine.php?title=true&search=' + $('#search').val(), function (data2) { $('#h1').html(data2); // Row 152 $('#editorTitle').html(data2); }); } $(document).ready(function () { $("#ready").html('Document ready at ' + event.timeStamp); }); 

Mais qu'est-ce qui ne va pas?!?!

Vous avez probablement inclus votre JavaScript avant le HTML: exemple .

Vous devez soit exécuter votre JavaScript lorsque la fenêtre se chargera (ou mieux, lorsque le DOM est complètement chargé), ou vous devriez inclure votre JavaScript après votre HTML: exemple .

Vous devriez appeler les événements après la fin du document , comme ceci:

 $(document).ready(function () { // Your code }); 

C'est parce que vous essayez de manipuler des éléments avant qu'ils ne soient rendus par le navigateur.

Donc, dans le cas où vous l'avez posté, cela devrait ressembler à quelque chose comme ça

 $(document).ready(function () { var editorTitle = $('#editorTitle').val(); var editorText = $('#editorText').html(); }); 

J'espère que cela aide.

Conseils: enregistrez toujours votre objet jQuery dans une variable pour une utilisation ultérieure et seul le code qui doit vraiment être exécuté après le chargement du document devrait entrer dans la fonction ready ().

DddddMVM MarcoAFMachea Da MarcoHeaMFMMdiceHachea Da MarcoAndeaeaFMMMTMFFFachea Da MarcoAndeaMacheaMacheauvidenceeaeaeaeaeaeaeaAlddidenceAuderHeaMMMMMIEAFMMachéesAficidenceFenddetadin

 $(document).ready(function () { //your jQuery function }); 

Essayez: $('#editorTitle').attr('value') ?

Vous pouvez oublier d'envelopper votre objet avec $()

  var tableChild = children[i]; tableChild.val("my Value");// this is wrong 

Et le ccorrect est

 $(tableChild).val("my Value");// this is correct 

C'est stupide mais pour référence future. J'ai mis tout mon code dans:

 $(document).ready(function () { //your jQuery function }); 

Mais cela ne fonctionnait toujours pas et il revenait à une valeur undefined . Je vérifie mon DOM HTML

 <input id="username" placeholder="Username"></input> 

Marco MarcoFea Da Marco Marco Marco Marco Daea Da Marco Da Marco Da Marco Da Marco Chamonet Chamen

 var user_name = $('#user_name').val(); 

Making it:

 var user_name = $('#username').val(); 

J'ai résolu mon problème.

Il est donc toujours préférable de vérifier votre code précédent.