笔记练习:《Javascript入门经典(第5版)》page150_12.8_Practice

练习一:尝试编写一个 insertAfter() 方法,使用与 insertBefore() 类似的参数,也是就一个插入节点,一个目标节点。(提示:使用 insertBefore() 方法和 nextSibling 属性。)


代码内容如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>insertAfter()</title>
    <script>
        //创建 insertAfter() 方法,插入新节点insertElement、指示插入位置的节点targetPosition(插入到这个节点后面)
        function insertAfter(insertElement,targetPosition){
            var Element = targetPosition.nextSibling;
            targetPosition.parentNode.insertBefore(insertElement,Element.nextSibling);
        }
        //创建一个测试的 <p> 标签
        var newP = document.createElement("p");
        var newText = document.createTextNode("\n******");
        newP.appendChild(newText);
        //创建一个点击事件,执行在“测试3”后插入一段字符串
        window.onload = function(){
            document.getElementById("btn").onclick = function(){
                insertAfter(newP,document.getElementById("test3"));
            }
        };
    </script>
</head>
<body>
    <div>
        <ul>
            <li id="test1">测试1</li>
            <li id="test2">测试2</li>
            <li id="test3">测试3</li>
            <li id="test4">测试4</li>
            <li id="test5">测试5</li>
        </ul>
        <input type="button" id="btn" value="点击" />
        <p>点击按钮,使用 insertAfter() 方法插入‘******’在‘测试3’之后。</p>
    </div>
</body>
</html>



练习二:在使用程序清单12.4生成的菜单时,点击其中一个菜单项,页面就会跳转到相应的内容,但为了返回菜单,需要用户自己手工滚动页面。尝试修改代码,在每个 <h2> 元素之前添加“回到顶部”的链接。(提示:不需要添加新链接,只需要给每个锚点添加一个 href 和一些链接文本。)


动态创建菜单范例的 HTML 文件,代码内容如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Scripting the DOM:《海子诗集》</title>
    <script src="menu.js"></script>
    <script>window.onload = makeMenu ;</script>
