Newss: вот тебе пример использования setInterval() с моим предыдущим примером: | Код | <html> <head> <style type='text/css'>td{width:40px} th{text-align:left} button{width:40px}</style> <script type="text/javascript"> function run(){ var msg, txt, tmp, num, res, sol, i, sr=-1, tg=-1, err=false; txt=new Array('You can use only 0 - 9 and A - F','Please, select both number systems'); msg=document.getElementById('msg').firstChild; msg.nodeValue=''; tmp=document.getElementsByName('sr'); for (i=0; i<tmp.length; i++) if (tmp[i].checked) {sr=parseInt(tmp[i].value); break;} tmp=document.getElementsByName('tg'); for (i=0; i<tmp.length; i++) if (tmp[i].checked) {tg=parseInt(tmp[i].value); break;} num='0x'+document.getElementById('num').value.toUpperCase(); if (sr<0||tg<0||isNaN(num)){ if (sr<0||tg<0) msg.nodeValue=txt[1]; else msg.nodeValue=txt[0]; err=true; } else { for (i=2; i<num.length; i++){ tmp=num.charCodeAt(i); if (tmp>47&&tmp<58&&tmp>47+sr || tmp>64&&tmp<71&&tmp>54+sr){ if (sr<11) msg.nodeValue=txt[0].substr(0,21)+(sr-1); else if (sr==11) msg.nodeValue=txt[0].substr(0,28); else msg.nodeValue=txt[0].substr(0,31)+String.fromCharCode(54+sr); err=true; break; } } } if (!err){ sol=document.getElementById('sol'); sol.value=' Solution:\n\n'; num=parseInt(num.substr(2), sr); tmp='', i=0; var repeat=window.setInterval(function(){ i++; var r=num%tg; sol.value+=' step '+i+'. '+num+' / '+tg+' = '+Math.floor(num/tg)+' (remainder '+r+')\n'; if (r>9) r=String.fromCharCode(55+r); tmp=r+tmp; num=Math.floor(num/tg); if (num<1){ tmp=='' ? num=0 : num=tmp; msg.nodeValue='Your result: '+num; window.clearInterval(repeat); } }, 500); } } </script> </head> <body><br> <table> <tr><th colspan='15'>Select your original number system:</th></tr><tr> <td><input type='radio' name='sr' value='2'>2</td> <td><input type='radio' name='sr' value='3'>3</td> <td><input type='radio' name='sr' value='4'>4</td> <td><input type='radio' name='sr' value='5'>5</td> <td><input type='radio' name='sr' value='6'>6</td> <td><input type='radio' name='sr' value='7'>7</td> <td><input type='radio' name='sr' value='8'>8</td> <td><input type='radio' name='sr' value='9'>9</td> <td><input type='radio' name='sr' value='10'>10</td> <td><input type='radio' name='sr' value='11'>11</td> <td><input type='radio' name='sr' value='12'>12</td> <td><input type='radio' name='sr' value='13'>13</td> <td><input type='radio' name='sr' value='14'>14</td> <td><input type='radio' name='sr' value='15'>15</td> <td><input type='radio' name='sr' value='16'>16</td></tr> <tr><td colspan='15'> </td></tr> <tr><th colspan='15'>Choose your target number system:</th></tr><tr> <td><input type='radio' name='tg' value='2'>2</td> <td><input type='radio' name='tg' value='3'>3</td> <td><input type='radio' name='tg' value='4'>4</td> <td><input type='radio' name='tg' value='5'>5</td> <td><input type='radio' name='tg' value='6'>6</td> <td><input type='radio' name='tg' value='7'>7</td> <td><input type='radio' name='tg' value='8'>8</td> <td><input type='radio' name='tg' value='9'>9</td> <td><input type='radio' name='tg' value='10'>10</td> <td><input type='radio' name='tg' value='11'>11</td> <td><input type='radio' name='tg' value='12'>12</td> <td><input type='radio' name='tg' value='13'>13</td> <td><input type='radio' name='tg' value='14'>14</td> <td><input type='radio' name='tg' value='15'>15</td> <td><input type='radio' name='tg' value='16'>16</td></tr> </table><br/> <table> <tr><th>Input your number</th><th><input id='num' type='text' maxlength='20' size='30'> </th><th>and then click <button onclick='run();'>Ok</button></th> <th id='msg' style='width:50%'> </th></tr><tr><th colspan='4'> </th></tr><tr><th colspan='4'> <textarea readonly='readonly' rows='6' style='width:500px;border:1px dotted #AAAAFF' id='sol'> Solution:</textarea></th></tr> </table> </body> </html>
|
Если ты 46ю строчку вырежешь и поставишь после 49й, то увидишь отличие и поймёшь как работает setInterval() (смотри на месседж после кн. "Ok") P.S. Заменил в строчках 34 и 40 innerHTML на value, т.к. в IE глючит Это сообщение отредактировал(а) Michael.de - 6.10.2008, 23:02
|