溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

javascript是什么樣的腳本語言

發(fā)布時(shí)間:2021-12-07 17:09:00 來源:億速云 閱讀:199 作者:小新 欄目:web開發(fā)

這篇文章給大家分享的是有關(guān)javascript是什么樣的腳本語言的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

javascript是一種事件驅(qū)動(dòng)的腳本語言。javascript是采用事件驅(qū)動(dòng)的機(jī)制來響應(yīng)用戶操作的,也就是說當(dāng)用戶對某個(gè)html元素進(jìn)行操作的時(shí)候,會產(chǎn)生一個(gè)事件,該事件會驅(qū)動(dòng)某些函數(shù)來處理。

本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

還記得當(dāng)初學(xué)JAVA-GUI編程時(shí)學(xué)習(xí)過事件監(jiān)聽機(jī)制,此時(shí)再學(xué)習(xí)JavaScript中的事件驅(qū)動(dòng)機(jī)制,不免簡單。當(dāng)初學(xué)習(xí)時(shí)也是畫過原理圖,所以從原理圖開始吧!

javascript是什么樣的腳本語言

js是采用事件驅(qū)動(dòng)(event-driven)響應(yīng)用戶操作的。也就是說當(dāng)用戶對某個(gè)html元素進(jìn)行操作的時(shí)候,會產(chǎn)生一個(gè)事件,該事件會驅(qū)動(dòng)某些函數(shù)來處理。

比如通過鼠標(biāo)或者按鍵在瀏覽器窗口或者網(wǎng)頁元素(按鈕,文本框...)上執(zhí)行的操作,我們稱之為事件(Event)。由鼠標(biāo)或熱鍵引發(fā)的一連串程序的動(dòng)作,稱之為事件驅(qū)動(dòng)(Event-Driver)。對事件進(jìn)行處理程序或函數(shù),我們稱之為事件處理程序(Event Handler)。

javascript是什么樣的腳本語言

事件的分類

鼠標(biāo)事件

當(dāng)用戶在頁面上用鼠標(biāo)點(diǎn)擊頁面元素時(shí),對應(yīng)的dom節(jié)點(diǎn)會觸發(fā)鼠標(biāo)事件,主要有click、dblclick、mousedown、mouseout、mouseover、mouseup、mousemove等。

鍵盤事件

當(dāng)用戶用鍵盤輸入信息時(shí),會觸發(fā)鍵盤操作事件。主要包括keydown、keypress、keyup三個(gè)。

HTML事件

在html節(jié)點(diǎn)加載變更等相關(guān)的事件,比如window的onload、unload、abort、error,文本框select、change等等。

其它事件

頁面中一些特殊對象運(yùn)行過程中產(chǎn)生的事件,比如xmlhttprequest對象的相關(guān)事件。

如下例:

作為第一個(gè)入門案例,會遇到一個(gè)問題如下:

代碼如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>鼠標(biāo)事件</title>
    <script type="text/javascript">
        function test(e) {
            window.alert("x = "+ e.cientX + " y =" + e.clientY);
        }
    </script>
</head>
<body onmousedown="test(event)">
    
</body>
</html>

以上代碼的作用是,在鼠標(biāo)按下后,彈出窗口顯示x、y的坐標(biāo)。

這段代碼在IE9、Chrome下都不可以正常運(yùn)行。這到底是什么原因呢?

后來,我就搜索了一下,發(fā)現(xiàn)有人和我有同樣的問題,他也解決了,我是參考js的onmousedown事件放在<body>標(biāo)簽下與firefox瀏覽器所產(chǎn)生的問題這篇文章的。

原來是body的原因。

于是,我就給body加了個(gè)寬高試試:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>鼠標(biāo)事件</title>
    <script type="text/javascript">
        function test(e) {
            window.alert("x = "+ e.cientX + " y =" + e.clientY);
        }
    </script>
</head>
<body onmousedown="test(event)">
    
</body>
</html>

我們不難發(fā)現(xiàn),當(dāng)我們沒有給body設(shè)置寬高時(shí),body的范圍僅僅是一條線,所以onmousedown事件也就無法響應(yīng)。所以,在給body設(shè)置寬高后,我們就可以在body的寬高范圍響應(yīng)onmousedown事件了。

如何理解事件驅(qū)動(dòng)機(jī)制

為了讓大家進(jìn)一步理解js的事件驅(qū)動(dòng)機(jī)制,我們來看兩個(gè)案例:

