《JavaScript DOM编程艺术》第六章笔记

 

1.P85“如果没有placeholder图片”指的是ID,还是src还是图片?

如果没有ID,结果和书本一样,点击哪个链接都没反应。

如果没有SRC,进去时没有预图片,但是其他链接正常显示图片。

如果没有图片,和没有SRC差不多,预加载页面图片框架大小不同而已。

所以书本上说的是ID,书本这点没有说清楚。

意味着文档如果没有这种ID的东西(在这里是预加载图片placeholder.gif),就不能好好工作,但是这种东西不一定有,所以要进行平稳退化(没有它也能好好工作),这也是平稳退化的意义所在。

 

2.过程中发现加入alert('1');可以容易发现哪一步有没有执行。以后可能有document.write方法。

 

3.onclick = function() {

 alert("1");

      return !func2();

  alert('2');

}

function func2(){

alert("3");

}

alert('4');

开网页弹4,点击弹1,3。与!无关。说明

return会结束函数。

②载入执行4,再点击执行其他。

return里面的函数func2()会执行。

但是如果里面是赋值,会不会保存下来呢?

 

4.我先测试各节点

 onclick = function() {

var x=1;

alert(x);

alert("x");

    return func2();

}

 

var y=2;   //先执行这里。

alert(y);  

alert("y");

alert('y'); //说明双引号和单引号没区别。

 

function func2(){

var z=3;

alert(z);

alert("z");

}

 

    var k=4;   

alert(k);

alert("k"); //运行结果是2yy4k 点击后1x3z,如果是onload,则全部在载入时显示(同上

               顺序)。如果是beforeload,则只显示2yy4k,说明function里面的函数不会

               给用户看到。提前试用了一下这个函数,以后会再学到吧。

    alert(x);   //以下的都不运行

    alert(y);

    alert(z);

alert("k"); //因为这里y没有赋值,所以不运行!!与④是一样效果的!说明程序错误的话,下面的都不运行。

如果把var y=2;变成全局变量y=2;,且alert(y)放在alert(x)之前,则这里正常运行出y

如果把x变成全局变量呢?答案是没有运行出xonloadbeforeload也一样),因为x存在function里,是后执行的函数。

△如果把一个错误的未定义函数alert(p);放在func2()的前一句。结果是2,y,y,点击后还是1,x,3,z。说明错误函数不会影响function

 

④var c=d.firstChild;

onclick = function() {

 alert("1");

      return !func2();

}

function func2(){

alert("2");

}

发现下面的窗口全部无法弹出。

如果把var放在最后,页面正常弹出窗口。

 

onclick = function() {

  x=1;

    return func2();

}

function func2(){

alert(x);

}

结果是1,说明函数间的全局变量是可以行得通的。

相反,如果把alert(x)写在上面,则全部都会出错。如下,全部都不运行。

  onclick = function() {

 alert(x);

 alert("x");

    return func2();

}

function func2(){

 x=1;

     alert("y");  

}

 再有,函数间的局部变量也是不互通的。下面的程序只显示一个2

   onclick = function() {

var x=2;

alert(x);

    return func2();

}

function func2(){

alert(x);  

}

 

 

5.回到上面func2()里面的值会不会保存的问题,从上面的讨论可以知道,这个要分它原本是局部变量还是全局变量来看。而且要看它之后是用到哪里,function里还是其他地方。要分清楚函数的执行顺序。如果是平行的函数呢?额,还是全部用局部变量好。

 

6.点击链接时弹窗,该如何写?

    var a=document.getElementsByTagName("a")[0];

a.onclick = function() {

alert("2");

}

7.links[i].onclick = function() {

    return !showPic(this);}

如果showpic函数不能运行,那么onclick运行,打开新页面。如果showpic函数正常,那么链接不运行,和之前的showpic(this);

                     return false;语句效果一样。

 

posted @ 2016-11-19 16:24  森森森shen  阅读(653)  评论(0编辑  收藏  举报