• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:script.aculo.usのDroppablesに動的に作成したd)

問題を解決するためのscript.aculo.usのDroppablesへのdiv要素の追加方法

このQ&Aのポイント
  • script.aculo.usのDroppablesに動的に作成したdiv要素を追加する際に、onDrop()の定義で問題が発生しています。onDrop()が呼び出された時に、追加したdiv要素へアクセスする方法がありません。
  • Droppables.add()の第一引数で指定するelementIdがnullとなってしまい、追加したdiv要素へアクセスすることができません。
  • 問題を解決するためには、onDrop()の直前にdiv要素を取得する方法が必要です。これにより、追加したdiv要素へアクセスし、適切な処理を行うことができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

No1です。 >というか質問させて頂いた問題に関してはクリアする事が出来ました。 とりあえずは、よかったですね。 >Droppables.add("DIV_1", ・・・)、Droppables.add("DIV_2", ・・・) >とした場合ですが最後に追加したdiv要素の方でしかonDrop()が >効かないみたいです。 ん!? No1の回答は、追加するときには  addDroppable("DiV_1", elementOption);  addDroppable("DiV_2", elementOption); のように呼び出すことを前提に回答していますけど…? (elementOptionがどのようなものなのかもわかってないけど) 追加のときだけでなく、初期設定でも同様の処理であれば使えるはずです。 addDropableってそのためのfunction定義ではないの?

pvge2rd37
質問者

お礼

大変ありがとうございました。問題解決する事が出来ました。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

script.aculo.usってまったく知らないので、メソッドや文法もわかってないけれど… elementIdとelementOptionが固有値っぽいのと、onDropがcallbackっぽいので、 function addDroppables(elementId, elementOption) { Droppables.add(elementId, {onDrop: dropFunc($(elementId), elementOption)}); } function dropFunc(obj, option) { return function() { if(option == 1) obj.innerHTML = obj.innerHTML + 'aaa'; } } みたいなことをやりたいということでしょうか? (あるいは、elementOptionはもとのままでも良いのかも) (↑)ドキュメンテーションを見てないので、相当にいい加減です。 * 引数がid渡しみたいなので、新しく生成した要素の場合は、機械的に附番するとかでIDも生成しないとならなさそう。

pvge2rd37
質問者

お礼

ご回答ありがとうございます。 ご指摘頂いたように修正したところ状況が少し改善しました。 というか質問させて頂いた問題に関してはクリアする事が出来ました。 ドロップして追加したdiv要素をDroppablesにaddして、それに対して他のドラッグ可能なものをドロップして正常にonDrop()経由でやりたい処理が呼び出せるようになりました。ありがとうございました。 ただ別の問題が発生しまして div要素を2つ追加した場合、要するに Droppables.add("DIV_1", ・・・)、Droppables.add("DIV_2", ・・・) とした場合ですが最後に追加したdiv要素の方でしかonDrop()が効かないみたいです。 原因は恐らくIDを格納する変数であるelementIdが共通のものなので書き変わっている為だと思われます。 私の方で修正して上手くいきましたら報告させて頂きます。 どうもありがとうございました。

関連するQ&A

専門家に質問してみよう