案例:顯示一個(gè)按鈕,點(diǎn)擊按鈕后彈出對話框顯示當(dāng)前時(shí)間。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>鼠標(biāo)事件</title>
    <script type="text/javascript">
        function test1() {
            window.alert(new Date().toLocaleString());
        }
    </script>
</head>
<body>
    <input type="button" onclick="test1()" value="顯示當(dāng)前時(shí)間" />
</body>
</html>

案例:通過點(diǎn)擊按鈕改變div的顏色。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>鼠標(biāo)事件</title>
    <script type="text/javascript">
        //js如何訪問元素的style屬性,進(jìn)行樣式修改
        function test4(eventObj) {
            //怎么知道button1被按,還是button2被按下
            //window.alert(eventObj.value);
            if(eventObj.value == "黑色") {
                //獲取div1
                var div1 = document.getElementById("div1");
                div1.style.background = "black";
            } else if(eventObj.value == "紅色") {
                var div1 = document.getElementById("div1");
                div1.style.background = "red";
            }
        }
    </script>
</head>
<body>
    <div id="div1" style="width: 400px; height: 300px; background: red;">div1</div>
    <input type="button" value="黑色" onclick="test4(this)" />
    <input type="button" value="紅色" onclick="test4(this)" />
</body>
</html>

javascript訪問修改CSS樣式表

javascript訪問修改樣式表,可以方便的動(dòng)態(tài)修改頁面:

1、訪問元素中style屬性的CSS樣式

這個(gè)可以直接使用style對象方便的訪問,例如:

<div id="mdiv" style="background-color:blue;">...</div>

訪問CSS的方法是:

<script type="text/javascript">
//獲得元素
var oDiv=document.getElementById("mdiv");
//訪問元素的style對象,再訪問對象中的屬性,也可以修改屬性的值,直接為他賦值
alert(oDiv.style.backgroundColor);
</script>

2、訪問外部定義的CSS樣式(類定義的CSS樣式)

這個(gè)沒法使用上面的方法去訪問,因?yàn)镃SS數(shù)據(jù)不是存儲在style屬性中,它是存儲在類中的。

訪問方法:先取得定義類的樣式表的引用,用document.styleSheets集合實(shí)現(xiàn)這個(gè)目的,這個(gè)集合包含HTML頁面中所有的樣式表,DOM為每個(gè)樣式表定義一個(gè)cssRules的集合,這個(gè)集合中包含定義在樣式表中的所用CSS規(guī)則(注意:Mozilla和Safasi中是cssRules,而IE中是rules)。

例,

外部樣式表(myCss.css)如下:

/*第一條規(guī)則*/
div .ss{
    background-color:red;
    width:101px;
}

/*第二條規(guī)則*/
a .btn2{
    background:url(imag/2-AccessCtl.jpg);
}

訪問css:

var ocssRules=document.styleSheets[0].cssRules || document.styleSheets[0].rules;
//訪問第一條規(guī)則
alert(ocssRules[0].style.backgroundColor);
//設(shè)置值
ocssRules[0].style.width="992px";

//訪問第二條規(guī)則
alert(ocssRules[1].style.background);
//設(shè)置值
ocssRules[0].style.background="url(imag/3-back.jpg);";

以上是我用到的時(shí)候一些簡單的應(yīng)用,具體深入的使用可以參看《javascript高級程序設(shè)計(jì)》中DOM技術(shù)部分。

如下例:

案例:通過點(diǎn)擊按鈕改變p的顏色(使用CSS樣式表修改)

外部樣式表(mycss.css):

.style1 {
    width: 600px;
    height: 400px;
    background: black;
}

說明:以下代碼在Chrome瀏覽器不起作用,在IE9中無論使用.rules還是使用.cssRules都通過測試。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>js事件驅(qū)動(dòng)機(jī)制操作外部CSS案例</title>
    <link rel="stylesheet" type="text/css" href="mycss.css" />
    <link rel="stylesheet" type="text/css" href="mycss2.css" />
    <script type="text/javascript">
        function test4(eventObj) {
            //獲取mycss.css中所有class選擇器
            var ocssRules = document.styleSheets[0].cssRules;//或xxx.rules
            //從ocssRules中取出你希望的class
            //ocssRules[0]:這里的0表示mycss.css文件中的一個(gè)樣式規(guī)則
            var style1 = ocssRules[0];
            if(eventObj.value == "黑色") {
                style1.style.background = "black";
            } else if(eventObj.value == "紅色") {
                style1.style.background = "red";
            }    
        }
    </script>
