<div id="example-value">
या <div id="example_value">
?
यह साइट और ट्विटर पहली शैली का उपयोग करते हैं। फेसबुक और वीमो - दूसरा।
आप किसका उपयोग करते हैं और क्यों?
<div id="example-value">
या <div id="example_value">
?
यह साइट और ट्विटर पहली शैली का उपयोग करते हैं। फेसबुक और वीमो - दूसरा।
आप किसका उपयोग करते हैं और क्यों?
जवाबों:
अपने HTML और जावास्क्रिप्ट के बीच अलगाव सुनिश्चित करने के लिए Hyphens का उपयोग करें।
क्यों? निचे देखो।
हाइफ़न CSS और HTML में उपयोग करने के लिए मान्य हैं, लेकिन जावास्क्रिप्ट ऑब्जेक्ट्स के लिए नहीं।
बहुत सारे ब्राउज़र HTML Ids को विंडो / डॉक्यूमेंट ऑब्जेक्ट पर वैश्विक ऑब्जेक्ट के रूप में पंजीकृत करते हैं, बड़ी परियोजनाओं में, यह एक वास्तविक दर्द बन सकता है।
इस कारण से, मैं हाइफ़न के साथ नामों का उपयोग करता हूं इस तरह से HTML आईडी मेरे जावास्क्रिप्ट के साथ कभी भी संघर्ष नहीं करेंगे।
निम्नलिखित को धयान मे रखते हुए:
message.js
message = function(containerObject){
this.htmlObject = containerObject;
};
message.prototype.write = function(text){
this.htmlObject.innerHTML+=text;
};
एचटीएमएल
<body>
<span id='message'></span>
</body>
<script>
var objectContainer = {};
if(typeof message == 'undefined'){
var asyncScript = document.createElement('script');
asyncScript.onload = function(){
objectContainer.messageClass = new message(document.getElementById('message'));
objectContainer.messageClass.write('loaded');
}
asyncScript.src = 'message.js';
document.appendChild(asyncScript);
}else{
objectContainer.messageClass = new message(document.getElementById('message'));
objectContainer.messageClass.write('loaded');
}
</script>
यदि ब्राउज़र HTML आईडी को पंजीकृत करता है तो वैश्विक ऑब्जेक्ट के रूप में उपरोक्त विफल हो जाएगा क्योंकि संदेश 'अपरिभाषित' नहीं है और यह HTML ऑब्जेक्ट का एक उदाहरण बनाने की कोशिश करेगा। यह सुनिश्चित करके कि HTML आईडी में नाम में एक हाइफ़न है, नीचे दिए गए जैसे संघर्षों को रोकता है:
message.js
message = function(containerObject){
this.htmlObject = containerObject;
};
message.prototype.write = function(text){
this.htmlObject.innerHTML+=text;
};
एचटीएमएल
<body>
<span id='message-text'></span>
</body>
<script>
var objectContainer = {};
if(typeof message == 'undefined'){
var asyncScript = document.createElement('script');
asyncScript.onload = function(){
objectContainer.messageClass = new message(document.getElementById('message-text'));
objectContainer.messageClass.write('loaded');
}
asyncScript.src = 'message.js';
document.appendChild(asyncScript);
}else{
objectContainer.messageClass = new message(document.getElementById('message-text'));
objectContainer.messageClass.write('loaded');
}
</script>
बेशक, आप messageText या message_text का उपयोग कर सकते हैं, लेकिन इससे समस्या का समाधान नहीं होता है और आप बाद में उसी समस्या में भाग सकते हैं, जहाँ आप गलती से एक जावास्क्रिप्ट ऑब्जेक्ट के बजाय HTML ऑब्जेक्ट का उपयोग कर सकते हैं
एक टिप्पणी, आप अभी भी (उदाहरण के लिए) विंडो ऑब्जेक्ट का उपयोग करके विंडो ऑब्जेक्ट्स का उपयोग कर सकते हैं (उदाहरण के लिए) 'संदेश-पाठ'];
window['message-text'];
मैं Google HTML / CSS स्टाइल गाइड की सिफारिश करूंगा
एक हाइफ़न द्वारा आईडी और कक्षा के नाम में अलग शब्द । समझ और स्कैन में सुधार लाने के लिए, हाइफ़न के अलावा किसी भी वर्ण (सभी में कोई नहीं सहित) द्वारा चयनकर्ताओं में शब्दों और संक्षिप्तीकरण को न करें।
/* Not recommended: does not separate the words “demo” and “image” */
.demoimage {}
/* Not recommended: uses underscore instead of hyphen */
.error_status {}
/* Recommended */
#video-id {}
.ads-sample {}
BEM
संकेतन के बारे में क्या ?
यह वास्तव में वरीयता के लिए नीचे आता है, लेकिन एक विशेष दिशा में आपको जो बोलना होगा वह वह संपादक हो सकता है जिसके साथ आप कोड करते हैं। उदाहरण के लिए, TextMate की ऑटो-पूर्ण सुविधा एक हाइफ़न पर रुकती है, लेकिन एक एकल शब्द के रूप में अंडरस्कोर द्वारा अलग किए गए शब्दों को देखता है। इसलिए अपने ऑटो-पूर्ण सुविधा ( ) का उपयोग the_post
करने से बेहतर काम के साथ वर्ग के नाम और आईडी ।the-post
Esc
मेरा मानना है कि यह पूरी तरह से प्रोग्रामर पर निर्भर है। आप चाहें तो कैमलकेस का उपयोग भी कर सकते हैं (लेकिन मुझे लगता है कि यह बहुत अजीब लगेगा।)
मैं व्यक्तिगत रूप से हाइफ़न पसंद करता हूं, क्योंकि यह मेरे कीबोर्ड पर टाइप करने के लिए तेज है। इसलिए मैं कहूंगा कि आपको उस चीज़ के साथ जाना चाहिए, जिसमें आप सबसे अधिक सहज हों, क्योंकि आपके दोनों उदाहरणों का व्यापक रूप से उपयोग किया जाता है।
या तो उदाहरण पूरी तरह से मान्य है, आप मिश्रण में भी फेंक सकते हैं ":" या "।" w3c कल्पना के अनुसार विभाजक के रूप में । मैं व्यक्तिगत रूप से "_" का उपयोग करता हूं अगर यह अंतरिक्ष के लिए समानता के कारण सिर्फ दो शब्द का नाम है।
ZZ:ZZ
को ZZ\00003AZZ
(CSS2 और ऊपर) के रूप में बचना होगा।
वास्तव में कुछ बाहरी चौखटे (जावास्क्रिप्ट, php) में आईडी नामों में हाइपेन का उपयोग करने के साथ कठिनाइयाँ (बग?) हैं। मैं अंडरस्कोर (इसलिए 960grid) का उपयोग करता हूं और सभी बढ़िया काम करते हैं।
मैं मुख्य रूप से एक जावास्क्रिप्ट साइड-इफेक्ट का सामना कर रहा हूं, जिसके कारण मैं अंडरस्कोर का सुझाव दूंगा।
यदि आप नीचे दिए गए कोड को अपने स्थान बार में लिखते हैं, तो आपको एक त्रुटि मिलेगी: 'उदाहरण-मूल्य' अपरिभाषित है। यदि अंडरस्कोर के साथ डिव नाम दिया गया था, तो यह काम करेगा।
javascript:alert(example-value.currentStyle.hasLayout);
document.getElementById("example-value")
, जो ठीक काम करेगा।