2006ǯ09·î23Æü 01:30 [Edit]

javascript - ¥Ú¡¼¥¸¤Ï¤¤¤ÄºÆÉÁ²è¤µ¤ì¤ë¤«

ÂçÊѤËÍ­ÍѤʹͻ¡¤À¤¬¡¢°ì¤Ä½ÅÍפʻØÅ¦Ï³¤ì¤¬¤¢¤ë¡£

ITÀïµ­ - JavaScript ¤ò³Ø¤ÖºÝ¤Ë°ìÈÖ½ÅÍפʤΤˡ¢¸í²ò¤µ¤ì¤¬¤Á¤Ê setTimeout ·Ï¤Î³µÇ°
setInterval¡¢setTimeout¡¢¥¤¥Ù¥ó¥È¤Ë¤è¤ë´Ø¿ô¤Î¼Â¹Ô¤òÍý²ò¤¹¤ë¤³¤È¤À¤È»×¤¦

¥Ú¡¼¥¸¤¬¤¤¤ÄºÆÉÁ²è¤µ¤ì¤ë¤«¡¢¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£


̤·Ð¸³¼Ô¤Ï¡¢document.write()¤äelement.innerHTML = "foo"¤Î¤è¤¦¤Ë¡¢¥Ö¥é¥¦¥¶¡¼¤Ë¡Ö½ñ¤­½Ð¤·¤¿¡×ÅÀ¤Ç¤½¤ì¤¬Ä¾¤Á¤ËÈ¿±Ç¤µ¤ì¤ë¤È»×¤¦¤À¤í¤¦¡£

¤È¤³¤í¤¬¡¢¤½¤¦¤Ç¤Ï¤Ê¤¤¤Î¤Ç¤¢¤ë¡£

¼ÂÎã¤ò¸«¤Æ¤ß¤è¤¦¡£°Ê²¼¤Îscript¤ò¹Í¤¨¤Æ¤ß¤ë¡£¥Ü¥¿¥ó¤ò²¡¤¹¤È¡¢¥Ü¥¿¥ó¤Î¥é¥Ù¥ë¤¬1000¤«¤é1¤Þ¤Ç¥«¥¦¥ó¥È¥À¥¦¥ó¤·¤¿¸å¡¢¸µÄ̤ê¤Ë¤Ê¤ë¤³¤È¤ò°Õ¿Þ¤·¤Æ¤¤¤ë¤è¤¦¤Ë¸«¤¨¤ë¡£

<script>
function bad_count(evt){
  var self = evt.target || evt.srcElement;
  for (var count = 1000; count > 0; count--){
    self.value = count;
  }
  self.value="count";
}
</script>
<input type="submit" value="count" onclick="bad_count(event)">

¤È¤³¤í¤¬¡¢¤³¤Î¥Ü¥¿¥ó¤Ï´üÂÔÄÌ¤êÆ°¤«¤Ê¤¤¡£¥¯¥ê¥Ã¥¯¤·¤Æ¤â²¿¤âµ¯¤­¤Ê¤¤¤è¤¦¤Ë¤·¤«¸«¤¨¤Ê¤¤¡£

¤½¤ì¤Ï¤Ê¤¼¤«?¤³¤³¤ËÈëÌ©¤¬¤¢¤ë¡£

´Ø¿ô¤Î¼Â¹ÔÃæ¤Ï¡¢¥Ú¡¼¥¸¤Î½ñ¤­´¹¤¨¤Ïµ¯¤³¤é¤Ê¤¤¡£¤¹¤Ê¤ï¤Á¡¢´Ø¿ô¤Î¼Â¹Ô¥­¥å¡¼¤¬¶õ¤Ë¤Ê¤Ã¤Æ»þÅÀ¤Ç¤Ï¤¸¤á¤Æ¥Ú¡¼¥¸¤Î½ñ¤­´¹¤¨¤¬µ¯¤³¤ë¤Î¤À¡£¤À¤«¤é¾åµ­¤ÎÎã¤Ç¤Ï¡¢ºÇ½ª¼Â¹Ô·ë²Ì¤Î¤ß¤¬É½¼¨¤µ¤ì¤ë¤È¤¤¤¦¤ï¤±¤À¡£

¸½ºß¤Î¥Ö¥é¥¦¥¶¡¼¤Î¼ÂÁõ¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤è¤¦¤Ç¤¢¤ë¡£¡Ö¤è¤¦¤Ç¤¢¤ë¡×¤È¤¤¤¦¤Î¤Ï¡¢»ÅÍͽñ¤Ç³Îǧ¤·¤¿¤ï¤±¤Ç¤Ï¤Ê¤¤¤«¤é¤À¡£

¥¤¥Ù¥ó¥ÈȯÀ¸ ¢ª ´Ø¿ô¤Î¼Â¹Ô ¢ª ¥Ú¡¼¥¸¤ÎºÆÉÁ²è 