</head>
<body style="width: 900px; height: 800px; border: 1px solid red;">
    <!-- 如何通過修改style來改變style -->
    <div id="div1" class="style1">div1</div>
    <input type="button" value="黑色" onclick="test4(this)" />
    <input type="button" value="紅色" onclick="test4(this)" />
</body>
</html>

如何理解事件驅(qū)動(dòng)機(jī)制對不同瀏覽器的兼容

如何區(qū)分當(dāng)前瀏覽器類型?

代碼如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
        //"" null false 0 NaN都是false
        if(window.XMLHttpRequest){//Mozilla,Safari,IE7,IE8,IE9...
            if(!window.ActiveXObject){//Mozilla,Safari
                alert("Mozilla(FF),Safari");
            }else{
                alert("IE");
            }
        }else{
            alert("IE6");
        }
    </script>
</head>
<body>
    
</body>
</html>

一個(gè)事件可以被多個(gè)函數(shù)監(jiān)聽

事件寫在前面的會被先調(diào)用。

如下例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>鼠標(biāo)事件</title>
    <script type="text/javascript">
        function test4(e) {
            window.alert("ok1");
        }
        function test5(e) {
            window.alert("ok2");
        }
    </script>
</head>
<body>
    <input type="button" value="測試" onclick="test5(this),test4(this)" />
</body>
</html>

JavaScript常用事件

可參考:http://www.w3school.com.cn/jsref/jsref_events.asp及http://www.w3school.com.cn/jsref/dom_obj_event.asp。

下面還是舉幾個(gè)例子吧!

onfocus元素獲得焦點(diǎn)(當(dāng)光標(biāo)處在其中時(shí)觸發(fā))
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>鼠標(biāo)事件</title>
    <script type="text/javascript">
        function test6() {
            window.alert("輸入框被選中");
        }
    </script>
</head>
<body>
    <input type="text" id="text1" onfocus="test6()" /><br/>
</body>
</html>

那么如何使得頁面一加載,文本框即獲得焦點(diǎn),這是一個(gè)疑問?

window有三個(gè)事件

onload一張頁面或一幅圖像完成加載
onunload用戶退出頁面
onbeforeunload關(guān)閉頁面時(shí)

如下例:

說明:onload事件在IE9和Chrome瀏覽器測試通過,onbeforeunload事件在IE9中測試通過,onunload事件均沒通過。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>鼠標(biāo)事件</title>
    <script type="text/javascript">
        function test6() {
            window.alert("輸入框被選中");
        }
        function test7() {
            window.alert("onload...");
        }
        function test8() {
            window.alert("onbeforeunload...");
        }
        function test9() {
            window.alert("onunload...");
        }
    </script>
</head>
<body onload="test7()" onbeforeunload="test8()" onunload="test9()">
    <input type="text" id="text1" onfocus="test6()" /><br/>
</body>
</html>

js常用事件實(shí)例

請使用js完成如下功能:

1、防止用戶通過點(diǎn)擊鼠標(biāo)右鍵菜單copy網(wǎng)頁內(nèi)容

2、當(dāng)用戶試圖選中網(wǎng)頁文字copy時(shí),給出提示(版權(quán)所有,禁止拷貝)

說明:oncontextmenu(IE9、Chrome不支持),onselectstart(IE9支持,Chrome不支持)

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>鼠標(biāo)事件</title>
    <script type="text/javascript">
        function test6() {
            window.alert("輸入框被選中");
        }
        function test1() {
            window.alert("版權(quán)所有,禁止拷貝");
            return false;
        }
        function test2() {
            window.alert("不要點(diǎn)擊右鍵");
            return false;
        }
    </script>
</head>
<body onselectstart="return test1()" oncontextmenu="return test2()">
    請使用js完成如下功能:
    1、防止用戶通過點(diǎn)擊鼠標(biāo)右鍵菜單copy網(wǎng)頁內(nèi)容
    2、當(dāng)用戶試圖選中網(wǎng)頁文字copy時(shí),給出提示(版權(quán)所有,禁止拷貝)<br/>
    <input type="text" id="text1" onfocus="test6()" /><br/>
</body>
</html>

感謝各位的閱讀!關(guān)于“javascript是什么樣的腳本語言”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI