2013-02-23 126 views
1

我试图优化和缩短我的功能,并且我使用了obj.style.display = 'block';很多次。我可以将它分配给我可以重复使用的变量吗?将显示属性分配给变量

考虑这个例子

document.getElementById('example').visible; 

哪里.visible.style.display = 'block';变量。

感谢

+0

我认为最接近你可以用新方法扩展'Object'(或'HTMLElement')的原型。然后使用它像'document.getElementById('example')。visible('none');'设置和'document.getElementById('example').visible();'得到。然而这并不酷。 – dfsq 2013-02-23 19:31:23

+0

@dfsq在可见性的情况下,您可以始终填充HTML5'hidden'属性。 – Neil 2013-02-23 19:33:47

回答

1

你可以尝试这样的事情:

function setDisplay (obj, display) { 
    obj.style.display = display; 
} 

setDisplay(document.getElementById('test'), 'block'); 

您也可以尝试这样的事情,如果你希望它看起来更好:

function getById(id) { 
    var obj = document.getElementById(id); 
    obj.display = function (display) { 
     this.style.display = display; 
    }; 

    return obj; 
} 

var test = getById('test'); 
test.display('block'); 

最后,你可以使用一个简化DOM操作的框架,如果你要做很多事情,比如jQuery。

+0

刚刚回答完全相同的事情... http://jsfiddle.net/yusafkhaliq/7mFe5/ – 2013-02-23 19:30:50

+0

这就是我爱你的JavaScript,你可以在旅途中扩展对象的方式 – KaeruCT 2013-02-23 19:32:03

+0

'这个'仍然让我困惑:P,我总是找到我的出路,然而,当记录你工作的时候,事情变得更简单了,在plain ol'JavaScript之前运行到jquery中,所以它也使得你的工作更容易“使用”:P使用 – 2013-02-23 19:37:32

0

您可以定义一个函数

function set_visible(obj, visibility) { 
    obj.style.display = visibility; 
} 

有没有方法来存储属性链中的一个变量。

-2

如果你不反对js库,为什么不使用jQuery?这样,你才能真正简化: -

$("#example").show(); 
+1

由于OP正在寻求优化他的代码,我怀疑包括一个这样简单的东西就是答案的整个库。 – j08691 2013-02-23 19:22:46

+0

够公平的,只是提供了选择。 – 2013-02-23 19:23:17

+1

这是一个足够公平的答案,考虑到jquery真的仍然是JavaScript,并且发现谁没有使用库,没有人有时间编写多浏览器错误/问题 – 2013-02-23 19:25:02