2014-10-18 147 views
0

我有一個按鈕說頂部添加,當我點擊它時沒有響應。它所要做的是警告一個它剛添加的變量,但它什麼都不做。這是我的代碼:按鈕沒有響應

$("button#left").click(function(){ 
 
    moveLeftId[moveLeftId.length]="-=50px"; 
 
    alert(moveLeftId); 
 
}); 
 

 

 
$("button#start").click(function(){ 
 
    alert("You clicked action!"); 
 
    var i; 
 
    for (i = 0; i < moveLeftId.length; i++) { 
 
     $("div#test").animate({ 
 
      marginLeft: moveLeftId[i] 
 
     }, 500); 
 
    } 
 
    for (i = 0; i < moveTopId.length; i++) { 
 
     $("div#test").animate({ 
 
      marginTop: moveTopId[i] 
 
     }, 500); 
 
    } 
 
}); 
 
/* 
 
$("button#top").click(function(){ 
 
    moveTopId[moveTopId.length]="+=50px"; 
 
});marginTop: moveTopId[i]*/
#test { 
 
    width: 100px; 
 
    height: 100px; 
 
    background-color: #C00; 
 
    margin-left: 500px; 
 
    margin-top:300px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="test" color="white">Hi</div> 
 
<button id="left">Left add</button> 
 
<button id="start">Action!</button> 
 
<button id="top" onclick="moveTopId[moveTopId.length]='-=50px'; 
 
    alert(moveTopId);">Top add</button> 
 
<script>var moveLeftId=new Array(["-=50px"]); 
 
    var moveBottomId=new Array(["-=50px"]);</script>

正如你看到的,我試過分離部分代碼到其他腳本標記的,但是這並沒有有所作爲。我不知道該怎麼辦!



在此先感謝!

+1

運行上面的代碼片段,唯一沒有提醒我的按鈕是其事件處理程序被註釋掉的按鈕('button#t​​op')。我不明白這個問題嗎? – 2014-10-18 17:32:17

+0

我得到了一個錯誤: 未捕獲ReferenceError:moveTopId未定義 定義moveTopId – 2014-10-18 17:33:26

+0

@Colin我應該編輯該問題。頂部添加按鈕是不起作用的按鈕,所以你有問題了!感謝您的提示。 – 2014-10-18 17:35:00

回答

1

因此,如果沒有定義他,你無法讓你Array.length沒有定義這個數組。

你的腳本正在工作只需要在開始時定義這個變量。

http://jsfiddle.net/2xybrnrz/

var moveLeftId = []; 
var moveTopId = []; 

$("button#left").click(function(){ 
    moveLeftId[moveLeftId.length]="-=50px"; 
    alert(moveLeftId); 
}); 


$("button#start").click(function(){ 
    alert("You clicked action!"); 
    var i; 
    for (i = 0; i < moveLeftId.length; i++) { 
     $("div#test").animate({ 
      marginLeft: moveLeftId[i] 
     }, 500); 
    } 
    for (i = 0; i < moveTopId.length; i++) { 
     $("div#test").animate({ 
      marginTop: moveTopId[i] 
     }, 500); 
    } 
}); 

$("button#top").click(function(){ 
    moveTopId[moveTopId.length]="+=50px"; 
}); 
2

$("button#left").click(function(){ 
 
    moveLeftId[moveLeftId.length]="-=50px"; 
 
    alert(moveLeftId); 
 
}); 
 

 

 
$("button#start").click(function(){ 
 
    alert("You clicked action!"); 
 
    var i; 
 
    for (i = 0; i < moveLeftId.length; i++) { 
 
     $("div#test").animate({ 
 
      marginLeft: moveLeftId[i] 
 
     }, 500); 
 
    } 
 
    for (i = 0; i < moveTopId.length; i++) { 
 
     $("div#test").animate({ 
 
      marginTop: moveTopId[i] 
 
     }, 500); 
 
    } 
 
}); 
 
/* 
 
$("button#top").click(function(){ 
 
    moveTopId[moveTopId.length]="+=50px"; 
 
});marginTop: moveTopId[i]*/
#test { 
 
    width: 100px; 
 
    height: 100px; 
 
    background-color: #C00; 
 
    margin-left: 500px; 
 
    margin-top:300px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="test" color="white">Hi</div> 
 
<button id="left">Left add</button> 
 
<button id="start">Action!</button> 
 
<button id="top" onclick="moveTopId[moveTopId.length]='-=50px'; 
 
    alert(moveTopId);">Top add</button> 
 
<script>var moveLeftId=new Array(["-=50px"]); 
 
    var moveBottomId=new Array(["-=50px"]);var moveTopId =new Array(["-=50px"]); 
 
</script>

+0

你改變了什麼? – 2014-10-21 03:03:27

+0

我加了moveTopId,因爲它沒有定義。 – 2014-10-21 06:09:06

0

嘗試加入你的代碼中

$(document).ready(function() { 
    // put code here 
}); 

這是因爲如果你的JS和jQuery是跑在頁面加載完畢之前..