关于JavaScript函数参数e

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于JavaScript函数参数e相关的知识,希望对你有一定的参考价值。

当我们需要用到event事件的属性或方法时有时候会这样写,如下列语句:

...
function func(e)
var e = e?e:window.event;
...


这个e放到函数里面作为一个参数到底什么意思,这种形式到底什么意思,有没有关于这种用法形式原理的详细解释或者参考手册?以下为通过这个方式写的一段代码,firefox下报错 ' e is undefined',错在哪里:(将该段代码替换head头的<script></script>标签即可)

....

<script type="text/javascript">
window.onload = function()
a();

function cancelBubble(e)
var e = e?e:window.event;
if(window.event) e.cancleBubble = true;
else e.stopPropagation(); ///////////报错点: e is undefined

function a(e)
var e = new event();
alert(e);
cancelBubble(e);

function b()
alert(1);

</script>

....

劳驾各位,好回答给分翻倍。

以e为参数的函数一般是以回调函数的形式被调用的。
也就是在event发生的时候回调。
调用的时候 e 就包含了发生事件的具体内容。

function func(e)
e = e || window.event;
... ...


这样写的好处就是保证 e 不会为 undefined。
window.event 总是有的。
参考技术A 正确的程序代码如下:
  <script type="text/javascript">
  window.onload = function()
  a();
  function func(e)
  e = e || window.event;
  if(window.event) e.cancleBubble = true;
  else e.stopPropagation(); ///////////报错点: e is undefined
  
  function a(e)
  var e = new event();
  alert(e);
  cancelBubble(e);
  
  function b()
  alert(1);
  
  </script>

JavaScript函数:
  将脚本编写为函数,就可以避免页面载入时执行该脚本。 函数包含着一些代码,这些代码只能被事件激活,或者在函数被调用时才会执行[1] 。
  你可以在页面中的任何位置调用脚本(如果函数嵌入一个外部的 .js 文件,那么甚至可以从其他的页面中调用)。函数在页面起始位置定义,即 <head> 部分。
  <html>
  <head>
  <script type="text/javascript">
  function displaymessage()
  alert("Hello World!")
  
  </script>
  </head>
  <body>
  <form>
  <input type="button" value="Click me!" onclick="displaymessage()">
  </form>
  </body>
  </html>
  假如上面的例子中的 alert("Hello world!!") 没有被写入函数,那么当页面被载入时它就会执行。当用户击中按钮时,脚本才会执行。我们给按钮添加了 onClick 事件,这样按钮被点击时函数才会执行。
参考技术B 你这样写就可以了
function doSomething(e)
if (!e) var e = window.event
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();

---------------------------------------------
是你传递,创建event的方法不对
下面是我修改后的代码你看看
---------------------------------------------
<script type="text/javascript">
window.onload = function(e)
a(e);

function cancelBubble(e)
var e = e?e:window.event;
if(window.event) e.cancleBubble = true;
else e.stopPropagation(); ///////////报错点: e is undefined

function a(e)
//var e = new event();
alert(e);
if(!e) var e = window.event;
alert(e);
cancelBubble(e);

function b()
alert(1);

</script>

关于函数参数的 Javascript 元素子项

【中文标题】关于函数参数的 Javascript 元素子项【英文标题】:Javascript element children about function parameter 【发布时间】:2018-06-09 19:20:08 【问题描述】:

以下是制作杂耍的部分代码。让我困惑的是: 在这种情况下,参数“容器”的等效 DOM 节点是什么? 有一堆元素,怎么认为&lt;img&gt;元素是container.children?

<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>
    <body>

    <div id="slideshow">
        <img src="https://www.kasandbox.org/programming-images/animals/birds_rainbow-lorakeets.png"  />
        <img src="https://www.kasandbox.org/programming-images/animals/butterfly.png" />
        <img src="https://www.kasandbox.org/programming-images/animals/cat.png"  />
        <img src="https://www.kasandbox.org/programming-images/animals/crocodiles.png"  />
        <img src="https://www.kasandbox.org/programming-images/animals/fox.png"  />

    </div>

    <script>
var slideShow = function(container) 
    this.images = [];
    this.curImage = 0;
    for (i = 0; i < container.childElementCount; i++) 
        this.images.push(container.children[i]);
        this.images[i].style.display = "none";
    

【问题讨论】:

在 DOM 层次结构中直接嵌套在另一个元素中的元素是它的子元素。 所以&lt;head&gt;&lt;body&gt;&lt;html&gt;的孩子,&lt;div&gt;&lt;script&gt;&lt;body&gt;的孩子,图片是&lt;div id="slideshow"&gt;的孩子 【参考方案1】:

container 是您调用new slideShow() 时传递的任何元素。在你的情况下,它应该是:

var ss = new slideShow(document.getElementById('slideshow'));

那么container.children就是直接嵌套在那个DIV里面的元素,都是&lt;img&gt;元素。

【讨论】:

是的,我完全是个笨蛋。脚本代码最后一行是slideShow(document.getElementById("slideshow")); 难怪我这么糊涂... Thx

以上是关于关于JavaScript函数参数e的主要内容,如果未能解决你的问题,请参考以下文章

关于函数参数的 Javascript 元素子项

JavaScript--关于实例对象带不带参数和构造函数带不带参数的关系

JavaScript:未命名函数的参数

将 Javascript 函数作为参数传递 - 这个逻辑是如何工作的?

js中 function(e) e是啥意思,代表啥,请举例说明

混淆 Javascript 函数和参数声明 [重复]