html5中为什么被拖动元素的id与触发事件的函数不能一样?
img的id和事件调用的函数都是drag都是drag的时候为什么会报错,当把id改成drag1是则可以正常运行,为什么?
html5中为什么被拖动元素的id与触发事件的函数不能一样?
img的id和事件调用的函数都是drag都是drag的时候为什么会报错,当把id改成drag1是则可以正常运行,为什么?
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
DOM事件模型的问题。

通过html属性绑定的方法,不需要等到js运行。这种绑定方式好像有人叫做DOM0事件。
DOM0事件有个特点就是,原型链调用上是这样的:
这个就意味着,你的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(){}
手机不方便,如果有问题欢迎留言~