减少getElementById在同一HTML元素上使用的次数

时间:2013-02-21 18:47:22

标签: javascript html global-variables getelementbyid

在将相同元素传递给多次调用的函数的情况下,将元素存储为全局变量会更有效吗?

例如,您有一个每个按键调用的函数,并使用按钮的参数。

<input type="button" onkeydown="func1(document.getElementById('menu')" />
<div id="menu">
Dynamic text here
</div>

而不是

function func1(div)
{
....//body of function
}

做得更好

var div//global variable
function func1()
{
  if(div === null)
  {
    div = document.getElementById('menu')
  }
  ...//rest of code
}

并使用<input type="button" onkeydown="func1()" />

进行调用

或者全局变量总是坏事吗?

3 个答案:

答案 0 :(得分:1)

  

将元素存储为全局变量是否更有效?

严格来说,答案是肯定的。您正在保存函数调用。但实际上差异可以忽略不计。

答案 1 :(得分:0)

全局变量对于一个大项目是危险的,你将无法控制变量,它更容易发生冲突等等......对于你的问题,你可以创建一个包含一些缓存的对象函数,这样你使用较少的全局变量并组织你的代码以获得最佳。全局变量需要适度使用。 = d

答案 2 :(得分:0)

您可以将元素添加为函数的属性,如下所示:

function func1()
{
  console.log(func1.element);
}

func1.element = document.getElementById('menu');

func1();

您还可以检查函数中是否存在元素:

function func1()
{
  if(func1.element == undefined) {
    func1.element = document.getElementById('menu'); 
  }

    console.log(func1.element);
}

func1();

这将使您远离全局变量,并仍然保留缓存元素的好处。