gpt4 book ai didi

javascript - 如何在js中存储多个函数的dom var?

转载 作者:行者123 更新时间:2023-11-28 12:39:37 26 4
gpt4 key购买 nike

有几个函数必须获取 dom $$('.box')[0] ,我不想让 box 成为 glabal var,也不想让 js 寻找每次 dom 。当用户不运行这些函数时,我不想运行 $$('.box')[0] 。如何存储盒子变量? enter image description here

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js"></script>
<script type="text/javascript">
/* -------
there are several function will have to get the dom $$('.box')[0] ,
I don't want to let box to be a glabal var, and I don't want to let js seek the
dom every time . and I don't want to run $$('.box')[0] when user not run these functions.
how to store the box var?
------- */
function a(){
var box = $$('.box')[0];
//...
}
function b(){
var box = $$('.box')[0];
//...
}
//...
</script>
<div class="box"></div>

最佳答案

我不知道这是否有帮助,但你可以将它的获取分离到一个函数中,并且只允许它执行一次。我忘记了这个函数是从哪里得到的,但它对于只允许函数运行一次很有用(并且每次调用它时,只需返回值):

function once(func) {
// Function wrapper to only allow a function, *func*, to be called once.

var ran = false, ret = undefined;
return function () {
if (ran) {
return ret;
}
ran = true;
ret = func.apply(this, arguments);
return ret;
};
}

所以我会这样使用它:

var getBox = once(function () {
return $$('.box')[0];
});

当您想要获取元素时,请始终使用 getBox() 。只有第一次调用它时才会搜索 DOM。此后每次,它都会返回盒子。

虽然这可能“有帮助”,但它与创建全局变量一样好,所以我不太确定您期望的解决方案是什么。

关于javascript - 如何在js中存储多个函数的dom var?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13579490/

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