JavaScript初級(jí)教程(第五課續(xù))
嘗試這個(gè)例子并閱讀下面的注釋:
My favorite animal is ...
注釋一個(gè)比較復(fù)雜的JavaScript程序。首先,我們看看表單本身:
<form name="the_form">
<select name="choose_category" onChange="swapOptions(window.document.the_form.choose_category.options[selectedIndex].text);">
<option selected>Dogs</option>
<option>Fish</option>
<option>Birds</option>
</select>
<select name="the_examples" multiple>
<option>poodle</option>
<option>puli</option>
<option>greyhound</option>
</select>
</form>
該表單有兩個(gè)元素:一個(gè)下拉選單和一個(gè)列表選單。下列選單的處理器調(diào)用函數(shù)swapOptions()。該函數(shù)在首部已經(jīng)
作了定義,其參數(shù)為- 被選的動(dòng)物種類。
首部中我首先定義的幾個(gè)數(shù)組:
var dogs = new Array("poodle","puli","greyhound");
var fish = new Array("trout", "mackerel", "bass");
var birds = new Array("robin", "hummingbird", "crow");
注意這些數(shù)組的命名和下拉選單中的命名一致。很快你就會(huì)明白為什么?,F(xiàn)在我們看看當(dāng)下拉選單被改變時(shí)被調(diào)用的函數(shù):
function swapOptions(the_array_name)
{
var numbers_select = window.document.the_form.the_examples;
var the_array = eval(the_array_name);
setOptionText(window.document.the_form.the_examples, the_array);
}
該函數(shù)的定義包括一個(gè)參數(shù):the_array_name。如果打開(kāi)下拉選單并選擇"Fish" ,則the_array_name就等同于字符串"Fish"。
函數(shù)主體中第1行包括一個(gè)變量用于引用第2個(gè)表單元素:列表選單。
第2行引入一個(gè)新概念:eval()。eval()比較奇特,我們留在以后的課程中講解。第2行命令的這些結(jié)果是變量the_array將等同于前面所定義的數(shù)組之一。如果the_array_name是"Fish",the_array則等同于Fish數(shù)組。如果你想了解這是怎么作的,請(qǐng)學(xué)習(xí)eval。
第3行定義另一個(gè)函數(shù)setOptionText()。setOptionText()用于將the_array賦值給列表選單。以下為該函數(shù)內(nèi)容:
function setOptionText(the_select, the_array)
{
for (loop=0; loop < the_select.options.length; loop++)
{
the_select.options[loop].text = the_array[loop];
}
}
該函數(shù)有兩個(gè)參數(shù):對(duì)選單元素的引用和一個(gè)數(shù)組。第1行設(shè)立一個(gè)for循環(huán),由于循環(huán)所有的選單元素。注意選單元素的選項(xiàng)屬性是該選單所有選項(xiàng)組成的數(shù)組。因?yàn)樗且粋€(gè)數(shù)組,你可以用長(zhǎng)度(length)屬性發(fā)現(xiàn)數(shù)組的元素?cái)?shù)目。第1次循環(huán)時(shí),循環(huán)變量值是0。循環(huán)的主體值為:
the_select.options[0].text = the_array[0];
如果你在下拉選單中選擇了"Fish",則the_array[0]就是"trout",所以該行命令將列表選單中的第1個(gè)選項(xiàng)改成"trout" 。下一次循環(huán)時(shí),循環(huán)等于1,并且列表選單中第2個(gè)選項(xiàng)則是 "mackerel" 。
如果你理解了該例子,你對(duì)JavaScript的了解就比較深了。
初級(jí)教程到此結(jié)束,隨后要發(fā)布進(jìn)階教程,敬請(qǐng)關(guān)注。
相關(guān)文章
document 和 document.all 分別什么時(shí)候用
document 和 document.all 分別什么時(shí)候用...2006-09-09淺談JavaScript的內(nèi)置對(duì)象和瀏覽器對(duì)象
下面小編就為大家?guī)?lái)一篇淺談JavaScript的內(nèi)置對(duì)象和瀏覽器對(duì)象。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06JavaScript腳本語(yǔ)言在網(wǎng)頁(yè)中的簡(jiǎn)單應(yīng)用
JavaScript腳本語(yǔ)言在網(wǎng)頁(yè)中的簡(jiǎn)單應(yīng)用...2007-05-05JavaScript函數(shù)表達(dá)式詳解及實(shí)例
這篇文章主要介紹了JavaScript函數(shù)表達(dá)式詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05一個(gè)簡(jiǎn)單的網(wǎng)站訪問(wèn)JS計(jì)數(shù)器 刷新1次加1次訪問(wèn)
一個(gè)簡(jiǎn)單的網(wǎng)站訪問(wèn)JS計(jì)數(shù)器,一般就是學(xué)習(xí)下原來(lái),不建議使用,現(xiàn)在cnzz或百度統(tǒng)計(jì)多試不錯(cuò)的2012-09-09深入理解JavaScript系列(30):設(shè)計(jì)模式之外觀模式詳解
這篇文章主要介紹了深入理解JavaScript系列(30):設(shè)計(jì)模式之外觀模式詳解,外觀模式(Facade)為子系統(tǒng)中的一組接口提供了一個(gè)一致的界面,此模塊定義了一個(gè)高層接口,這個(gè)接口值得這一子系統(tǒng)更加容易使用,需要的朋友可以參考下2015-03-03Javascript實(shí)現(xiàn)異步編程的過(guò)程
這篇內(nèi)容詳細(xì)分析了Javascript實(shí)現(xiàn)異步編程的過(guò)程以及原理解釋,對(duì)此知識(shí)點(diǎn)有興趣的朋友可以學(xué)習(xí)下。2018-06-06