¾åµ­¤ÎÎã¤Ç°Õ¿Þ¤·¤¿¤è¤¦¤Ë¡¢¥«¥¦¥ó¥¿¡¼¤¬Æ°¤¤¤¿ÅÔÅÙɽ¼¨¤µ¤»¤¿¤¤¤È»×¤Ã¤¿¤é¡¢¤½¤ÎÅÔÅٴؿô¤Î¼Â¹Ô¤ò´°Î»¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤·¤«¤·¥«¥¦¥ó¥¿¡¼¤òư¤«¤¹¤È¤¤¤¦¹Ô°Ù¤½¤Î¤â¤Î¤Ë´Ø¿ô¤Î¼Â¹Ô¤¬É¬ÍפǤ¢¤ë¡£¤É¤¦¤·¤¿¤é¤è¤¤¤«?

¤½¤ÎÅú¤¨¤¬¡¢setTimeout()¤È¤¤¤¦¤ï¤±¤À¡£¾åµ­¤ÎÎã¤Ç¤Ï¡¢¥«¥¦¥ó¥¿¡¼¤ò°ì¤Äư¤«¤·¤¿¤é¡¢¼¡¤Ë¥«¥¦¥ó¥¿¡¼¤òư¤«¤¹´Ø¿ô¤òsetTimeout()¤ÇÅÐÏ¿¤¹¤ë¡£¤¹¤ë¤È»ØÄê»þ´Ö°Ê¾å¸å¤Ë¤½¤Î´Ø¿ô¤ò¼Â¹Ô¤»¤è¤È¤¤¤¦¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¡¢¤Þ¤¿¤½¤Î´Ø¿ô¤¬¼Â¹Ô¤µ¤ì¡¢¥Ú¡¼¥¸¤¬ºÆÉÁ²è¤µ¤ì¤ë¡£

¤½¤ì¤ò¼ÂºÝ¤Ë¤ä¤ë¤È¤É¤¦¤Ê¤ë¤«?°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£

<script>
var count;
var timer;
function good_count(evt){
  var self = evt.target || evt.srcElement;
  count = 1000;
  var callback = function(){
    self.value = count--;
    if (count > 0){
       timer = setTimeout(callback, 0);
    }else{
       self.value = "count";
    }
  }
  timer = setTimeout(callback, 0);
}
</script>
<input type="submit" value="count" onclick="good_count(event)">

º£Å٤ϤÁ¤ã¤ó¤Èư¤¯¡£¤Á¤ã¤ó¤Èư¤¯¤¬¡¢¤³¤Î¤ä¤ä¤³¤·¤µ¤Ï°ìÂβ¿¤À¤í¤¦¡£¤³¤¦¤·¤¿¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤ò»È¤Ã¤¿¥¤¥Ù¥ó¥È½èÍý¤È¤¤¤¦¤Î¤Ï¡¢GUI¥×¥í¥°¥é¥ß¥ó¥°¤ò·Ð¸³¤·¤¿¿Í¤Ç¤¢¤ì¤Ð¤¢¤ëÄøÅÙ´¶¿¨¤¬¤Ä¤«¤á¤ë¤È»×¤¦¤¬¡¢Ã༡Ū¤Ë½èÍý¤µ¤ì¤ë¥×¥í¥°¥é¥à¤·¤«½ñ¤¤¤¿¤³¤È¤¬¤Ê¤¤¿Í¤Ë¤Ï¡Ö¥Ï¥¡?¡×¤ÎÀ¤³¦¤À¤í¤¦¡£

¤·¤«¤·¤³¤Î¤ª¤«¤²¤Ç¡¢¥×¥í¥°¥é¥à¤ò¡Ö¼Â¹ÔÃæ¡×¤ËÃæÃǤ¹¤ë¤³¤È¤â²Äǽ¤Ë¤Ê¤ë¡£°Ê²¼¤Ï¥«¥¦¥ó¥¿¡¼¤¬Æ°¤¤¤Æ¤¤¤ë´Ö¤Ë¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¥«¥¦¥ó¥È¤¬ÃæÃǤ¹¤ëÎã¤À¡£

function better_count(evt){
  var self = evt.target || evt.srcElement;
  if (timer){ 
    timer = clearTimeout(timer); // clearTimeout(timer); timer = undefined;
    return;
  }
  if (! count) count = 1000;
  var callback = function(){
    self.value = count--;
    if (count > 0){
       timer = setTimeout(callback, 10);
    }else{
        timer = clearTimeout(timer);
       self.value = "count";
    }
  }
  timer = setTimeout(callback, 10);
}

