2015-11-14 55 views
3

我使用的要求我写代码如下:有没有简化的方法来使document.getElementById简化?

document.getElementById("id").innerHTML //+ whatever else 

此代码习惯大概20-30倍,在我的javascript只有ID属性改变。有没有一种方法可以编写一个非常小的函数,用更简化的版本替换整行文本?就像这样:

El("id") 

我写了大概2-3个不同的函数来试图简单这一点,但他们都没有工作。

var dom = { 
    elem = function (id){ 
     return document.getElementById(id).innerHTML; 
    } 
} 

dom.elem(testid) //this has not worked 
+0

dom对象具有不正确的语法。电子钥匙应该跟着冒号,而不是等号。 – dcochran

+0

敢于建议jQuery ..? – Culme

+0

包装的要点是什么?考虑它,它是完全多余的。 –

回答

3

试试这个:

function El(id) { 
    return document.getElementById(id).innerHTML; 
} 

然后你可以使用:

El("elementId"); //will return document.getElementById("elementId").innerHTML 
+0

我试过这段代码,但它只是告诉我放入的ID属性没有定义。我认为这是因为ID属性必须是字符串,而我输入的值不是字符串。如果手动将其设为字符串,我会收到错误消息说整个事件都是空的。 – Shawn

+0

你在输入什么? (什么数据类型和值?) –

+0

我正在(健康)而不是(“健康”)。如果我放入第一个,它说它没有定义。如果我放入第二个,它说整个document.getElementById是空的。 – Shawn

2

你宁愿要只返回一个对象,以使语句 “的document.getElementById” 短。 然后,你可以使用 “OBJ(ID)”,并在任何地方使用它不仅为innerHTML的方法:

function obj(id){ 
    return document.getElementById(id); 
} 

使用那么对于任何JavaScript方法,如:

obj("myElementId").innerHTML = "My new Text"; 
obj("myElementId").classList.add("mystyle"); 
obj("myElementId").click(); 
obj("myElementId").insertBefore(); 

其中:

<div id="myElementId"></div> 
相关问题