JavaScript基礎(chǔ)與DOM

JavaScript基礎(chǔ)與DOM

鍵盤按下與松開

onkeypress:鍵盤按下并松開
onkeydown:鍵盤按下未松開
onkeyup:鍵盤按下正松開

圖片輪播

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus?">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>

  <style type="text/css">
    li{
        list-style:none;
        position:relative;
        left:570px;
        margin-left:20px;
        border:1px solid black;
        width:15px;
        float:left;
    }
    .mouseover{
        background-color:red;
    }
  </style>
 </head>
 <script type="text/javascript">
 <!--
    var n = 0;
    var t = 0;
    var b = 0;
    function init() {
        var lis = document.getElementsByTagName("li");
        //給每個(gè)li標(biāo)簽注冊(cè)事件
        for (var i=0; i<lis.length; i++) {
            //鼠標(biāo)放在數(shù)字標(biāo)簽上時(shí),圖片靜止
            lis[i].onmouseover = function () {
                //時(shí)間靜止
                clearTimeout(t);
                //拿到鼠標(biāo)放置的數(shù)字
                b = this.innerHTML;
                document.getElementById("photo").src = "images/photo_0" + b + ".jpg";
                //清空數(shù)字對(duì)應(yīng)的樣式
                clear();
                this.className = "mouseover";
            };
            //鼠標(biāo)劃出時(shí),圖片自動(dòng)播放
            lis[i].onmouseout = function () {
                n = b;
                t = setTimeout("fun()",1500);
            };
        }
        //圖片自動(dòng)播放
        fun();
    }

    function fun() {
        n ++;
        if (n == 7) {
            n = 1;
        }
        //每隔一秒更換圖片
        document.getElementById("photo").src = "images/photo_0" + n + ".jpg";
        //清空
        clear();
        //設(shè)置相應(yīng)的數(shù)字變色
        document.getElementById("i"+n).className = "mouseover";
        t = setTimeout("fun()",1500);
    }
    //清空樣式
    function clear() {
        //清空數(shù)字對(duì)應(yīng)的樣式
        var lis = document.getElementsByTagName("li");
        for (var i=0; i<lis.length; i++) {
            lis[i].className = "";
        }
    }
 //-->
 </script>
 
 <body onload = "init()">
    <div id="image" class="image" align = "center">
        <img id = "photo" src="images/photo_01.jpg" width="300px" height="300px" border="0">
    </div>
    <ol>
        <li id = "i1">1</li>
        <li id = "i2">2</li>
        <li id = "i3">3</li>
        <li id = "i4">4</li>
        <li id = "i5">5</li>
        <li id = "i6">6</li>
    </ol>
    
 </body>
</html>

xml Dom

節(jié)點(diǎn)信息:

每個(gè)節(jié)點(diǎn)都有包含關(guān)于節(jié)點(diǎn)某些信息的屬性劳吠,這些屬性是:

  • nodeName(節(jié)點(diǎn)名稱)
  • nodeValue(節(jié)點(diǎn)值)
  • nodeType(節(jié)點(diǎn)類型)

可以通過使用節(jié)點(diǎn)彼此間的關(guān)系在節(jié)點(diǎn)間進(jìn)行導(dǎo)航:

  • parentNode
  • childNodes
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

添加節(jié)點(diǎn)信息刪除節(jié)點(diǎn)信息(簡(jiǎn)易版)

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus?">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
  <style type="text/css">
    
  </style>
 </head>
 <script type="text/javascript">
 <!--
    function add() {
        //獲取輸入的內(nèi)容
        var name  = document.getElementById("name").value;
        var email = document.getElementById("email").value;
        var age   = document.getElementById("age").value;

        if (name == "") {
            alert("姓名不能為空筋岛!");
            document.getElementById("name").focus();
            return;
        }
        
        var tables = document.getElementsByTagName("table");
        //創(chuàng)建新的表格行
        var tr     = document.createElement("tr");
        var nameTd = document.createElement("td");
        var emailTd= document.createElement("td");
        var ageTd  = document.createElement("td");
        var option = document.createElement("td");
        //添加內(nèi)容
        nameTd.innerHTML = name;
        emailTd.innerHTML =email;
        ageTd.innerHTML = age;
        option.innerHTML = "<input type='button' value='刪除' onclick='deleteTr(this)'>";

        tr.appendChild(nameTd);
        tr.appendChild(emailTd);
        tr.appendChild(ageTd);
        tr.appendChild(option);
        //將tr添加到tbody中汪疮?返咱?逢净?哥放??爹土?甥雕??胀茵?社露??
        tables[1].appendChild(tr);
    }
    //刪除操作
    function deleteTr(option) {
        var table = option.parentNode.parentNode.parentNode;
        var tr    = option.parentNode.parentNode;
        table.removeChild(tr);
    }
 //-->
 </script>
 <body>
    <table width=600 height=100 align=center>
    <tr>
        <td>姓名:</td>
        <td><input type="text" name="name" id="name"></td>
        <td>郵箱:</td>
        <td><input type="text" name="email" id="email"></td>
        <td>年齡:</td>
        <td><input type="text" name="age" id="age"></td>
    </tr>
    <tr>
        <td align="center" colspan="6"><input type="button" value="添加" onclick="add()"></td>
    </tr>
    </table>
    <br/><br/><br/><br/><br/><br/>
    <hr>
    <table width="500" border="1" align="center">
        <tr>
            <td>姓名</td>
            <td>郵箱</td>
            <td>年齡</td>
            <td>操作</td>
        </tr>
    </table>
 </body>
