2012-05-28 13 views
5

का उपयोग करते समय अनदेखा किया गया है। मैं इसके लिए एक महसूस करने के लिए जावास्क्रिप्ट प्रयोग के साथ गड़बड़ कर रहा हूं और पहले से ही एक समस्या को मार चुका हूं। यहाँस्टाइलशीट को बॉडी ऑनलोड और document.write

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
<link rel="stylesheet" type="text/css" href="styles.css"> 
<script type="text/javascript" src="testing.js"></script> 
</head> 
<body onload="writeLine()"> 
</body> 
</html> 

जावास्क्रिप्ट testing.js है: यहाँ मेरी html कोड है

function writeLine() 
{ 
    document.write("Hello World!") 
} 

यहाँ शैली पत्रक styles.css है:

html, body { 
    background-color: red; 
} 

तो एक बहुत ही सरल उदाहरण, लेकिन मैंने बॉडी टैग में ऑन-लोड का उपयोग करके एक अजीब उदाहरण चुना होगा। तो ऊपर दिया गया कोड लोड करता है और फ़ंक्शन चलाता है, लेकिन स्टाइल शीट कुछ भी नहीं करता है, जब तक कि मैं सिर में स्क्रिप्ट टैग को हटा नहीं देता। मैंने हर जगह स्क्रिप्ट टैग डालने का प्रयास किया है, लेकिन कुछ भी काम नहीं करता है। मैंने जावास्क्रिप्ट फ़ाइलों को सही तरीके से लिंक करने के तरीके पर ऑनलाइन शोध किया है, और कोई स्पष्ट समाधान नहीं मिला है, क्या कोई मेरी त्रुटि को इंगित कर सकता है?

मैंने पहले जावास्क्रिप्ट का इस्तेमाल किया है, लेकिन मैं शुरू से ही एक स्पष्ट समझ चाहते हैं इससे पहले कि मैं इसका इस्तेमाल किसी भी अब

+2

[यह पोस्ट] (http://stackoverflow.com/q/10661964/575527) अधिक – Joseph

+1

डेमो समझा सकता है: http://jsfiddle.net/C6jKG/ –

+2

आपको वास्तव में 'document.write() का उपयोग करने से बचना चाहिए ' – lanzz

उत्तर

2

आपकी समस्या document.write() के साथ गलत पल * में बुलाया गया है। यह विधि उस पृष्ठ पर वर्तमान स्थान पर दिए गए पाठ को मुद्रित करती है, जैसा कि पेज अभी भी लोड होने पर काम करने का इरादा था। क्योंकि आप इसे बुला रहे हैं जब पूरे पृष्ठ लोड किया गया था, परिणाम अप्रत्याशित हैं

इसके बजाय आप पेड़ सीधे हेरफेर करना चाहिए (अपरिभाषित?):

function writeLine() { 
    var text = document.createTextNode("Hello World!"); 
    document.body.appendChild(text); 
} 

ओपेरा ब्राउज़र में असल में मैं कुछ के लिए लाल रंग की पृष्ठभूमि को देखने के मिलीसेकंड और फिर यह सफेद पर वापस चला जाता है। document.write() पर टिप्पणी करने का प्रयास करें - पृष्ठभूमि की अपेक्षा की जाती है। इसके अलावा आपको body के अंत में <script> टैग शामिल करना चाहिए, लेकिन यह आपकी समस्या का समाधान नहीं करेगा।

* ईमानदारी से, वहाँ document.write() फोन करने के लिए कोई अच्छा क्षण है, यह

+0

मैंने 'document.write' और 'document.writeLn' को कलाकृतियों के रूप में माना है जिन्हें अभ्यास में बहिष्कृत माना जाना चाहिए। मैंने इसे शाब्दिक वर्षों में उपयोग नहीं किया है। –

+0

इसलिए मैंने वास्तव में document.write द्वारा जावास्क्रिप्ट सीखने के अपने पहले दिन परेशान कर दिया, लेकिन मुझे खुशी है कि मैंने ऐसा किया क्योंकि मुझे यहां बहुत सारी रोचक चीजें मिल रही हैं! जानकारी के लिए धन्यवाद! – deucalion0

+0

मैंने आपकी पोस्ट को उत्तर के रूप में चुना क्योंकि आपने थोड़ी अधिक जानकारी प्रदान की थी! मैं कोशिश करूँगा और दस्तावेज से बच जाऊंगा। मानक के रूप में लिखो! चीयर्स! – deucalion0

3

आप document.write उपयोग नहीं कर सकते के बाद दस्तावेज़ बंद कर दिया है (जो यह होगा जब onload आग) को नष्ट किए बिना मौजूदा दस्तावेज़ (स्टाइलशीट के लिंक सहित)।

इसके बजाय, डीओएम मैनिपुलेशन का उपयोग करें, जो W3C JavaScript Core Skills के अध्याय 8 और 9 द्वारा कवर किया गया है।

+0

जो बताता है कि स्टाइलशीट क्यों काम नहीं करती है; इसे हटा दिया गया/बदला गया है और फिर खाली '' है। –

+0

यह इंगित करने के लिए बहुत बहुत धन्यवाद कि यह क्यों काम नहीं कर रहा था, मैं परेशान था! अब मैं डोम हेरफेर देख रहा हूँ! धन्यवाद! – deucalion0

2

से बचने के अपने विशिष्ट उदाहरण में यह कोई बात नहीं है जहां स्क्रिप्ट टैग जोड़ दिया जाता है के रूप में document.write आदेश निष्पादित करता है के बाद सामग्री है प्रस्तुत की गई, मौजूदा सामग्री को ओवरराइट कर रहा है।

यदि आप सामग्री को ओवरराइट करने से पहले एक चेतावनी जोड़ते हैं तो आप देख सकते हैं कि Hello World के साथ ओवरराइट होने से पहले आपका पृष्ठ लाल है।

+0

सलाह के लिए धन्यवाद, अब मैंने अपने मुद्दों की खोज की है! धन्यवाद! – deucalion0

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