Question 1.
撰寫一段副程式,名為 addSum(a,b),傳遞兩個參數 a 及 b ,計算 a 加 b 的和後回傳,並將這段副程式儲存為獨立檔案,檔名為 add.js。
Question 2.
撰寫一份 HTML 文件,並包含一段 JavaScript 副程式,名為 addSum(a,b),addSum() 可以傳遞兩個參數 a 及 b,計算 a 加 b 的和後回傳。
Question 3.
製作一份 HTML 文件,一開啟就會以警告視窗顯示「JavaScript事件測試」。
Question 4.
假設變數a的起始值為1,製作一份表單,表單中包含一個type="button"的按鈕,每按一次a會增加1,並且在按下按鈕後,把a的最新值以警告視窗呈現。
Question 5.
製作一份含有一張圖片的HTML文件,使滑鼠移到圖片上時,執行以下動作:「this.style.border='#000 3px double';」,並在滑鼠移開圖片時,執行以下動作:「this.style.border='#000 0px solid';」
前面 DOCTYPE 宣告省略
Question 6.
已知陣列da=['阿里山','墾丁','太魯閣','九寨溝','紫禁城']使用for...in迴路以及document.write()方法,在畫面上呈現如下結果:
da[0]="阿里山"
da[1]="墾丁"
da[2]="太魯閣"
da[3]="九寨溝"
da[4]="紫禁城"
var da=['阿里山','墾丁','太魯閣','九寨溝','紫禁城']
for (var i in da){
document.write('da['+i+']="'+da[i]+'" ');
}
Question 7.
在不使用陣列的reverse()方法的前提下,如何設計一個副程式reverseArray(obj),將陣列以參數型式傳入,回傳的結果陣列中的元素是前後倒置的。
function reverseArray(obj){
var r=[];
var l=obj.length;
for (var i=0;i
Question 8.
將書附光碟中,檔名為2.9.2.array.js的JavaScript檔案,連結到HTML文件中,並將陣列na中重複的元素移除,由大到小排序後,以document.write()方法輸出到畫面上。na的初始值為「na=[24,6,8,13,6,13,22,7,8,9,24,5]。
Question 9.
將陣列da=['台灣/阿里山','台灣/墾丁','台灣/太魯閣','上海/外灘','北京/紫禁城']中元素裡「台灣」改為「臺灣」,並以document.write()顯示在畫面上。
da=['台灣/阿里山','台灣/墾丁','台灣/太魯閣','上海/外灘','北京/紫禁城']
var str=da.toString().replace(/台灣/ig,'臺灣');
da=str.split();
document.write(da);
Question 10.
The Quick Brown Fox Jumps Over The Lazy Dog是英文中有名的句子,26個字母通通用上,如何得知這句話裡的DOG字樣,是大寫還是小寫,或首字大寫的型態。
re=/dog/ig;
var s='The Quick Brown Fox Jumps Over The Lazy Dog';
document.write(re.exec(s));
Question 11.
indexOf()有兩個參數可用,如何統計「The Quick Brown Fox Jumps Over The Lazy Dog」這句話裡共有幾個字母「O」。
var s='The Quick Brown Fox Jumps Over The Lazy Dog';
var idx=0,result=0,vstr='O';
while (s.indexOf(vstr,idx)!=-1){
idx=s.indexOf(vstr,idx)+1;
result++;
}
document.write(result);
Question 12.
使用亂數輸出一個介於1-100之間的數字,並含有一位小數。
var a=Math.random()*100;
while(a<1){
a=Math.random()*100;
}
document.write(a.toFixed(1));
Question 13.
四捨五入是大家熟知的公式,假設這個公式已經被推翻,改成五捨六入,請設計一個名為myRound()的程式,能計算五捨六入後並回傳。
function myRound(num,fix){
var n=num*Math.pow(10,fix+1) % 10;
var exp=Math.pow(10,fix);
n=Math.floor(n);
if (n<6){
return Math.floor(num*exp)/exp;
}else{
return (Math.floor(num*exp)+1)/exp;
}
}
Question 14.
如何把今天的日期,以民國曆型式呈現,給您的唯一提示是民國元年是西元1911年。
var d=new Date();
var yy=d.getFullYear()-1911;
var mm=d.getMonth()+1;
var dd=d.getDate();
document.write('今天是民國'+yy+'年'+mm+'月'+dd+'日');
Question 15.
承上,除了用民國年呈現,並且加上今天是星期幾,星期的部份,請用國字一二三四五六日。
var d=new Date();
var week=['日','一','二','三','四','五','六'];
var yy=d.getFullYear()-1911;
var mm=d.getMonth()+1;
var dd=d.getDate();
var w=week[d.getDay()];
document.write('今天是民國'+yy+'年'+mm+'月'+dd+'日,星期'+w);
Question 16.
alert()是用以警告視窗方式顯示訊息,如果警告語是「addSum()需要兩個參數,這兩個參數都必需是數字」,現在要用alert()輸出這段警告語,但要寫成兩行輸出,也就是把逗號改成換行,應如何處理。
alert('addSum()需要兩個參數\n這兩個參數都必需是數字');
Question 17.
分別以alert()及document.write()輸出下列字串「來自底特律的饒舌新悍將Royce Da 5'9",首支主攻同名單曲"Rock City"」。
alert('來自底特律的饒舌新悍將Royce Da 5\'9",首支主攻同名單曲"Rock City"');
document.write('來自底特律的饒舌新悍將Royce Da 5\'9",首支主攻同名單曲"Rock City"');
Question 18.
請翻譯這句話「%u8ACB%u7FFB%u8B6F%u9019%u53E5%u8A71」。
document.write(unescape('%u8ACB%u7FFB%u8B6F%u9019%u53E5%u8A71'));
Question 19.
寫出一段判斷數字是單數還是雙數的副程式。
(1)
if (a%2==0){
alert('偶數');
}else{
alert('奇數');
}
(2)
var msg=(a%2==0)?'偶數':'奇數';
alert(msg);
Question 20.
書附光碟裡Question20中有5張圖,還有一份HTML文件,這份HTML內容就只是顯示一張圖片,那麼,如何改成開啟這份網頁,會隨機選擇圖片顯示呢?
var img=['P06.jpg','P32.jpg','P34.jpg','P36.jpg','P66.jpg'];
var imgIndex=Math.ceil(Math.random()*img.length);
document.write(' ');
Question 21.
已知陣列da=['阿里山','墾丁','太魯閣','九寨溝','紫禁城'],如何把da中的「太魯閣」,正確的說是把第2個元素抽掉?
var da=['阿里山','墾丁','太魯閣','九寨溝','紫禁城'];
var na=da.slice(2);
na.shift();
da.splice(2,0,na);
var s=da.splice(0,2).concat(na);
document.write(s);
Question 22.
「如果a介於1到10之間,而且b或c只要有一個不是3的倍數即可」,這個條件式如何用JavaScript表達?
(a>1 && a<10) && (b%3!=0 || c%3!=0)
Question 23.
算一下上午8:30分到下午的5:13分,總共是幾小時幾分鐘?
var d1=new Date('2008/1/1 08:30:00');
var d2=new Date('2008/1/1 17:13:00');
var sec=(d2-d1)/1000;
var hh,mm;
mm=sec/60%60;
hh=Math.floor(sec/60/60);
document.write ('上午 8:30 到下午 5:13 共計:'+hh+'小時'+mm+'分');
Question 24.
onClick是很常用的事件,那請設計兩個按鈕,一個按下去後會連結到http://www.google.com另一個按下去會連結到http://audi.tw。(更換連結的語法為window.location='http://audi.tw';)
Question 25.
在您知道什麼是九九乘法表的前題下,把九九乘法表輸出到畫面上,參考格式為:
2x1=2
2x2=4
:
9x9=81
for (var i=2;i<=9;i++){
for (var j=2;j<=9;j++){
document.write(i+'x'+j+'='+i*j+' ');
}
}
Question 26.
產生一組四位數,條件是第一位不可是0,並且四個數字不重複。
function myPop(obj,n){
var oarray=obj;
var s2=obj.slice(n+1);
var s1=oarray.splice(0,n);
return s1.concat(s2);
}
var digital=0;
while(digital<1000 || isNaN(digital)){
var a1=[0,1,2,3,4,5,6,7,8,9];
digital=0;
for (var i=0;i<4;i++){
n=(Math.random()*(10-i)).toFixed(0);
digital+=a1[n]*Math.pow(10,i);
a1=myPop(a1,n);
}
}
document.write(digital+' ');
Question 27.
日本人把一周七天用「七曜」來命名,分別為:土曜日是星期六 ,日曜日是星期天 ,月曜日是星期一 ,火曜日是星期二 ,水曜日是星期三 ,木曜日是星期四 ,金曜日是星期五 。然後有支未完成的程式在Question27中,目的是想知道今天是什麼曜日,目前內容是:
var f0='日曜日';
var f1='月曜日';
var f2='火曜日';
var f3='水曜日';
var f4='木曜日';
var f5='金曜日';
var f6='土曜日';
請繼續完成。
var f0='日曜日';
var f1='月曜日';
var f2='火曜日';
var f3='水曜日';
var f4='木曜日';
var f5='金曜日';
var f6='土曜日';
document.write(eval('f'+new Date().getDay()));
Question 28.
有一份名單如下:
var nameList='Wilson, Johnny, Tom, Allen, Michelle, Viki, Marco';
請用兩種不同寫法,得知這份名單裡面有沒有Elle這個人。
(1)
var nameList='Wilson, Johnny, Tom, Allen, Michelle, Viki, Marco';
var rnl=','+nameList.replace(/\s/g,'')+',';
var re=/,elle,/ig;
document.write(re.test(rnl));
(2)
var nameList='Wilson, Johnny, Tom, Allen, Michelle, Viki, Marco';
var rnl=nameList.replace(/\s/g,'').toLowerCase().split(',');
var result=false;
for (var i in rnl){
if (rnl[i]=='elle'){
result=true;
break;
}
}
document.write(result);
Question 29.
有人傳來了一個計算式,內容是「2008-4*24+102」,不巧的是,所有加減乘除的符號全部是中文全型,該怎麼計算結果?請繼續完成Question29.js。
var str='2008-4*24+102';
var result;
str=str.replace(/+/g,'+');
str=str.replace(/-/g,'-');
str=str.replace(/*/g,'*');
str=str.replace(///g,'/');
document.write(eval(str));
Question 30.
把「Question 30.」以「.03 noitseuQ」輸出到畫面上。
var s='Question 30.';
var na=s.split('');
document.write(na.reverse().join(''));