gpt4 book ai didi

javascript - 如何给函数添加名称?

转载 作者:行者123 更新时间:2023-11-28 19:25:57 24 4
gpt4 key购买 nike

这可能是一个非常简单的问题,但我有点困惑 jQuery 或 JavaScript 如何以这种方式工作。

如果我有一个像这样的函数

$(function() {
$('section').on('click', 'div', function(e) {
var number = Math.floor(Math.random()*videos.length);
$(this).find('source').each(function(index){
videoSrc = videos[number][index].src;
$(this).attr('src', videoSrc);
$('video').load();
$('video').play();
});
});
});

我该如何编写它以便我可以引用它以在 html 中运行?

<body onload="run this function()"> </body>

我看到像 window.onload=function() 或 thisFunction = function() 等这样写的函数。与 HTML 之类的东西相比,它让我对如何声明函数感到困惑,HTML 实际上只是 div id="name"或 class="name"等。

我想我的主要问题是如何让上面的代码在 html 中运行 onload 而不是点击?我在哪里为函数命名以便以后可以使用它?

任何澄清这一点的帮助将不胜感激!干杯!

我收到的很多答案最终让我更加困惑,我实际上不知道现在该怎么办..我知道我一定是想太多了,但我仍然不知道如何得到该网站在点击和页面加载时进行随机化。

这是我目前拥有的代码。

HTML

    <head>
<title>Randomizer</title>
</head>

<body>

<section>

<div>
<video loop autoplay>
<source src="" type="">
<source src="" type="">
Your browser does not support the <code>video</code> element.
</video>
</div>

</section>

</body>

</html>

JavaScript

var videos = [
[{type:'mp4', 'src':'/videos/1.webm'}, {type:'webm', 'src':'/videos/1.mp4'}],
[{type:'mp4', 'src':'/videos/2.webm'}, {type:'webm', 'src':'/videos/2.mp4'}],
[{type:'mp4', 'src':'/videos/3.webm'}, {type:'webm', 'src':'/videos/3.mp4'}],
[{type:'mp4', 'src':'/videos/4.webm'}, {type:'webm', 'src':'/videos/4.mp4'}],
[{type:'mp4', 'src':'/videos/5.webm'}, {type:'webm', 'src':'/videos/5.mp4'}],

];



$(function() {
$('section').on('click', 'div', function(e) {
var number = Math.floor(Math.random()*videos.length);
$(this).find('source').each(function(index){
videoSrc = videos[number][index].src;
$(this).attr('src', videoSrc);
$('video').load();
$('video').play();
});
});
});


$(document).ready(function() {
var number = Math.floor(Math.random()*videos.length);
$(this).find('source').each(function(index){
videoSrc = videos[number][index].src;
$(this).attr('src', videoSrc);
$('video').load();
$('video').play();
});
}
);

我终于能够理解上面的代码是如何工作的了。

感谢大家的帮助!

最佳答案

您不需要一个带有您想要实现的名称的函数(函数名称主要用于使调试器中的堆栈跟踪比一打(匿名函数)的列表更有用)。您需要在变量中有一个函数。

<小时/>

在 JavaScript 中创建函数有四种方法。

函数声明

这将在当前作用域中创建一个变量 foo 并为其分配一个命名函数。

function foo () {

}

函数声明被提升,因此在适用范围内将它们放在何处并不重要。不过,在使用它们之前定义它们被认为是良好的编码实践。

匿名函数表达式

这将创建一个没有名称的函数并在表达式中使用它。在此示例中,它被分配给变量 something

something = function () {

};

命名函数表达式

这与匿名函数表达式相同,只是它有一个名称,在其自身范围内创建一个具有该名称的变量,并且是 horribly broken在旧版本的 Internet Explorer 中。

something = function foo () {

};

函数构造函数

不要使用函数构造函数。它们是 eval 的另一个名字。您可以在MDN上阅读有关它们的信息。如果你有兴趣。

<小时/>

您当前正在使用匿名函数表达式并将其作为函数参数传递(而不是像上面的示例那样将其分配给变量)。

只需单独定义函数(使用上述任何技术),然后传递变量即可。

function foo(e) {
var number = Math.floor(Math.random()*videos.length);
// etc
}

$('section').on('click', 'div', foo);

注意范围。在另一个函数内声明一个函数将创建一个局部变量,您无法使用内部事件属性全局调用该变量。

也就是说,自 1997 年以来我们已接近二十年,因此无论如何您都不应该使用内在事件属性。

$(document).on('load', foo);

关于javascript - 如何给函数添加名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27882702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com