¤È¤Ï¤¤¤¨¡¢¤³¤Î¤ä¤êÊý¤Ï¶Ë¤á¤ÆÈóľ´¶Åª¤Ç¡¢¥Ð¥°¤Î²¹¾²¤È¤â¤Ê¤ê¤¦¤ë¡£ÆÃ¤Ë¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤ò½ñ¤¯»þ¤Ë¤Ï¡¢¡Ö½ªÎ»¡×½èÍý¤ò¤Á¤ã¤ó¤È¤ä¤é¤Ê¤¤¤È¼ó¤ò·¹¤²¤ë¥Ð¥°¤ÎȯÀ¸¸»¤È¤Ê¤ë¡£¾å¤ÎÎã¤Î¸å¤ÎclearTimeout()¤ò½ñ¤­²Ã¤¨¤Æ¤ª¤«¤Ê¤¤¤È¡¢¡Ö¼Â¹Ô½ªÎ»¡×¸å¤ËÆóÅÙ¥¯¥ê¥Ã¥¯¤·¤Ê¤¤¤ÈºÆ¥«¥¦¥ó¥È¤·¤Ê¤¤±©Ìܤˤʤ롣

¼ÂºÝ¡¢Javascript¤Ë¤ª¤±¤ë¤³¤¦¤·¤¿½èÍý¤È¤¤¤¦¤Î¤Ï¡¢¤ä¤Ï¤êpreemptive multitasking¤Ê´Ä¶­¤ÈÈæ³Ó¤¹¤ë¤ÈÀµÄ¾½ñ¤­¤Å¤é¤¤¤È»×¤¦¡£¤ª¤«¤²¤ÇUnix¤Îsleep()ÄøÅ٤Τ³¤È¤Ç¤âÃηäò¹Ê¤é¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¤ª¤Ã¤µ¤ó¤È¤·¤Æ¤Î°õ¾Ý¤Ç¤Ï¡¢OS X¤Ë¤Ê¤ëÁ°¤ÎSystem 7°Ê¹ß¤ÎMac OS¤Î´¶³Ð¤Ë»÷¤Æ¤¤¤ë¡£Åö»þ¤Ï¤½¤ì¤òcooporative multitasking¤È¸Æ¤ó¤Ç¤¿¤Ã¤±¡£¼«Á°¤Ç½èÍý¤òOS¤ËÊÖ¤µ¤Ê¤¤¤È¡¢¤¤¤Ä¤Þ¤Ç¤¿¤Ã¤Æ¤â»Ä¤ê¤Î¥×¥í¥°¥é¥à¤ÏÂÔ¤¿¤µ¤ì¤ë±©ÌܤˤʤëÅÀ¤Ë¤ª¤¤¤Æ¡¢¸½ºß¤Î¥Ö¥é¥¦¥¶¡¼¤Ë¤½¤Ã¤¯¤ê¤Ê¤Î¤À¡£

¥Ö¥é¥¦¥¶¡¼¤¬OS¤Ë¤Ê¤ë¤´»þÀ¤¤Ç¤¢¤ë¡£¤³¤ì¤é¤âpreemptive¤Ë¤Ê¤Ã¤ÆÍߤ·¤¤¤È»×¤¦¤Î¤Ï»ä¤À¤±¤À¤í¤¦¤«¡£¾¯¤Ê¤¯¤È¤â¡¢Unix¤Îfflush()Ū¤Ê¤â¤Î¤ÏÍߤ·¤¤¡£´Ø¿ô¤ÎÃæ¤Ç¤â¤½¤ì¤ò¸Æ¤Ö¤È¶¯À©Åª¤Ë¥Ú¡¼¥¸ºÆÉÁ²è¤µ¤ì¤ë¤è¤¦¤Ê´Ø¿ô¤¬¡£window.refresh()¡£¤È¤«¡£

Dan the Javascripter


¤³¤Îµ­»ö¤Ø¤Î¥È¥é¥Ã¥¯¥Ð¥Ã¥¯URL

