2


データベースからユーザーのリストを取得し、テーブルにユーザーの名前を表示したいと思います。名前をクリックすると、特別なdivが表示され、このdivを移動したり、閉じたりすることができます。

コードの記述方法の簡単なスキームは次のとおりです。

function openDiv(id){
document.getElementById('divsHere').innerHTML +='<div id="moveable'+id+'">content</div>'}

 <?php database connection... while{

...

<tr onclick='openDiv( ". $row['id'] ." )'>
$script += 'Drag.init(document.getElementById("moveable'+ $row['id'] +'"));'

...

}?>

<div id="divsHere"></div>

echo $script;

私はこの素晴らしいドラッグアンドドロップライブラリを使用しました。 http://www.dynamicdrive.com/dynamicindex11/domdrag/index.htm(jQuery でも同じ問題があることに注意してください)

divがinner.HTMLによって追加された場合、ドラッグアンドドロップ機能が機能しないようです。しかし、それ以上の道は見えません。

アドバイスありがとうございます!

4

2 に答える 2

3

問題は、Drag.initを実行すると、フィードしたdivがまだ作成されていないことです。

thタグの場合と同じように、phpサイクル内で個々のdivを生成し、openDivの先頭にあるinnerHTMLの設定を削除すると、機能すると思います。

とはいえ、あなたが望んでいるのは、すでに作成されていて他の場所で簡単に使用できるモーダルダイアログのようです。例: http: //jqueryui.com/dialog/作業が簡単になり、最終結果をより楽しむことができます。

これがお役に立てば幸いです:)

于 2012-12-10T22:36:20.433 に答える
1

を使用してdivを追加してみてくださいdocument.createElement

var newDiv = document.createElement('div'), 
    textNode = document.createTextNode('content');
newDiv.id = "moveable" + id;
newDiv.appendChild(textNode);
document.getElementById('divsHere').appendChild(newDiv);

ドラッグを初期化するには、

Drag.init(newDiv);

ドラッグを初期化するコードの部分がnewDivそのスコープ内にある場合。

(おそらく、を作成divして同じ場所にドラッグする可能性を初期化する必要があります。私があなたのスキームを正しく理解している場合、問題は、最初に存在しないdivでドラッグを初期化しようとし、次にユーザーが関数を呼び出して行をクリックすると、それらのdivが作成されます。これが正しい場合は、それを修正するために、divが作成されたopenDivにのみドラッグが初期化されることを確認する必要があります。)

于 2012-12-10T21:18:55.770 に答える