मैं जावास्क्रिप्ट में नामों की एक सूची प्रबंधित कर रहा हूं। जब आप एक बॉक्स चेक करते हैं, तो आपका नाम सूची में दिखाई देता है। जब आप इसे अनचेक करते हैं, तो यह पार हो जाता है। और जब आप अनिश्चित स्थिति में बॉक्स सेट करते हैं, तो आपका नाम हटा दिया जाता है।क्लोन नोड मूल नोड के बराबर नहीं है (isEqualNode के साथ)
मुझे एक छिपे हुए div में वर्तमान में लॉग इन उपयोगकर्ता का नाम मिला है। नाम शैली विशेषताओं के साथ एक अवधि है।
मैं जांचता हूं कि नाम पहले से ही isqualNode के साथ सूची में है या नहीं। पृष्ठ लोड होने पर सूची में होने पर, यह ठीक काम करता है: नाम पाया जाता है और बॉक्स अपडेट किए जाने पर बॉक्स अपडेट होने पर अपडेट किया जाता है।
for(var i=0 ; i < bullet.childNodes.length ; i++) {
var node = bullet.childNodes[i];
if(node.className == 'crossed')
node = node.firstChild;
if(node.isEqualNode(document.getElementById('curUser').firstChild))
break;
}
// if i < bullet.childNodes.length, then we found the user's name in the list
जब नाम सूची में नहीं है, तो मैं अवधि को क्लोन करता हूं।
var newName = document.getElementById('curUser').firstChild.cloneNode(true);
bullet.appendChild(newName);
यह काम करता है, दृष्टि से।
लेकिन मैं कुछ मुश्किल पर ठोकर खाई: newName.isEqualNode(document.getElementById('curUser').firstChild)
झूठी है! तो यदि बॉक्स राज्य फिर से बदल जाता है, तो नया जोड़ा नाम नहीं मिलेगा और फिर एक नया बनाया जाएगा।
यहाँ काल लग रहा है की तरह है:,
<span style="font-weight: bold ; color: #003380 ;">Pikrass</span>
क्षण के लिए मैं सिर्फ जांच में कम सख्त बनाती हूँ (मैं सिर्फ बजाय isEqualNode पर भरोसा करने की अवधि के अंदर का पाठ डेटा की जांच कर सकते हैं), लेकिन IqualNode के अनुसार, मुझे दिलचस्पी है कि एक क्लोन नोड मूल से अलग क्यों हो सकता है।
प्रासंगिक चश्मा: cloneNode, isEqualNode
संपादित : मैं फ़ायरफ़ॉक्स और क्रोमियम के साथ परीक्षण किया गया। फ़ायरफ़ॉक्स के साथ EqualNode झूठा रिटर्न देता है, लेकिन क्रोमियम के साथ यह सच हो जाता है। इस बात को इंगित करने के लिए धन्यवाद फेलिक्स।
कौन सा ब्राउज़र? ऐसा लगता है कि क्रोम में काम करता है: http://jsfiddle.net/WhxQP/। –
दिलचस्प सवाल। यहां एक सरल उदाहरण दिया गया है: http://jsfiddle.net/QtJJb/ –
यह पहेली फ़ायरफ़ॉक्स 17.x में काम नहीं कर रही है। –