2010-08-18 16 views
7

मेरे पास यह कोड एक फ़ंक्शन में है, और इसे छोटा करना चाहते हैं - यह एक सरणी में प्रत्येक आइटम के लिए एक ही शैली को लागू करता है।तारों को डुप्लिकेट करने के लिए जावास्क्रिप्ट शॉर्टेंड तरीका

document.getElementById(divsArray[0]).style.visibility = 'hidden'; 
document.getElementById(divsArray[1]).style.visibility = 'hidden'; 
document.getElementById(divsArray[2]).style.visibility = 'hidden'; 
document.getElementById(divsArray[3]).style.visibility = 'hidden'; 

आज तक कोई जवाब काम किया

कैसे के बारे में एक का उपयोग कर छिपा

x = i; 
i = i+1; 

document.getElementById(divsArray[x]).style.visibility = 'hidden'; 
+1

पवित्र वोट वोट, बैटमैन! –

+0

सब इस सवाल –

+0

@Amr पर एक ही जवाब कॉपी कर रहे हैं: क्या वे कॉपी कर रहे हैं या नहीं अस्पष्ट (यह एक स्पष्ट जवाब शायद नहीं है, तो), लेकिन वे या तो कुछ भी जोड़ नहीं है और इसलिए हटा दिया गया है चाहिए। – Shog9

उत्तर

8

को केवल पहले से दिखाया गया स्लाइड दृश्यता सेट करके आप उसे हल (क्योंकि मैं कोड ?? माध्यम से पाशन कर रहा हूँ) पाश:

for (var i = 0; i < 4; i++) { 
    document.getElementById(divsArray[i]).style.visibility = 'hidden'; 
} 
+1

downvote के लिए कोई कारण divsArray के लिए एक मूल्य की स्थापना करके इसे अपने आप को हल? उत्तर को कम करने पर कृपया एक टिप्पणी छोड़ दें। –

+0

पहले पोस्ट को वोट मिल गया है! - धन्यवाद – Rhys

2
for (i=0;i<4;i++) { 
    document.getElementById(divsArray[i]).style.visibility='hidden'; 
} 
+2

यह अच्छा शैली अपने सूचकांक चर घोषित करने के लिए है * कहीं * (हालांकि नहीं के लिए() बयान में जरूरी है, क्योंकि है कि गुंजाइश वैसे भी नहीं बना है) वैश्विक के साथ समस्याओं से बचने के लिए। लेकिन डैरिन इस समय पंच करने के लिए आप को हरा ... ;-) – Shog9

+0

(मैं क्या देखा जब पृष्ठ पुनः लोड के अनुसार 4 सेकंड के सभी द्वारा "पंच को पीटा"।मुझे हटाने से परेशान नहीं था क्योंकि मुझे लगा कि यह इस बिंदु को मजबूत करता है कि यह करने का तरीका था। – gabe3886

5
$(divsArray).each(function() { 
    $(this).css("visibility", "hidden"); 
}); 

संपादित करें::बस कुछ अलग, एक jQuery समाधान प्रदान करने के लिए ऐसा लगता है कि आप पहली बार अपने डोम संदर्भ एकत्र करने के लिए हो सकता है की तरह। (DivsArray वास्तव में सिर्फ div नाम की एक सरणी, और नहीं divs खुद को है?)

$(divsArray).each(function() { 
    $("#" + this).css({ "visibility": "hidden" }); 
}); 
+3

दोस्त, आप उस उत्तर के साथ परेशानी के लिए पूछ रहे हैं। यह एक कठिन भीड़ है! :) टिप्पणियों की जांच करें। :) –

+0

@ डी होर्स्टर - हा हा, आपका गलत नहीं मैं बस एक टिप्पणी जोड़ने वाला था और anwswer के माध्यम से हटा दिया गया था! :) –

+0

यदि 'divsArray' सभी आईडी स्ट्रिंग्स है, तो यह' $ ('#' + यह) होना चाहिए। सीएसएस ("दृश्यता", "छुपा"); ठीक है? – lincolnk

4

यह मेरे लिए लग रहा है कि वहाँ अधिक divs हो सकता है ... मैं डैरिन के कोड के लिए यह परिवर्तन का सुझाव दे सकता:

for (var i = 0; i < divsArray.length; i++) { 
    document.getElementById(divsArray[i]).style.visibility = 'hidden'; 
} 
+0

