为什么我这样写,网页检查显示函数未定义呢
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
#div1 {
width: 198px;
height: 150px;
padding: 10px;
border: 1px solid #aaaaaa;
display: inline-block;
margin: 100px
}
</style>
</head>
<body>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
<p>请把小飞机拖放到这里</p>
</div>
<img id="drag1" src="http://img1.sycdn.imooc.com/climg//5b9603390001ffe202000100.png" draggable="true" ondragstart="drag(event)" />
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
(function($){
$("#drag1").on("drag",function(e){
e.preventDefault();
})
$("#div1")
.on("drop",function(e){
e.preventDefault();
$(this).append($("#drag1"));})
.on("allowDrop",function(e){
e.preventDefault();
})
})
</script>
</body>
</html>
正在回答
你好同学,如下理解:
1.在标签中绑定事件是调用了函数,不是定义函数,函数是在js中定义的哦。就像老师上个回复的第一个截图,先在js中定义一个函数,然后标签中绑定的事件里面调用这个函数。当事件触发,函数就会执行哦。
2.使用jQuery的方式不需要在标签中调用函数。同学要区分开只是绑定事件的方式不一样,一个是直接在标签上面绑定事件,事件执行的函数需要自己在js中定义。然后在事件后面调用。当事件触发,就会执行此函数(参考老师上次回复的第一个截图)
一个是在jQuery代码中直接获取元素监听一个事件,事件后面已经有一个匿名函数了。当事件触发,就会执行匿名函数里面的内容(匿名函数就是没有名字的函数)。
祝学习愉快 ,望采纳。
你好同学,因为在标签中为事件绑定的事件处理函数并没有在js中定义,所以会报错,例如如下:
在js中需要定义一个函数,然后在事件ondragstart中才能调用这个函数哦
不过同学的代码中在js中想使用on为元素绑定事件,而on中第一个参数应该是事件的事件名,例如click,drop,dragstart。并不是同学理解的任意起一个事件名称。另外,拖拽的效果应该是在拖动图片的过程中使用setData保存下他的数据,然后在图片拽到指定区域,先getData获取到数据,然后才能添加,建议同学在复习一下课程,按照课程中讲解的知识点练习。代码参考如下:
祝学习愉快 ,望采纳。
- 参与学习 人
- 提交作业 467 份
- 解答问题 4826 个
本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星