</head>
<body>
    <h1>海子诗集</h1>
    <h2>一:答复</h2>
    <p>麦地,别人看见你,觉得你温暖,美丽,我则站在你痛苦质问的中心,被你灼伤,我站在太阳痛苦的芒上,麦地,神秘的质问者啊,当我痛苦地站在你的面前,你不能说我一无所有,你不能说我两手空空。</p>
    <h2>二:重建家园</h2>
    <p>在水上放弃智慧,停止仰望长空,为了生成你要流下屈辱的泪水,来浇灌家乡平静的果园,生成无须洞察,大地自己呈现,用幸福也用痛苦,来重建家乡的屋顶,放弃沉思和智慧,如果不能带来麦粒,请对诚实的大地,保持缄默和你那幽暗的本性,风吹炊烟,果园就在我的身旁静静叫喊,"双手劳动,慰籍心灵"。</p>
    <h2>三:明天醒来我会在哪一只鞋子里</h2>
    <p>我想我已经够
        小心翼翼的,我的脚趾正好十个,我的手指正好十个,我生下来时哭几声,我死去时别人又哭,我不声不响的,带来自己这个包袱,尽管我不喜爱自己,但我还是悄悄打开,我在黄昏时坐在地球上,我这样说并不表明晚上,我就不在地球上早上同样,地球在你屁股下,结结实实,老不死的地球你好,或者我干脆就是树枝,我以前睡在黑暗的壳里,我的脑袋就是我的边疆,就是一颗梨,在我成型之前,我是知冷知热的白花,或者我的脑袋是一只猫,安放在肩膀上,造我的女主人荷月远去,成群的阳光照着大猫小猫,我的呼吸,一直在证明,树叶飘飘,我不能放弃幸福,或相反,我以痛苦为生,埋葬半截,来到村口或山上,我盯住人们死看,呀,生硬的黄土人丁兴旺。</p>
    <h2>四:麦子熟了</h2>
    <p>那一年兰州一带的新麦,熟了,在回家的路上,在水面混了三十多年的父亲还家了,坐着羊皮筏子,回家来了,有人背着粮食,夜里推门进来,灯前,认清是三叔,老哥俩,一宵无言,半尺厚的黄土,麦子熟了。</p>
    <h2>五:死亡之诗(之一)</h2>
    <p>漆黑的夜里有一种笑声笑断我坟墓的木板,你可知道。这是一片埋葬老虎的土地,正当水面上渡过一只火红的老虎,你的笑声使河流漂浮,的老虎,断了两根骨头,正当这条河流开始在存有笑声的黑夜里结冰,断腿的老虎顺流而下,来到我的,窗前。一块埋葬老虎的木板,被一种笑声笑断两截。</p>
    <h2>六:死亡之诗(之二)</h2>
    <p>我所能看见的少女,水中的少女,请在麦地之中,清理好我的骨头,如一束芦花的骨头,把他装在箱子里带回,我所能看见的,洁净的少女,河流上的少女,请把手伸到麦地之中,当我没有希望坐在一束,麦子上回家,请整理好我那凌乱的骨头,放入一个小木柜。带回它,象带回你们富裕的嫁妆,但是,不要告诉我,扶着木头,正在干草上晾衣的,母亲。</p>
    <h2>七:死亡之诗(之三:采摘葵花)</h2>
    <p>雨夜偷牛的人,爬进了我的窗户,在我做梦的身子上,采摘葵花,我仍在沉睡,在我睡梦的身子上,开放了彩色的葵花,那双采摘的手,仍象葵花田中,美丽笨拙的鸭子,雨夜偷牛的人,把我从人类,身体中偷走。我仍在沉睡。我被带到身体之外,葵花之外。我是世界上,第一头母牛(死的皇后),我觉的自己很美,我仍在沉睡。雨夜偷牛的人,于是非常高兴,自己变成了另外的彩色母牛,在我的身体中,兴高彩烈地奔跑,扶着木头,正在干草上晾衣的,母亲。</p>
    <h2>八:两座村庄</h2>
    <p>和平与情欲的村庄,诗的村庄,村庄母亲昙花一现,村庄母亲美丽绝伦,五月的麦地上天鹅的村庄,沉默孤独的村庄,一个在前一个在后,这就是普希金和我诞生的地方,风吹在村庄,风吹在海子的村庄,风吹在村庄的风上,有一阵新鲜有一阵久远,北方星光照耀南国星座,村庄母亲怀抱中的普希金和我,闺女和鱼群的诗人安睡在雨滴中,是雨滴就会死亡!,夜里风大听风吹在村庄,村庄静座象黑漆漆的财宝,两座村庄隔河而睡,海子的村庄睡的更沉。</p>
    <h2>九:十四行:王冠</h2>
    <p>我所热爱的少女,河流的少女,头发变成了树叶,两臂变成了树干,你既然不能做我的妻子,你一定要成为我的王冠,我将和人间的伟大诗人一同戴,用你美丽的叶子缠绕我的竖琴和箭袋,秋天的屋顶、时间的重量,秋天又苦又香,使石头开花象一顶王冠,秋天的屋顶又苦又香,空中弥漫着一顶王冠,被劈开的月桂和扁桃和苦香,夜里风大听风吹在村庄,村庄静座象黑漆漆的财宝,两座村庄隔河而睡,海子的村庄睡的更沉。</p>
</body>
</html>



动态创建菜单范例的 Javascript 文件,代码内容如下:

function makeMenu(){
    var h2s = document.getElementsByTagName("h2");
    var menu = document.createElement("div");
    //给 menu 对象设置 TOP 锚点
    menu.setAttribute("name","TOP");
    var menuUl = document.createElement("ul")
    menu.appendChild(menuUl);
    for(var i = 0; i < h2s.length; i++){
        var itemText = h2s[i].childNodes[0].nodeValue;
        var menuLi = document.createElement("li");
        menuUl.appendChild(menuLi);
        var menuLiA = document.createElement("a");
        menuLiA = menuLi.appendChild(menuLiA);
        menuLiA.setAttribute("href","#item" + i);
        var menuText = document.createTextNode(itemText);
        menuLiA.appendChild(menuText);
        var anchor = document.createElement("a");
        //给锚点添加链接文本
        var backTopText = document.createTextNode("回到顶部");
        anchor.appendChild(backTopText);
        anchor.setAttribute("name","item" + i);
        //给锚点添加链接,指向 menu 对象的 TOP 锚点
        anchor.setAttribute("href","#TOP");
        document.body.insertBefore(anchor,h2s[i]);
    }
    document.body.insertBefore(menu,document.body.firstChild);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值