<!DOCTYPE HTML>
<html>
/*将一个元素拖动到另一个元素上*/
<head>
<meta charset="utf-8" />
<style type="text/css">
#div1 {
width: 198px;
height: 66px;
padding: 10px;
border: 1px solid #aaaaaa;
}
</style>
<script type="text/javascript">
function allowDrop(ev) {
/*默认地,数据/元素无法被放置到其他元素中。为了实现拖放,我们必须阻止元素的这种默认的处理方式。
这个任务由 ondragover 事件的 event.preventDefault() 方法完成:
*/
ev.preventDefault();
}
/**/
function drag(ev) {
/*设置被拖动数据的数据类型和值*/
/*数据类型是 "text",而值是这个可拖动元素的 id ("drag1")。*/
ev.dataTransfer.setData("Text", ev.target.id);
}
/*当放开被拖数据时,会发生 drop 事件。*/
function drop(ev) {
/*调用 preventDefault() 来阻止数据的浏览器默认处理方式(drop 事件的默认行为是以链接形式打开)*/
ev.preventDefault();
/*通过 dataTransfer.getData() 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据*/
var data = ev.dataTransfer.getData("Text");
/*被拖数据是被拖元素的 id ("drag1")*/
/*把被拖元素追加到放置元素中*/
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
<p>请把下文 的图片拖放到矩形中:</p>
<!--ondragover:规定被拖动的数据能够放置到何处-->
<div id="div1" οndrοp="drop(event)" οndragοver="allowDrop(event)"></div>
<br />
<!--1.设置元素可以拖动 draggable= true-->
<!--ondragstart 属性调用了一个 drag(event) 函数,规定拖动什么数据。-->
<img id="drag1" src="img/hands.png" draggable="true" οndragstart="drag(event)" />
</body>
ev.preventDefault();
<html>
/*将一个元素拖动到另一个元素上*/
<head>
<meta charset="utf-8" />
<style type="text/css">
#div1 {
width: 198px;
height: 66px;
padding: 10px;
border: 1px solid #aaaaaa;
}
</style>
<script type="text/javascript">
function allowDrop(ev) {
/*默认地,数据/元素无法被放置到其他元素中。为了实现拖放,我们必须阻止元素的这种默认的处理方式。
这个任务由 ondragover 事件的 event.preventDefault() 方法完成:
*/
ev.preventDefault();
}
/**/
function drag(ev) {
/*设置被拖动数据的数据类型和值*/
/*数据类型是 "text",而值是这个可拖动元素的 id ("drag1")。*/
ev.dataTransfer.setData("Text", ev.target.id);
}
/*当放开被拖数据时,会发生 drop 事件。*/
function drop(ev) {
/*调用 preventDefault() 来阻止数据的浏览器默认处理方式(drop 事件的默认行为是以链接形式打开)*/
ev.preventDefault();
/*通过 dataTransfer.getData() 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据*/
var data = ev.dataTransfer.getData("Text");
/*被拖数据是被拖元素的 id ("drag1")*/
/*把被拖元素追加到放置元素中*/
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
<p>请把下文 的图片拖放到矩形中:</p>
<!--ondragover:规定被拖动的数据能够放置到何处-->
<div id="div1" οndrοp="drop(event)" οndragοver="allowDrop(event)"></div>
<br />
<!--1.设置元素可以拖动 draggable= true-->
<!--ondragstart 属性调用了一个 drag(event) 函数,规定拖动什么数据。-->
<img id="drag1" src="img/hands.png" draggable="true" οndragstart="drag(event)" />
</body>
</html>
步骤如下:
1.把元素设置为可拖放: draggable="true"如上,img id为drag1的
2.拖放的内容 - ondragstart 和 setData()
ondragstart 属性调用了一个 drag(event) 函数,规定拖动什么数据
<img id="drag1" src="img/hands.png" draggable="true" οndragstart="drag(event)" />
在drag(event)函数里面:
/*设置被拖动数据的数据类型和值*/
/*数据类型是 "text",而值是这个可拖动元素的 id ("drag1")。*/
ev.dataTransfer.setData("Text", ev.target.id);
这里调用了dataTransfer.setData();传入数据类型为text和值,ev.target目标的id;
3.拖到何处 - ondragover
ondragover 事件规定被拖动的数据能够被放置到何处。
默认的数据或者元素是无法被放置到其他元素中,为了实现拖放,我们必须阻止元素的这种默认的处理方式;
这个任务由ondragover事件的event.preventDefault()方法完成;
上文 代码中的
function allowDrop(ev) {ev.preventDefault();
}
4.进行放置 - ondrop
当放开被拖数据时,会发生drop事件;
上面代码中调用了drop(event)函数,同样的,需要我们组织默认行为;
ev.preventDefault();// 默认drop事件的行为是以链接形式打开的
接着,我们通过dataTransfer.getData()获取被拖动的数据,也就是被拖元素通过setData()设置的数据。
var data = ev.dataTransfer.getData("text");
// 最后我们将被拖元素追加到放置元素中
ev.target.appendChild(document.getElementById(data));