2016-07-02 14 views
0

Ich versuche, eine Textarea dynamisch an ein Div mithilfe von jquery anzuhängen. Während der grundlegende Code funktionierte, vermute ich, dass es ein Problem gibt. Dies liegt daran, dass wenn ich versuche, die Breite des Textbereichs unter Verwendung seiner ID zurückzugeben, es eine Null zurückgibt. Das bedeutet, dass die ID nicht richtig eingestellt ist, da das Textfeld auf der Seite zu sehen ist. Hier ist ein Teil des meinem jQuery-Codejquery append-Element-ID wird nicht identifiziert

var form = $('<form/>',{"id" : "AnswerBox"}).appendTo($("#unanswered")); 

$('<textarea/>').attr({ 
    "rows":5, 
    "id" : "AnswerBoxArea", 
    "name" : "answer"    
}).appendTo('form'); 

Wenn ich nun eine Warnung tun

alert($("#AnswerBoxArea").width()); 

Es gibt eine NULL, kann nicht verstehen, warum. Irgendeine Hilfe?

Das Problem, das ich nicht denke, ist nicht die Einstellung der Breite. Es scheint mehr auf der Einstellung der Element-ID. Als ob ich eine Warnung ($ ("# AnswerBoxArea") .trtr ('id')) es gibt undefined

Nichts scheint zu arbeiten. Ich verfüge über den folgenden Code:

$(document).ready(function() { 

$.ajax({ 
     url: "myteacher.php", 
     dataType: "json", 

     success: function(response){ 
         console.log(response); 

         $("#unanswered").append("<p style='text-align:justify; border-radius: 5px; background-color:rgb(220,220,220); padding: 5px'>"+response.qtext+"</p>"); 
          $("#unanswered").append('<form method = "POST" style = "padding:5px; margin:5px;" id="AnswerBox">'); 
          $("#unanswered form").append('<textarea rows="5" id="AnswerBoxArea" name="answer">'); 
          $("#unanswered form").append('<br><input type="submit" value="Answer" id="AnsTextQ">'); 


     }, 
     error : function(jqXHR, textStatus, errorThrown) { 
        alert(jqXHR.status+", " + jqXHR.statusText+", "+textStatus+", "+errorThrown); 
     } 
    }); 
    $(".AnswerBoxArea").css("width", $("#AnsBoxDiv").width()-30); 
    $(".AnswerBoxArea").css("max-width", $("#AnsBoxDiv").width()-30); 
    alert($("#unanswered").attr("id")); 
    alert($("#AnswerBoxArea").attr("id")); 

});

Ist es ein Problem des Umfangs der Variablen. Die ID ist lokal und auf sie kann nicht zugegriffen werden.

+2

Nichts ist falsch mit Ihrem veröffentlichten Code https://jsfiddle.net/7js4v2nc/. Haben Sie Fehler in der Konsole? Wie sieht das gerenderte HTML aus? Wie/Wann/Wo rufen Sie die Warnung an? – Jasen

+0

Die Warnung ist nur ein Scheck und sonst nichts. Ich glaube, die ID wird nicht festgelegt. Irgendein Grund warum? – soumyajyoti

+0

Überprüfen Sie, ob #unanswered Element existiert oder nicht. Überprüfen Sie auf Fehler in der Konsole. Überprüfen Sie mit @Jasen fiddle es funktioniert gut. – Hemakumar

Antwort

0

Haben Sie versucht, CSS, um Breite zu erhalten/setzen?

Use jQuery's css method like this: 

.css("width", width) 

or this, if you plan on setting more attributes: 

.css({"width":width}) 
+0

kein Grund, dass 'css()' würde funktionieren, wenn 'width()' nicht funktioniert – charlietfl

Verwandte Themen