¤³¤Îµ­»ö¤Ø¤Î¥È¥é¥Ã¥¯¥Ð¥Ã¥¯
¤½¤ó¤ÊÊýË¡¤¬¤¢¤Ã¤¿¤Î¤«¡¢Â礷¤ÆÍѤâ¤Ê¤¤¤Î¤Ëconfirm¤È¤«alert¤Ç¥á¥Ã¥»¡¼¥¸½Ð¤·¤ÆºÇÉÁ¼Ì¤µ¤»¤Æ¤¿¤è¡Ä¡Äorz¡£( ¡¥¡¥)¦Õ¥á¥â¥á¥â
betaNode::2006-09-23¡ÚbetaNode¡Ûat 2006ǯ09·î23Æü 03:50
404 Blog Not Found:javascript - ¥Ú¡¼¥¸¤Ï¤¤¤ÄºÆÉÁ²è¤µ¤ì¤ë¤«
404 Blog Not Found:javascript - ¥Ú¡¼¥¸¤Ï¤¤¤ÄºÆÉÁ²è¤µ¤ì¤ë¤«¡Ú¡Ûat 2012ǯ01·î16Æü 11:19
¤³¤Îµ­»ö¤Ø¤Î¥³¥á¥ó¥È
¤É¤¦¤¹¤ê¤ã¡¢¤¤¤¤¤ó¤Ç¤·¤ç¤¦¤«¡©
Posted by ¥¯¥â at 2006ǯ09·î23Æü 06:59
ÀèÀ¸¥Ø¥ë¥×£÷
Posted by ¥Ï¥ó¥«¥Á²¦»Ò at 2006ǯ09·î23Æü 08:28
setInterval ¤ò»È¤¨¤Ð¥Þ¥·¤Ë¤Ê¤ë¤«¤È»×¤Ã¤¿¤±¤É¡¤this ¤ò¥¨¥ì¥á¥ó¥È¤Ë¤¹¤ë¤¿¤á¤Ë prototype.js ¤Î¤è¤¦¤Ê bind ¤¬É¬Íפˤʤ뤫¤é¥¤¥Þ¥¤¥Á¤«¤Ê¤¡¡¥¡¥
<pre>
<script>
Function.prototype.bind = function(obj) {
var __method = this;
return function() {
return __method.call(obj);
}
}

var count = 99;
function good_count() {
if (--count > 0) {
this.value = count;
}
else {
clearInterval(timer);
this.value = 'count';
}
}

</script>
<input type="submit" value="count" onclick="timer = setInterval(good_count.bind(this), 10);">
</pre>
Posted by teahut at 2006ǯ09·î23Æü 11:40
·ë¶Épreemptive¤Ç¤Ï¤Ê¤¤¤ó¤À¤±¤É¡¢¤â¤¦¤Á¤È¤Þ¤·¤Ë¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤Î¤¬ yield ¤Î¼ÂÁõ¤Ê¤Î¤«¤·¤é¡£

[javascript] JavaScript 1.7 ¤Î yield ¤¬À¨¤¹¤®¤ë·ï¤Ë¤Ä¤¤¤Æ
http://d.hatena.ne.jp/amachang/20060805

¤Þ¤¢¤³¤ÎÊդϸÀ¸ì»ÅÍͤȤ¤¤¦¤è¤ê¤Ï¥¤¥ó¥¿¥×¥ê¥¿¤Î¼ÂÁõ¦¤¬¤ó¤Ð¤ì¤è¡¢¤È¤¤¤¦ÏäʤΤ«¤â¤·¤ì¤Ê¤¤¤±¤É¡£
Posted by ¤¯¤ê¤ä¤Þ at 2006ǯ09·î23Æü 14:07
¤Ç¤âµÕ¤Ë¥·¥ó¥°¥ë¥¿¥¹¥¯¤À¤«¤é¤³¤½»ñ¸»(¼ç¤ËDOM¥Ä¥ê¡¼)¤Î¥ì¡¼¥¹¥³¥ó¥Ç¥£¥·¥ç¥ó¤ò°Õ¼±¤»¤º¤Ë¥×¥í¥°¥é¥à¤ò½ñ¤¤¤¿¤ê¡¢¤¤¤í¤ó¤Ê¥é¥¤¥Ö¥é¥ê¤òº®ºß¤Ç¤­¤¿¤ê¤¹¤ë¤Ã¤Æ¤Î¤â»ö¼Â¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£

window.refresh()¤ÏÍߤ·¤¤¤Ç¤¹¤Í¡£
¤Ç¤â¤³¤ì¤¤¤ÄÌá¤Ã¤Æ¤¯¤ë¤«ÊݾڤǤ­¤Ê¤¤¤Î¤Ç¼ÂÁõ¤¬¿É¤½¤¦¡©¤È¤â»×¤¤¤Þ¤·¤¿¡£
Posted by ajiyoshi at 2006ǯ09·î23Æü 16:58
¥ë¡¼¥×¤ÎÃæ¤Ëalert¤òÆþ¤ì¤ë¤ÈËè²óºÆÉÁ²è¤µ¤ì¤ë¤ï¤±¤Ç¤¹¤¬¡£
Posted by umitanuki at 2006ǯ09·î23Æü 21:55
Partners were satisfied with how well ProCalisX improved erections of their men with ED† <a href= http://procalisx.myforum.ro >4men health</a><br> [url=http://procalisx.myforum.ro]4men health[/url]<br>
Posted by greg at 2007ǯ02·î15Æü 22:19
Smoking: Studies indicate that men who smoke have a greater chance of developing ED than men who don’t use tobacco. <a href= http://procalisx.myforum.ro >4men sexual problem</a><br> [url=http://procalisx.myforum.ro]4men sexual problem[/url]<br>
Posted by greg at 2007ǯ02·î16Æü 02:02