मुझे जावास्क्रिप्ट फ़ंक्शन 'डूअल' मिला है, जो <p>, </p>
टैग के बीच रखे गए सभी टेक्स्ट को लिखना है। मेरे कोड में यह दो तरीकों से प्रयोग किया जाता है।जावास्क्रिप्ट फ़ंक्शन अप्रत्याशित तरीके से काम करता है
यह सही ढंग से काम करता है जब मैं इसे पृष्ठ के अंत में कॉल करता हूं। हालांकि क्लिक-बटन ईवेंट होने पर इसे ट्रिगर भी किया जाना चाहिए। किसी कारण से यह ऐसा नहीं करता है जो इस बार करना है। जब कोई बटन पर क्लिक करता है तो यह केवल पहले <p>...</p>
HTML तत्व के आंतरिक HTML को प्रिंट करता है।
मेरा प्रश्न यह है कि यह इन दो परिस्थितियों में अलग-अलग काम करता है और मुझे इस समस्या को ठीक करने के लिए क्या करना चाहिए।
<!DOCTYPE html>
<html>
<head>
<script>
function returnList(x)
{
return document.getElementsByTagName(x);
}
function writeList(x)
{
var i = 0;
while (x[i])
{
document.write(x[i++].innerHTML + '<br/>');
}
}
function doAll(x)
{
writeList(returnList(x));
}
</script>
</head>
<body>
<p>XXX</p>
<p>YYY</p>
<div style = 'background-color: gray;'>
<p>YYY</p>
<p>XXX</p>
</div>
<button type = 'button' onclick = "doAll('p')">
Click me!
</button>
<script>
document.write('<br/>');
doAll('p');
</script>
</body>
</html>
यहाँ 'उत्पादन' है:
XXX
YYY
YYY
XXX
XXX
YYY
YYY
XXX
और यहाँ क्या एक कर सकते हैं है बटन पर क्लिक करने के बाद देखें:
XXX
क्यों पहले उत्पादन हालांकि वहाँ केवल 4 पी टैग कर रहे हैं 8 लाइनों से मिलकर करता है? ऐसा लगता है कि क्लिक पर जल्दी चल रहा है। –
याद रखें: 'डीबगर' + ब्राउज़र डेवलपर टूल हमेशा आपके मित्र होते हैं। – DontVoteMeDown
@ लार्सएबर्ट: नहीं, यह क्लिक बटन की वजह से नहीं है। आउटपुट की चार अतिरिक्त लाइनें मेरे कोड की छह अंतिम पंक्तियों का परिणाम हैं: डी। जैसा कि आप देख सकते हैं कि 'doAll' फ़ंक्शन अनुभाग के नीचे स्वचालित रूप से ट्रिगर किया गया है। –