0

そこで私は、ユーザーが Web サイトのフロント エンド テーマを作成できるようにする Web アプリの作成に取り組んでいます。私は主にJSスキルを向上させるためにこれを行っています。

以下のコードで行っているのは、ページの幅にまたがる「ボックス」を作成することであり、ユーザーが個々のボックスを編集できるようにしたいと考えています。

私が直面している問題は、ユーザーが必要とするすべての要素に対して設定した div とともに、ユーザーがクリックしたクラス/ID を選択できることです。ただし、DOM メソッドをオブジェクトにアタッチできないようです。

エラーは Uncaught TypeError: オブジェクト editBoxes にメソッド 'innerHTML' がありません。'innerHTML' は任意のメソッドです。Jquery の .html も試してみましたが、同じ結果が得られました。

     for(i=1; i <= boxes; i++) {
                    box.innerHTML = box.innerHTML + [
                    "<div class = 'globalBox' id = 'box"+i+"'>",
                    "<div class = 'editDyBox'>edit this box <div class = 'editBoxes'></div<!--end edit boxes--></div>",
                    "</div><!--end box-->",   
                        ].join('');
                    }//end for
                 $(".globalBox").css("width", width+"%");

                     $(".editDyBox").click(function(){
                       var parentClass = $(this).parent().attr("id");
                       var childClass = $(this).children().attr("class");
                       var customEdit = $(this).attr("class");
                       var editBoxForm = "<form class = 'editBoxForm'><input type = 'text' name = '"+parent+"' width = '100%'></form>";

                       childClass.innerHTML("hello")
                    });//end editdybox click

ありがとう - アート

4

4 に答える 4

0

contenteditable複雑なコードの代わりに使用してみませんか? そのために設計されています。

このデモをチェックしてください

<div contenteditable="true">I'm the content</div>

すべてのブラウザーでサポートされています (ええ、IE5 も)

これは通常の div であるため、使用可能なすべての幅にまたがり、コンテンツは編集可能です。JS や CSS は追加されていません。

于 2013-10-07T14:09:39.467 に答える
0

この行は、jQuery オブジェクトではなく文字列を返します

var childClass = $(this).children().attr("class");

したがって、変数 childClass は単純な文字列オブジェクトになります。メソッド innerHTML を持つことはありません。

さらに、これはクラス値の配列ではなく、最初の子のクラス値のみを返します。

于 2013-10-07T14:12:46.000 に答える
-1

これを削除

childClass.innerHTML("hello")

これで

$(this).children().innerHTML("hello");
于 2013-10-07T14:03:06.697 に答える