2016-07-02 14 views
0

jqueryを使用してdivに動的にテキストエリアを追加しようとしています。基本的なコードが機能している間、私はいくつかの問題があると思う。これは、idを使用してtextareaの幅を返そうとするとnullを返すためです。つまり、テキストエリアがページに表示されるため、IDが正しく設定されていないことを意味します。ここに私のjqueryのコードjquery要素IDが追加されていません

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

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

の一部である今、私は警告

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

を行う場合にはNULLを返し、理由を理解することはできません。どんな助け?

幅の設定を考慮していない問題はありません。要素idの設定にはより多くのものがあります。あたかもアラート($( "#AnswerBoxArea")。attr( 'id'))を返すと、未定義になります。

何も問題はありません。私はdetaiedコード

$(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")); 
を提供しています

});

変数のスコープの問題ですか? IDはローカルであり、アクセスできません。

+2

投稿コードhttps://jsfiddle.net/7js4v2nc/に間違いがありません。コンソールに何かエラーがありますか?レンダリングされたhtmlの外観はどうですか?どのように/いつ/あなたはアラートをどこに呼びますか? – Jasen

+0

アラートはチェックのみで、それ以外のものはありません。私はIDが設定されていないと考えています。理由は何ですか? – soumyajyoti

+0

#unanswered要素が存在するかどうかを確認してください。コンソールのエラーを確認してください。 @Jasenがうまく動作するかどうかを確認してください。 – Hemakumar

答えて

0

幅を取得/設定するためにCSSを試しましたか?

Use jQuery's css method like this: 

.css("width", width) 

or this, if you plan on setting more attributes: 

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

'width()'がそうでないなら 'css()'を使うのはうまくいかない – charlietfl

関連する問題