</html>

定義公有屬性和私有屬性

私有屬性
  • 在函數(shù)中:用var定義
  • 在函數(shù)外:用對(duì)象.屬性名定義
公有屬性
  • 在函數(shù)中:用this.屬性名定義
  • 在函數(shù)外:函數(shù)名.prototype.屬性名=默認(rèn)值;定義
function Person() {
    var name = "lily";
}
Person.prototype.height = 190;  //定義了一個(gè)公有屬性
var p = new Person();   //new一個(gè)對(duì)象
p.weight = 180;  //函數(shù)外定義私有屬性

var p1 = new Person();
alert(p1.weight);  //彈不出來(lái)宰掉,因?yàn)閣eight屬性是私有的

定義公有方法和私有方法

私有方法:
  • 在函數(shù)中:采用var 方法名 = function() {}定義
  • 在函數(shù)外:采用對(duì)象名.方法名 = function(){}定義
function Person() {
    var show = function() {
        alert("我是私有方法");
    }
    this.display = function() {
        show();    //可以調(diào)用
    }
}   
Person.prototype.sing = function() {
    alert("sing");  //公有方法
}   
var p = new Person();
//show();   //調(diào)用不來(lái)呵哨,因?yàn)槭撬接械?p.eat = function() {
    alert("eat");    //私有方法
}
公有方法:
  • 在函數(shù)中赁濒,采用this.方法名 = function(){}定義
  • 在函數(shù)外:采用函數(shù)名.prototype

靜態(tài)屬性和靜態(tài)方法

注意:定義靜態(tài)屬性和方法都用函數(shù)名來(lái)定義轨奄,調(diào)用的時(shí)候只能用函數(shù)名來(lái)調(diào)用,不能用對(duì)象名調(diào)用拒炎。

構(gòu)造函數(shù)(無(wú)參挪拟,有參)

注意:函數(shù)名不要重復(fù),因?yàn)橄榷x的函數(shù)永遠(yuǎn)調(diào)用不到

直接用object或函數(shù)對(duì)象加屬性與方法

如何創(chuàng)建JavaScript對(duì)象

創(chuàng)建JavaScript對(duì)象的三種方式:
  • 采用new 函數(shù)名()
  • 采用new object()
  • 采用json格式定義
var json = {"a":"中國(guó)","b":"美國(guó)","c":"韓國(guó)"};
alert(json.a);  //拿到中國(guó)字符串
alert(json["b"]); //拿到美國(guó)字符串

var json = {1:"中國(guó)",2:"美國(guó)",3:"韓國(guó)"};
alert(json["2"]); //拿到美國(guó)字符串
//注意:不能使用json.2或者json."2"來(lái)獲取值

//如果想拿到所有的值击你,需要用foreach循環(huán)
for (var i in json) {
    alert(i + ":" +json[i]);  //打印所有的值玉组,不能使用json.i
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市丁侄,隨后出現(xiàn)的幾起案子惯雳,更是在濱河造成了極大的恐慌,老刑警劉巖鸿摇,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件石景,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)潮孽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門揪荣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人往史,你說(shuō)我怎么就攤上這事仗颈。” “怎么了椎例?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵挨决,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我订歪,道長(zhǎng)凰棉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任陌粹,我火速辦了婚禮撒犀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘掏秩。我一直安慰自己或舞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布蒙幻。 她就那樣靜靜地躺著映凳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪邮破。 梳的紋絲不亂的頭發(fā)上诈豌,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音抒和,去河邊找鬼矫渔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛摧莽,可吹牛的內(nèi)容都是我干的庙洼。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼镊辕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼油够!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起征懈,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤石咬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后卖哎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鬼悠,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡虏束,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了厦章。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片镇匀。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖袜啃,靈堂內(nèi)的尸體忽然破棺而出汗侵,到底是詐尸還是另有隱情,我是刑警寧澤群发,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布晰韵,位于F島的核電站,受9級(jí)特大地震影響熟妓,放射性物質(zhì)發(fā)生泄漏雪猪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一起愈、第九天 我趴在偏房一處隱蔽的房頂上張望只恨。 院中可真熱鬧,春花似錦抬虽、人聲如沸官觅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)休涤。三九已至,卻和暖如春笛辟,著一層夾襖步出監(jiān)牢的瞬間功氨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工手幢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捷凄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓弯菊,卻偏偏與公主長(zhǎng)得像纵势,于是被迫代替她去往敵國(guó)和親踱阿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子管钳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容