document.getElementById的简写方式

Mr.Think是一个喜欢简洁的人,喜欢如诗一样的代码.不喜欢.NET的代码,就是因为经常看到同事用VS后生成出来的一段段冗长的代码.在我的思维中,JavaScrip是一种很飘逸的语言,所以,写给TA的代码,也一定要做到飘逸,呵.比如用_$(id)代替document.getElementById(id).
个人比较推荐用prototype中对document.getElementById的定义:

function $()
{
  var elements = new Array();
  for (var i = 0; i < arguments.length; i++)
  {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);
    if (arguments.length == 1)
      return element;
    elements.push(element);
  }
  return elements;
}

你还可以用以下代码来定义:

function $(objectId) {
if(document.getElementById && document.getElementById(objectId)) {
	return document.getElementById(objectId);// W3C DOM
	} else if (document.all && document.all(objectId)) {
		return document.all(objectId);// MSIE 4 DOM
	} else if (document.layers && document.layers[objectId]) {
		return document.layers[objectId];// NN 4 DOM.. note: this won't find nested layers
	} else {
		return false;
	}
}

这样写不断可以为JS文件省掉不少字符,还可以避免输入时的错误.
有一个小小的说明,$是一个自定义的值,你可以根据你的喜好写任何一个非JavaScript保留关键字,比如i_d,myid,等等你喜欢的定义.如果你的页面中调用到了jQuery的库文件,你可以直接用$代替document.getElementById.

共有 6 条评论.

发表评论4,758 Views

  1. 看到的另一个写法
    var $ = function(id){
    return “string” == typeof id ? document.getElementById(id) : id;
    }

    [回复]

  2. 来mrthink.net成习惯了,感谢博主的无私奉献

    [回复]

  3. $名字是不错,但要注意小心覆盖了你的jquery等库的,否则就出问题了。

    [回复]

    Mr.Think 回复:

    @HOHO, 嗯 这个应该是常识. 但 你都调用jQuery库了 再弄个简写函数,是不是有点多此一举~

    [回复]

  4. 非常实用。对于比较长的JS代码编写来说。这样写法很简洁。只要注释好,都能看懂。

    [回复]

发表评论[无需注册]