有很多事情你的代碼錯誤
- 不能添加字符串到一個整數,將導致串 串聯。如果添加
"300px"+ 10
它會導致對 300px10
沒有310px
- 我無法理解你的邏輯你正在嘗試做的,但
while (block.style.top > h) {
絕不會通過爲塊的風格將是字符串再次0px
開始和h
是630
。 您在while循環中使用parseInt(block.style.top)
進行比較。
- 你的div塊沒有寬度和高度或顏色,你什麼都看不到。
這是我使用箭頭移動div的實現。
Store中的對象POS位置var pos = {top:0,left:0};
然後事件添加到您的按鈕
UP:
更新pos.top+=dos
值,並將其應用到block.style.top = pos.top+'px';
document.getElementById("upbutton").onclick = function up() {
//Update if top is not equal to zero not allowed to go out of window.
if(pos.top!=0) {pos.top-=dos; block.style.top = pos.top+'px';}
};
下:
更新pos.top-=dos
值,並將其應用到block.style.top = pos.top+'px';
document.getElementById("downbutton").onclick = function down() {
if(pos.top<h) {pos.top+=dos; block.style.top = pos.top+'px';}
};
左:
更新pos.left-=dos
值,並將其應用到block.style.left = pos.left+'px';
document.getElementById("leftbutton").onclick = function left() {
if(pos.left!=0) {pos.left-=dos; block.style.left = pos.left+'px';}
};
右:
更新pos.left+=dos
值,並將其應用到block.style.left = pos.left+'px';
document.getElementById("rightbutton").onclick = function right() {
if(pos.top<h) {pos.left+=dos; block.style.left = pos.left+'px';}
};
代碼片段
var dos = 30;
var h = 630;
var block = document.getElementById("block");
var pos = {top:0,left:0};
document.getElementById("upbutton").onclick = function up() {
if(pos.top!=0) {pos.top-=dos; block.style.top = pos.top+'px';}
};
document.getElementById("downbutton").onclick = function up() {
if(pos.top<h) {pos.top+=dos; block.style.top = pos.top+'px';}
};
document.getElementById("leftbutton").onclick = function up() {
if(pos.left!=0) {pos.left-=dos; block.style.left = pos.left+'px';}
};
document.getElementById("rightbutton").onclick = function up() {
if(pos.top<h) {pos.left+=dos; block.style.left = pos.left+'px';}
};
#block{
width:100px;
height:100px;
position:relative;
background-color:red;
}
#arrows{
position:relative;
z-index:10;
}
<div id="space">
<div id="block" style="top:0px"></div>
<div id="arrows">
<table>
<tr>
<th class="arrow"></th>
<th class="arrow"><button id="upbutton"><img src="up.png"></button></th>
<th class="arrow"></th>
</tr>
<tr>
<td class="arrow"><button id="leftbutton"><img src="left.png"></button></td>
<td class="arrow"><button id="resetbutton"><img src="reset.jpg"></button></td>
<td class="arrow"><button id="rightbutton"><img src="right.png"></button></td>
</tr>
<tr>
<td class="arrow"></td>
<td class="arrow"><button id="downbutton"><img src="down.png"></button></td>
<td class="arrow"></td>
</tr>
</table>
</div>
</div>
你比較字符串不是數字! 「630px」不是630(如數字),並且在while循環中,您(再次)連接字符串並且不添加數字,並且(再次!)您將「30px」連接到dos「dos + ='30px」並且沒有增加數字30 ... –