您好,
  假設我要做一個動態的網頁, 需求如下,  首先呢, 先定義一個固定範圍的區塊, 接著要動態地將元素物件(例如圖片)放入該區塊(可能一開始在XML內便已定義好部分元素在區塊內), 如果空間夠大, 可以持續加入新的元素(元素個數未知). 一旦元素被加入該區塊後就必須可以被拖曳(原有的元素也要可以拖曳), 同時要能記錄該元素在該區塊的座標, 並且隨著使用者拖曳該元素而即時更新該元素座標. 若任兩元素在拖曳過程中重疊(比對座標), 必須顯示警示訊息.
  請問這樣的需求用 javascript + XML 做得到嗎?  希望可以做到. 如果可以做到, 我想請問您1. 假設已經在XML定義好的元素有10個(例如10張小圖片 ), 但是user想要再加多少元素是不可知的. 這應該如何做事件的管控? 通常事件的觸發是依附著元素物件, 例如addEventListener. 抱歉, 我是個初學者, 我的想法是,  針對圖片1, 可以寫一個對應的事件處理函式來達成拖曳效果, 如p1.addEventListener; 對圖片2, 也是另外寫一個事件處理函式, p2.addEventListener. 如果有1000張圖片都要可以拖曳, 難道我必須寫1000個事件處理函式? 1000個listener和mousedown/up/move的函式? 應該不會這麼麻煩吧. 是不是有更簡便聰明的寫法? 另外, 如果圖片張數未知又該如何處理?2. javascript如何記錄下每個元素(例如圖片, 原有的加上新增的)的座標值? 並隨時依照使用者的拖曳結果更新? 最後要將座標值和元素id一起寫入資料庫或者檔案中.   如果做不到的話, 請問您有沒有更好的解決方案?! 如果XML內放的是2D向量圖形呢? 謝謝!
 

解决方案 »

  1.   

    楼主你说的我大体看了下,一个呢!  就是利用javascript技术实现图片的拖拽定位,
    二呢!  就是你想把这些位置都保存到数据库里面去,首先我告诉你这些都不难, 但是你必须有一定的javascript基础,熟悉dom操作! 
    只要你有点技术基础!这些东西怎么玩怎么成!   方法多的很!你整篇文章不提技术,只体提思路,我也没法给你进行技术交流!我就跟你说说思路,
    你说的每张图片都要加函数,这不麻烦, 你图片一近来,就用一个函数对这个图片处理就好了, 只写一个函数,就可以给任何一张图片加上拖拽的动作,比如:function drag(obj){
    obj.onmousedown=.....
    obj.onmouseup=.....
    obj.onclick=.....
    }写这么个函数,图片一加近来,就先这么处理:
    drag(这张图片);
    这就搞定了~
    当然你要是用一些框架就更好了,比如现在"臭名昭著"的jquery就有一个live()方法;
    他这个更方便,你连"drag(这张图片);"这个都可以省掉了~只要是图片,符合要求,不管是你一开始就有的,还是后来加进来的,他就有你自定义的所有事件函数!第二个问题!你想保存到数据库,这也很简单,涉及到的数据量也不大,比如,你只需要用javascript从现在的页面中记录这些信息:图片的地址,图片的横坐标,纵坐标!把这三个信息保存到数据库就可以了! 可以用多维数组,我是这么认为的,谁有更好的办法也可以告诉我,要是我的话我就这么多
    [[图片url地址,横坐标,纵坐标],[图片url地址,横坐标,纵坐标],[图片url地址,横坐标,纵坐标],[图片url地址,横坐标,纵坐标]]
    这样记录所有的图片,下次访问的时候就可以遍历这个数组,来布局出先前保存的页面的样子!!  OK?当然这是是我的思路~要实现的话要写大量的代码~  
      

  2.   

    参考:
    http://school.itzcn.com/special-spid-28.html
    上面讲解的比较详细,希望对楼主有所帮助。
      

  3.   

    谢谢大家, 很抱歉, 因我是台湾人  您好, 假设我要做一个动态的网页, 需求如下, 首先呢, 先定义一个固定范围的区块, 接着要动态地将元素对象(例如图片)放入该区块(可能一开始在XML内便已定义好部分元素在区块内), 如果空间够大, 可以持续加入新的元素(元素个数未知). 一旦元素被加入该区块后就必须可以被拖曳(原有的元素也要可以拖曳), 同时要能记录该元素在该区块的坐标, 并且随着用户拖曳该元素而实时更新该元素坐标. 若任两元素在拖曳过程中重迭(比对坐标), 必须显示警示讯息.    请问这样的需求用 javascript + XML 做得到吗?  希望可以做到. 如果可以做到, 我想请问您   1. 假设已经在XML定义好的元素有10个(例如10张小图片 ), 但是user想要再加多少元素是不可知的. 这应该如何做事件的管控? 通常事件的触发是依附着元素对象, 例如addEventListener. 抱歉, 我是个初学者, 我的想法是,  针对图片1, 可以写一个对应的事件处理函式来达成拖曳效果, 如p1.addEventListener; 对图片2, 也是另外写一个事件处理函式, p2.addEventListener. 如果有1000张图片都要可以拖曳, 难道我必须写1000个事件处理函式? 1000个listener和mousedown/up/move的函式? 应该不会这么麻烦吧. 是不是有更简便聪明的写法? 另外, 如果图片张数未知又该如何处理?   2. javascript如何记录下每个元素(例如图片, 原有的加上新增的)的坐标值? 并随时依照用户的拖曳结果更新? 最后要将坐标值和元素id一起写入数据库或者档案中.     
       如果做不到的话, 请问您有没有更好的解决方案?! 如果XML内放的是2D向量图形呢? 谢谢!
      

  4.   

    我另外提了一个比较技术的问题和这一题有关, 也请大家帮忙看看.  谢谢!"javascript事件控管问题"http://topic.csdn.net/u/20100201/17/d3a40414-8442-436b-ad2e-a86a4ddb80eb.html?54937
      

  5.   

    1)A{B*}  
    设对象A并有自己的显示区域
    设对象B并有自己的显示区域
    对象A有append(B)方法添加 B对象 同时为每个添加的B对象编写控制事件(包括拖动事件)
    因为A,B都代表一个显示区域,所以A,B可以是同一个对象 或者扩展自一个父对象 2)如上 所有信息应该包含于上面的B对象中 移动的只是B对象 所以要记录的只是B可能有的坐标