JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » EJB / 其它Java EE 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
作者 Re:html網頁元件事件的聆聽 [Re:lonely741215]
simpleisgood





發文: 41
積分: 0
於 2013-09-13 01:20 user profilesend a private message to usersend email to simpleisgoodreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
你以上寫的JS程式碼呢與下面的意義相同

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
var repeatRadio = document.getElementById("repeatRadio");
var noRepeatRadio = document.getElementById("noRepeatRadio");
var repeatXRadio = document.getElementById("repeatXRadio");
var repeatYRadio = document.getElementById("repeatYRadio");
var image = new Image();
 
function fillCanvasWithPattern(repeatString)
{
  var pattern = context.createPattern(image,repeatString);
  context.clearRect(0, 0, canvas.width, canvas.height);
  context.fillStyle = pattern;
  context.fillRect(0, 0, canvas.width, canvas.height);
}
 
var radios = document.getElementById("radios");
var child = radios.getElementsByTagName("input");
var childName = new Array(child.length);
childName[0] = "repeat";
childName[1] = "repeat-x";
childName[2] = "repeat-y";
childName[3] = "no-repeat";
// i 宣告於for迴圈內的意義與java不同哦,不是以{}作為scope介定的
var i;
// 同理, 
var click_func;
for(i = 0 ; i < child.length ; i++)
{
  click_func = function(e)
  {
    fillCanvasWithPattern(childName[i]);  
  };                                       
  child[i].onclick = click_func;
}                                        
// 加上這行,你會發現i還有效,就算i宣告於for迴圈內
alert(i);
// 同理,事實上最後你全部的child.onclick都指向了同一個click_func
// 而且這個click_func的動作是fillCanvasWithPattern(childName[4]);
// 也就是fillCanvasWithPattern(undefined);
 
image.src = "anim02.gif";
image.onload = function(e)
{
  fillCanvasWithPattern(childName[3]);
};


這完全是JS變數scope造成的誤解Smile


reply to postreply to post
Simple is good
話題樹型展開
人氣 標題 作者 字數 發文時間
1256 html網頁元件事件的聆聽 lonely741215 2247 2013-09-12 21:29
1102 Re:html網頁元件事件的聆聽 Duncan 2838 2013-09-13 00:22
1070 Re:html網頁元件事件的聆聽 simpleisgood 1542 2013-09-13 01:20
1335 Re:html網頁元件事件的聆聽 lonely741215 35 2013-09-13 17:25
» JWorld@TW »  EJB / 其它Java EE 討論區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8