HTML5之ondragover,ondrop,ondragstart
瀏覽量:11131
利用HTML5新增的ondragover,ondrop,ondragstart函數做了個的拼圖游戲,做好后玩著感覺挺好玩,可是卻怎么也拼不回原始圖片,最后在別人的提醒下才知道,原來要留有兩個空格,下面的拼圖的代碼。
要設置draggable="true" 的屬性后才可以被拖動,可惜ipone里沒有鼠標的操作,只能在臺式電腦里玩,以后再考慮iphone吧
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
.div{width:300px;height:300px;border:1px solid #aaaaaa;float:left;}
</style>
<script type="text/javascript">
function allowDrop(ev)
{ //運行拖拽到此處
{ //運行拖拽到此處
ev.preventDefault();
}
function drag(ev,id)
{
//開始拖動圖片
function drag(ev,id)
{
//開始拖動圖片
olid=id.replace("drag","");
ev.dataTransfer.setData("Text",ev.target.id);
}
var paixu=2;
var olid=0;
var olid=0;
var newArray=new Array(new Array());
newArray[0]="1,3";
newArray[1]="0,2,4";
newArray[2]="1,5";
newArray[3]="0,4,6";
newArray[4]="1,3,5,7";
newArray[5]="2,4,8";
newArray[6]="3,7,9";
newArray[7]="4,6,8";
newArray[8]="5,7";
newArray[9]="6";
newArray[0]="1,3";
newArray[1]="0,2,4";
newArray[2]="1,5";
newArray[3]="0,4,6";
newArray[4]="1,3,5,7";
newArray[5]="2,4,8";
newArray[6]="3,7,9";
newArray[7]="4,6,8";
newArray[8]="5,7";
newArray[9]="6";
function drop(ev,id)
{//放到此處
if(id==paixu){
if(newArray[paixu].indexOf(olid)!=-1){
ev.preventDefault();
if(newArray[paixu].indexOf(olid)!=-1){
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
var oldid="drag"+olid;
document.getElementById(oldid).id="drag"+paixu;
paixu=olid
}}
}
</script>
</head>
<body>
<p>請把 W3School 的圖片拖放到矩形中:</p>
<div style="width:1000px;float:left;display:block;">
<div id="0" class="div" ondrop="drop(event,this.id)" ondragover="allowDrop(event)">
<div id="0" class="div" ondrop="drop(event,this.id)" ondragover="allowDrop(event)">
</div>
<div id="1" class="div" ondrop="drop(event,this.id)" ondragover="allowDrop(event)">
</div>
<div id="2" class="div" ondrop="drop(event,this.id)" ondragover="allowDrop(event)"></div>
<div id="3" class="div" ondrop="drop(event,this.id)" ondragover="allowDrop(event)">
</div>
<div id="4" class="div" ondrop="drop(event,this.id)" ondragover="allowDrop(event)">
</div>
<div id="5" class="div" ondrop="drop(event,this.id)" ondragover="allowDrop(event)">
</div>
<div id="6" class="div" ondrop="drop(event,this.id)" ondragover="allowDrop(event)">
</div>
<div id="7" class="div" ondrop="drop(event,this.id)" ondragover="allowDrop(event)">
</div>
<div id="8" class="div" ondrop="drop(event,this.id)" ondragover="allowDrop(event)">
</div>
<div id="9" class="div" ondrop="drop(event,this.id)" ondragover="allowDrop(event)">
</div>
</div>
<script>
window.onload=setdefault();
</div>
<script>
window.onload=setdefault();
function setdefault(){
var rand=Math.random()*9;
var n=parseInt(rand);
paixu=n;
var imgarr=new Array();
imgarr[0]="0";
imgarr[1]="1";
imgarr[2]="2";
imgarr[3]="3";
imgarr[4]="4";
imgarr[5]="5";
imgarr[6]="6";
imgarr[7]="7";
imgarr[8]="8";
for(var i=0;i<10;i++){
if(i!=n){
rand=Math.random()*(10-i)-1;
var rand=Math.random()*9;
var n=parseInt(rand);
paixu=n;
var imgarr=new Array();
imgarr[0]="0";
imgarr[1]="1";
imgarr[2]="2";
imgarr[3]="3";
imgarr[4]="4";
imgarr[5]="5";
imgarr[6]="6";
imgarr[7]="7";
imgarr[8]="8";
for(var i=0;i<10;i++){
if(i!=n){
rand=Math.random()*(10-i)-1;
var img=parseInt(rand);
document.getElementById(i).innerHTML='<img id="drag'+i+'" src="images/'+imgarr[img]+'.gif" draggable="true" ondragstart="drag(event,this.id)" />';
imgarr.splice(img, 1);//移除數組,從幾位開始,移除幾個
}
}
}
</script>
</body>
}
}
}
</script>
</body>
</html>