一個(gè)詭異的問(wèn)題,事件對(duì)象目標(biāo)選擇的問(wèn)題
有個(gè)事很不解。我寫了一個(gè)<div>盒子元素,又在<div>盒子內(nèi)寫了個(gè)<a>標(biāo)簽。我想通過(guò)a標(biāo)簽onclick點(diǎn)擊事件來(lái)調(diào)用移動(dòng)<div>盒子的函數(shù)代碼。可是試了好多次都不成功。函數(shù)代碼啥的都沒(méi)問(wèn)題,因?yàn)榈阶詈笪抑苯影裲nclick點(diǎn)擊事件放在<div>上的時(shí)候(div.onclick=function(){移動(dòng)div的代碼}),盒子成功移動(dòng)了,代碼被完整執(zhí)行。這是怎么回事啊,難道我要移動(dòng)某個(gè)元素,就只能針對(duì)該元素添加一個(gè)事件?沒(méi)這個(gè)道理啊
<script> ?????var?mymore=document.getElementById("more"); ?????var?box1?=?document.getElementById("box1");var?i=null; ?????function?startMove() ?????{var?box1?=?document.getElementById("box1"); ??????var????i=setInterval(function(){box1.style.left=box1.offsetLeft+1+"px"},10) ???????????????????????????????????????????????????? ?????} ??</script> ?? ??<body> ????<div?id="wrap"> ?????????<div?id="box1"?onclick="startMove()"> ??????????<a?type="button"?id="more"?href=""?onclick="startMove()">查看更多</a> ????????</div> ???</div> </body>
請(qǐng)忽略那個(gè)type=button。。。(我是實(shí)在沒(méi)辦了了隨便試了試)
如上,div a 標(biāo)簽都加了onclick點(diǎn)擊事件,然而,點(diǎn)a的時(shí)候毫無(wú)反應(yīng)(a元素被我定位在了div的右側(cè)外邊界,而div被左移隱藏起來(lái)了,跟本節(jié)課程類似。)所以理所應(yīng)當(dāng)?shù)淖龇ㄊ峭ㄟ^(guò)給a一個(gè)點(diǎn)擊事件來(lái)移動(dòng)div讓div元素顯示??墒呛翢o(wú)卵用。于是我讓div元素右側(cè)露出一點(diǎn)寬度然后給div也加了相同的onclick事件。于是就發(fā)現(xiàn),點(diǎn)擊a元素沒(méi)有一點(diǎn)反應(yīng),但點(diǎn)擊div卻可以成功調(diào)用函數(shù),實(shí)現(xiàn)移動(dòng)效果。
后來(lái)我又給被調(diào)用的函數(shù)加了個(gè)alert彈窗。發(fā)現(xiàn)點(diǎn)擊a的時(shí)候,alert彈窗成功出現(xiàn)(出現(xiàn)2次);點(diǎn)擊div的時(shí)候,alet彈窗出現(xiàn)一次,然后還是能夠成功移動(dòng)。
所以我就搞不懂了。
2022-03-27
第8行換成window.close()就可以了,當(dāng)你關(guān)閉瀏覽器的時(shí)候會(huì)有提示框35/4=8......3,8%3=2.
2017-03-15
我試過(guò)了,可以啊
<style>
? ?*{
? ? ? ?margin:0;
? ? ? ?padding:0;
? ?}
? ?#box1{
? ? ? ?width: 200px;
? ? ? ?height: 200px;
? ? ? ?background: red;
? ? ? ?position: relative;
? ? ? ?left: 10px;
? ?}
? ?#more{
? ? ? ?background: blue;
? ?}
</style>
<script>
? ?var mymore=document.getElementById("more");
? ?var box1 = document.getElementById("box1");
? ?var i=null;
? ?function startMove()
? ?{var box1 = document.getElementById("box1");
? ? ? ?var i=setInterval(function(){box1.style.left=box1.offsetLeft+1+"px"},10)
? ?}
</script>
<body>
<div id="wrap">
? ?<div id="box1">
? ? ? ?<a id="more" href="#" onclick="startMove()">查看更多</a>
? ?</div>
</div>
</body>
2017-03-05
請(qǐng)忽略那個(gè)type=button。。。(我是實(shí)在沒(méi)辦了了隨便試了試)
如上,div a 標(biāo)簽都加了onclick點(diǎn)擊事件,然而,點(diǎn)a的時(shí)候毫無(wú)反應(yīng)(a元素被我定位在了div的右側(cè)外邊界,而div被左移隱藏起來(lái)了,跟本節(jié)課程類似。)所以理所應(yīng)當(dāng)?shù)淖龇ㄊ峭ㄟ^(guò)給a一個(gè)點(diǎn)擊事件來(lái)移動(dòng)div讓div元素顯示??墒呛翢o(wú)卵用。于是我讓div元素右側(cè)露出一點(diǎn)寬度然后給div也加了相同的onclick事件。于是就發(fā)現(xiàn),點(diǎn)擊a元素沒(méi)有一點(diǎn)反應(yīng),但點(diǎn)擊div卻可以成功調(diào)用函數(shù),實(shí)現(xiàn)移動(dòng)效果。
后來(lái)我又給被調(diào)用的函數(shù)加了個(gè)alert彈窗。發(fā)現(xiàn)點(diǎn)擊a的時(shí)候,alert彈窗成功出現(xiàn)(出現(xiàn)2次);點(diǎn)擊div的時(shí)候,alet彈窗出現(xiàn)一次,然后還是能夠成功移動(dòng)。
所以我就搞不懂了。