html5 被拖动元素id与事件名

html5中为什么被拖动元素的id与触发事件的函数不能一样?
img的id和事件调用的函数都是drag都是drag的时候为什么会报错,当把id改成drag1是则可以正常运行,为什么?

clipboard.png

clipboard.png

阅读 2.7k
1 个回答

DOM事件模型的问题。
通过html属性绑定的方法,不需要等到js运行。这种绑定方式好像有人叫做DOM0事件。
DOM0事件有个特点就是,原型链调用上是这样的:
Image
这个就意味着,你的drag是在window里的,但是你的id是在div里面的。这个就好像js的原型链一样,只有说你本身缺少了这个属性,才从继续到原型中寻找。
而HTML DOM对象中,你的id是DOM对象的属性,但是这个属性不是一个方法!(对应上面的not a function 错误哦)
所以,要避免这种问题的话,不要用DOM0,而是使用addEventListener这种方式去绑定。
或者用一个变量保存这个dom节点,例如这里的id为drag的img元素
var img=$('#drag')//jq写法,请修改
img.ondragstart=drag
function drag(){}
手机不方便,如果有问题欢迎留言~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题