में आइटमों की संख्या को अलग करने की संभावना प्रदान करता है divsArray.length –

+0

प्राप्त करने पर अच्छा बिंदु मुझे सिद्धांत पर यह पसंद है, हालांकि सख्ती से यह नहीं है ओपी ने जो लिखा था उसके लिए जरूरी रूप से एक प्रतिस्थापन। – Shog9

+1

मैं 'divsArray.length' का उपयोग नहीं करता जब तक ओपी स्पष्ट रूप से कहता है कि वह सरणी में सभी तत्वों का उपयोग करना चाहता है। क्या होगा यदि वह केवल पहले चार तत्व चाहता है? लेकिन यह वैसे भी एक अच्छा मुद्दा है। –

4

और यहाँ है कि यह कैसे Prototype और Mootools दोनों में काम करता है:

$(divsArray).each(function(item) { 
    $(item).setStyle({visibility: "hidden"}); 
}); 
+1

डाउनवोट क्यों? मुझे नहीं लगता कि यह एक डुप्लिकेट है ... –

4

आप divsArray का एक ही/वंशज दायरे में निम्नलिखित समारोह डाल सकते हैं।

function baka(idx) { 
    document.getElementById(divsArray[idx]).style.visibility = 'hidden'; 
} 

तो फिर तुम क्या कर सकते हैं या तो

baka(0); 
baka(1); 
baka(2); 
baka(3); 

या

for (var i = 0; i < 4; i++) 
    baka(i); 

यह व्यर्थ लग रहा है, लेकिन अगर आप इस तरह अधिक सरणियों है, तो आप इस तरह अपने कार्य को संशोधित करना चाहते हो सकता है:

function aho(arr, idx) { 
    document.getElementById(arr[idx]).style.visibility = 'hidden'; 
} 

और पाश इस तरह के किसी भी सरणी के माध्यम से:

for (var i = 0; i < divsArray.length; i++) 
    aho(divsArray, i); 

और नहीं, कोई मैक्रोज़ नहीं हैं और न ही टेम्पलेट हैं।

+0

एक रचनात्मक उत्तर प्रदान करने के लिए बहुत रचनात्मक, +1। – sworoc

1

जब तक हम सब पर ढेर कर रहे हैं, मैं सबसे सीधा दृष्टिकोण ले लेंगे: डी

document.getElementById(divsArray[0]).style.visibility = 
document.getElementById(divsArray[1]).style.visibility = 
document.getElementById(divsArray[2]).style.visibility = 
document.getElementById(divsArray[3]).style.visibility = 'hidden'; 

और सिर्फ अनाज के खिलाफ जाने के लिए:

var d = null, i = 0; 
while (d = document.getElementById(divsArray[i++])) { 
    d.style.visibility = 'hidden'; 
} 
1

मैं नहीं कर सका चुनौती के लिए "विरोध"।मैं आप उन्हें एक ही वर्ग जोड़ सकते हैं और (प्रोटोटाइप उदाहरण) की तरह कुछ करना कहेंगे:

$$('.className').invoke('setStyle', { 'visibility' : 'hidden' }); 
+0

इवेंट के लिए +1, उस बारे में नहीं सोचा था, लेकिन इसके अलावा आप धारणाएं बना रहे हैं (शायद एक सामान्य सीएसएस वर्ग नहीं है या शायद वहां है और यह अन्य घटकों द्वारा भी उपयोग किया जाता है)। इसलिए आपको पहले तत्वों के मानचित्र पर आईडी के सरणी को परिवर्तित करने का एक तरीका खोजना होगा। मेरा अनुमान arrayOfIds.map ($) होगा।() को आमंत्रित करें लेकिन मुझे यकीन नहीं है। –

0

हम सरणी युक्त idArray.prototype.forEach() का उपयोग कर रों अधिक पुनरावृति कर सकते हैं और ES6 के Arrow Functions:

var elemIds = ['two', 'four', 'six']; 
 

 
elemIds.forEach(id => {document.getElementById(id).style.visibility = 'hidden';});
<div id="one">One</div> 
 
<div id="two">Two</div> 
 
<div id="three">Three</div> 
 
<div id="four">Four</div> 
 
<div id="five">Five</div> 
 
<div id="six">Six</div> 
 
<div id="seven">Seven</div>

संबंधित मुद्दे

 संबंधित मुद्दे