2012-05-19 73 views
0
if (this.firstChild.style.display == 'none') 
{this.firstChild.style.display = 'block'} 
else 
{this.firstChild.style.display = 'none'}; 

是否可以使用變量縮短此代碼?使用變量簡化javascript

回答

3

可以縮短這樣的:

var a = this.firstChild.style; 
a.display = (a.display=='none'?'block':'none'); 
+0

這將分配字符串'塊'的變量'a',而不是元素的屬性'顯示' – KooiInc

+0

@KooiInc是的,你是對的,我編輯了我的代碼 – Teneff

2
var childStyle=this.firstChild.style; 
if (childStyle.display == 'none'){ 
    childStyle.display = 'block'; 
} 
else{ 
    childStyle.display = 'none'; 
} 

將是等同的。

可以縮短在進一步使用三元操作

var childStyle=this.firstChild.style; 
childStyle.display=(childStyle.display=='none')?'block':'none'; 
+0

這將字符串「塊」的變量'childStyle'分配,而不是財產'display'元素的 – KooiInc

+0

哦,我不打算這樣做。 – Niranjan

1

如果你去的jQuery比它縮短比這

$("div span:first-child").toggle(); 

$(this).find(">:first-child").toggle(); 
+1

這將添加一個> 60KB的JavaScript文件。 :D。 – Niranjan

+0

jQuery幾乎總是要走的路。 –

+0

是的,我同意。 :-)。 – Niranjan

0

嘗試:

var elstyle = this.firstChild.style; 
elstyle.display = /block/i.test(elstyle.display) ? 'none' : 'block' 
+1

哦,不,你讓它變得複雜。 :D – Niranjan

+0

它有什麼複雜的? OP詢問:*是否可以使用變量*縮短此代碼。這是一個答案。 – KooiInc

+0

至少交換三元組並測試正面 – mplungjan

1

順便說一句,這會是另一種選擇?

with this.firstChild.style.display{this=(this=='none')?'block':'none';} 
+0

不建議使用_with_ – mplungjan