JavaScript È°¿ëÆÁ
2015.06.03 / 21:53
HTML W3C DOM Node ¿Í IE Node Á¤¸® (1) - ¼Ó¼º ³ëµå±îÁö
IamCoder
Ãßõ ¼ö 290
Ä¿¼ÀÇ ¿ÀÇÁ¼Â¿¡ °ü·ÃÇÏ¿© IE¿¡¼ ´Ù½Ã ÀÛ¼ºÇÒ ÇÊ¿ä°¡ ÀÖ´Ùº¸´Ï, Nodeµµ ´Ù½Ã »ìÆ캼°â HTML°ü·ÃÀ¸·Î ÇÑÁ¤ÇÏ¿© °¡º¿î Á¤¸®¸¦ ÇغÁ¾ß°Ú´Ù. ±âÁ¸ÀÇ HTMLÀÇ ¿ä¼Ò¸¦ Áß½ÉÀ¸·Î »ý°¢ÇßÀ¸¸é, ÀÌ·¯ÇÑ ³ëµå ´ÜÀ§ »ç°í´Â º¸´Ù Àú¼öÁØÀÇ ÀÛÀº ´ÜÀ§·Î ÂÉ°³ º¸´Â °ÍÀ̸ç, ¶§·Î´Â À¯¿ëÇÒ ¼ö ÀÖÀ¸³ª ¶Ç´Â ¹øÀâÇÒ ¼öµµ ÀÖ´Ù. ±×·¯³ª ÇØ°áÄ¡ ¸øÇÑ °ÍÀÇ ½Ç¸¶¸®´Â ³ëµå¿¡¼ ã¾Æº¼ ¼ö ÀÖ´Ù.
HTML¿¡¼ ÇϳªÀÇ ¿ä¼Ò´Â ³»ºÎÀÇ ¿©·¯ ¿ä¼Ò¸¦ Æ÷ÇÔ½Ãų ¼ö ÀÖ´Ù. ±âÁ¸ÀÇ HTML ¹®¼ ÀÛ¼ºÀ̳ª jQueyr³ª Prototype ¹× Dojo µîÀ» ÀÌ¿ëÇÏ¿´´Ù¸é ½±°Ô Á÷Á¢ Node¸¦ ÀÌ¿ëÇÒ ÇÊ¿ä¾øÀÌ ¸¹Àº °ÍÀ» °£´ÜÈ÷ ÇØ°áÇÒ ¼ö ÀÖÀ¸³ª, À̵éÀº ¿ä¼Ò Áß½ÉÀ¸·Î ÀÛ¼ºµÇ¾ú±â¿¡ ±×º¸´Ù »ó¼¼È÷ ´Ù·ç¶§ ³ëµå¸¦ ²¨³»ºÁ¾ß ÇÒ °ÍÀÌ´Ù.
[Àç·á¸ðÀ½]
* MSDN : About the W3C Document Object Mode
* MDN : https://developer.mozilla.org/en/DOM/Node
* W3C DOM L1 Core, W3C DOM L2 Core, W3C DOM L3 Core
[¿¬½À : HTML div ¿ä¼ÒÀÇ ÀÚ½Ä node °¹¼ö ¼¼±â]
"node-exam1"ÀÇ id¸¦ °¡Áø div¿ä¼Ò´Â ¸î °³ÀÇ ÀÚ½Ä ³ëµå¸¦ °¡Áú±î? ¿¬½À°â Çѹø ¼¼º¸ÀÚ. IE´Â ÀÚü ºê¶ó¿ìÀú¿¡¼ Á¦°øÇÏ´Â TextRange¿¡¼ character·Î À̵¿½ÃÅ°°Å³ª ¿©±â¼ ¿ÀÇÁ¼ÂÀ» ã¾Æ³»·Á¸é, ÀÏ´Ü Áö¿øÇÏ´Â °ÍÀÌ ¾ø±â¿¡ »õ·Î ¸¸µé¾î¾ß ÇÑ´Ù. À̶§ node¸¦ »ìÆ캸¾Æ °è»êÀ» ÇÒ ¼ö ÀÖ´Ù. À̸¦ À§ÇØ ¿ì¼± node¿¡ °üÇؼ Á»´õ »ìÆ캸¾Æ¾ß°Ú´Ù. À§ÀÇ ÀÚ½Ä ³ëµå¸¦ ¼¼±â ¾î·Æ´Ù¸é ´ÙÀ½À» »ìÆ캸ÀÚ.
À§ÀÇ spanÀº 3°³ÀÇ ÀÚ½Ä node¸¦ °®´Â´Ù.
- text Çü½ÄÀÇ ³ëµå : "hello"¸¦ °ªÀ¸·Î °®´Â´Ù.
- Element Çü½ÄÀÇ ³ëµå : ¿ä¼Ò "<b> "ű×ÀÌ´Ù. ¶Ç ³»ºÎ¿¡ ÅؽºÆ® Çü½ÄÀÇ ÀÚ½Ä ³ëµå¸¦ °®°í ÀÖ´Ù.
- text Çü½ÄÀÇ ³ëµå : "!!!'¸¦ °ªÀ¸·Î °®´Â´Ù.
¸¸ÀÏ ¸¶Áö¸·ÀÇ "!!!"¹®ÀÚ¿Í ÇÔ²² ºó°ø°£ÀÌ ¾øÀÌ </span>¿ä¼Ò·Î ¸¶°¨ÀÌ µÈ´Ù¸é spanÀº 2°³ÀÇ ÀÚ½Ä ³ëµå°¡ °®°Ô µÈ´Ù. º¸Åë ÄÚµåÀÇ °¡µ¶¼ºÀ» À§ÇØ °³ÇàÀ» »ç¿ëÇϴµ¥ Çϳª¶óµµ ÅÇ µî ºó ÄÀÌ µé¾î°¡Áø´Ù¸é º¸ÀÌ´Â °Í°ú ´Þ¸® ÅؽºÆ® ³ëµå·Î À̸¦ ´Ù·é´Ù. (±×·¯´Ï±î ù ¿¹Á¦ÀÇ Äڵ忡¼ 5Çà°ú 6Çà»çÀÌ, 6Çà°ú 7Çà»çÀÌ¿¡´Â ÇÑ°³ÀÇ °³Çà°ú ÅÇÀ¸·Î ÀÌ·ç¾îÁø ÅؽºÆ® Çü½ÄÀÇ ³ëµå°¡ ÀÖ´Â °ÍÀÌ´Ù.)
±×·¸´Ù¸é À§ÀÇ Ã¹ ¿¹Á¦¸¦ È®ÀÎÇϸé, ÃÑ 11°³ÀÇ ÀÚ½Ä ³ëµå¸¦ °®´Â °ÍÀ» ¼¿ ¼ö ÀÖ´Ù. ÁÖ¼®µµ ÇÑ°³ÀÇ ³ëµå·Î ÀνÄÇÑ´Ù. ³ëµå¸¦ »ç¿ëÇÏ¿© Á¢±ÙÀ» ÇÏ¸é º¸´Ù ÇÏÀ§ ¼öÁØÀ¸·Î ¿ä¼Ò ¹× ±× ³»¿ëÀ» ´Ù·ê ¼ö ÀÖ´Ù´Â Á¡ÀÌ ÀåÁ¡À̸ç ÁÖ¼®ÀÇ ³»¿ë±îÁö ¹Þ¾Æ¿Ã ¼ö ÀÖ´Ù. (´Ü, IE8ÀÌÇÏ´Â ÁÖ¼®À» ³ëµå·Î ¹ÞÁö ¸øÇÑ´Ù. °¹¼ö¿¡¼ Á¦¿ÜµÈ´Ù.) ¶ÇÇÑ »ðÀÔµÈ ½ºÅ©¸³Æ®¿¡¼ document.write·Î Ãß°¡µÈ ÅؽºÆ® ³ëµå´Â </script>´ÙÀ½¿¡ Ãß°¡µÇ´Â °Íµµ È®ÀÎÇØ ³õÀÚ. ±×¸®°í scriptű׿¡¼ CDATA ºÎºÐÀº ÀÚ½ÄÀÇ text³ëµå¿¡¼ °ªÀ¸·Î ÀâÈ÷Áö ¾Ê´Â´Ù. À̶§ ±×Àú "/* */"¸¸À» ¹ÝȯÇÒ »ÓÀÌ´Ù.
[nodeÀÇ ºÐ·ù]
³ëµå Çü½ÄÀº 12Á¾À¸·Î ºÐ·ùÇÒ ¼ö ÀÖÀ¸³ª, HTML¿¡¼ ´Ù·ê °ÍÀº °íÀÛ ¸î°³ ¾ÈµÈ´Ù.
¿©±â¼ nodeType, nodeName, nodeValue´Â ÇÁ·ÎÆÛƼ·Î ³ëµå¿¡ µû¶ó ÁöÁ¤µÈ °ªÀ» ¹ÝȯÇÑ´Ù. nodeTypeÀ» ÀÌ¿ëÇÏ¿© ³ëµåÀÇ Á¾·ù¸¦ È®ÀÎÇÒ ¼ö ÀÖÀ¸¸ç, nodeNameÀ» ÀÌ¿ëÇÏ¿© ¿ä¼ÒÀÎ °æ¿ì ű׸íÀ» ¹Ýȯ¹ÞÀ» ¼ö ÀÖ´Ù. ±âŸ #À¸·Î ½ÃÀÛÇÏ´Â °ÍÀº ÇØ´ç ¹®ÀÚ¿·Î Ç׽à ¹ÝȯÇÏ¿© Çü½Ä °Ë»ç·Î ¾µ ¼öµµ ÀÖÀ¸³ª ÁÁÀº »ý°¢Àº ¾Æ´Ï¸ç nodeTypeÀÇ Á¤¼ö¸¦ ¾²´Â °ÍÀÌ ÁÁ´Ù. nodeValueµµ ÇØ´ç ³ëµåÀÇ °ªÀ» ¹ÝȯÇÑ´Ù. nodeTypeÀÌ Á¤¼ö·Î ¹ÝȯÇÏ´Â °Í¿¡ ºñÇØ ¹®ÀÚ¿ »ó¼ö¸¦ ÀÌ¿ëÇÏ¿© Çü½ÄÀ» °Ë»çÇÒ ¼öµµ ÀÖÀ¸³ª, ±¸Çü IE ºê¶ó¿ìÀú´Â À̸¦ Áö¿øÇÏÁö ¸øÇÑ´Ù.
- node.nodeType
- node.nodeName : ¿ä¼ÒÀÎ °æ¿ì, ´ë¹®ÀÚ ¿ä¼Ò¸íÀ¸·Î ¹Ýȯ(Å©·Ò, FF, IE µî ¸¶Âù°¡Áö)
- node.nodeValue
HTML¿¡¼ ¾Æ¸¶ ¿©±â ÁÖÁ¦´Â 1¹øŸÀÔÀÇ Element ¿Í 3¹øÀÇ Å¸ÀÔÀÇ text¿¡ ÇÑÇؼ ½Å°æÀ» ¾µ °Í °°´Ù.
[nodeÀÇ »ý¼º]
- document.createElement('¿ä¼Ò¸í')
- document.createAttribute('¼Ó¼º¸í')
- document.createTextNode('ÅؽºÆ® ³ëµå ³»¿ë')
- document.createCDATASection('CDATA ³»¿ë')
- document.createComment('ÁÖ¼® ³»¿ë')
[nodeÀÇ °ü°è À̵¿ ¹× Á¢±Ù]
³ëµåÀÇ Á¾·ù¸¦ ¾Ë¾ÒÀ¸¸é ¾î¶°ÇÑ °ÍÀÌ ³ëµåÀÎÁö ¾Ë¾ÒÀ» °ÍÀÌ´Ù. ±âÁ¸ÀÇ ±×Àú ÇϳªÀÇ ¿ä¼Ò·Î »ý°¢Çß´ø °ÍÀº ³ëµå·Î »ý°¢Çؼ º¸¸Õ, ´ëºÎºÐÀÇ ÅؽºÆ®¸¦ ³Ö±â À§ÇØ »ç¿ëÇÏ´Â ¿ä¼Ò´Â ÀÚ½ÅÀÇ ³ëµå¿Í ³»ºÎ¾Ö ÅؽºÆ® Çü½Ä ÀÚ½Ä ³ëµå¸¦ ÀÚµ¿ÀûÀ¸·Î °®°Ô µÇ´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¶ÇÇÑ HTML ¿ä¼ÒÀÇ »ó´ç¼ö´Â ´Ù¸¥ ¿ä¼Ò¸¦ ³»ºÎ¿¡ Æ÷ÇÔ½Ãų ¼ö ÀÖÀ¸¸ç, À̶§ÅؽºÆ® ³ëµå¿Í ´ëµîÇÑ ³ëµå·Î À§Ä¡ÇÏ°Ô µÇ±âµµ ÇÑ´Ù. ÅؽºÆ® ³ëµå´Â ¾î¶°ÇÑ Àڽĵµ °®À» ¼ö ¾ø´Â ³ëµå¶ó´Â Ư¡ÀÌ ÀÖ´Â °Íµµ °°ÀÌ È®ÀÎÇØ µÎÀÚ. ÀÌÁ¦ ³ëµå ¼öÁØ¿¡¼ ³ëµå°£ÀÇ °ü°è¿Í ±×¿¡ µû¸¥ À̵¿À» Á¤¸®ÇÏ°Ú´Ù.
- node.parentNode
- node.parentElement
- node.ownerDocument : Çö ¹®¼ÀÇ document °´Ã¼°¡ µÈ´Ù.
- document.documentElement : ´ë°³ html ¹®¼¿¡¼´Â htmlÀÌ µÈ´Ù.
- node.childNodes : ¹è¿ Çü½Äó·³ ¹Ýȯ. length ÇÁ·ÎÆÛƼ¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, index¸¦ ÅëÇØ °³º° ¿ä¼Ò¿¡ Á¢±Ù
- node.childNodes[index]
- node.childNodes.length
- node.firstChild
- node.lastChild
- node.previsousSibling
- node.nextSibling
siblingÀº ´Ù¸¥ µ¿À§ÀÇ ÀÌÀü ¹× ÀÌÈÄÀÇ ³ëµå¸¦ ¹ÝȯÇÑ´Ù. ÇÁ·¹ÀÓ¿öÅ©¿¡¼ next³ª previous¸Þ¼µå°¡ ÀÌ siblingÀ» ÀÌ¿ëÇÑ °ÍÀÌ´Ù. ¿ä¼Ò°£ÀÇ À̵¿Àº ´ÙÀ½°ú °°Àº Äڵ尡 µÈ´Ù. [Ãâó : The Watchmaker Project ]
¶ÇÇÑ nextSiblingÀ» ÀÌ¿ëÇÏ¿© insertAfterµµ ¸¸µé ¼ö ÀÖ´Ù. À̶§ nextSibling ³ëµåÀÇ Á¸Àç ¿©ºÎ¿¡ µû¶ó º»·¡ ¸¶Áö¸· ³ëµåÀÎÁö È®ÀÎÇÒ ¼ö ÀÖ°í ¾ø´Â °æ¿ì, apendChild¸¦ ÀÌ¿ëÇÏ¸é µÉ °ÍÀÌ´Ù. ¿ä¼Ò°£ÀÇ À̵¿¿¡ Àû¿ëÇÏ·Á¸é ¸¶Âù°¡Áö·Î while¹®À¸·Î ŸÀ԰˻縦 ÇÏ¸é µÉ °ÍÀÌ´Ù.
°ü·Ã ¸Þ¼µå·Î´Â ´ÙÀ½°ú °°Àº °ÍÀÌ ÀÖ´Ù.
- Node.hasChildNodes() : ÀÚ½Ä ³ëµå¸¦ °®´ÂÁö Boolean °ªÀ¸·Î ¹Ýȯ
- node1.contains(node2) : node2°¡ node1¿¡ Æ÷ÇÔ¿©ºÎ¸¦ Boolean °ªÀ¸·Î ¹Ýȯ
[nodeÀÇ ÆíÁý]
- node1.appendChild(node2) : node1¿¡ ÀÚ½Ä ³ëµå·Î node2¸¦ ¸¶Áö¸·À¸·Î Ãß°¡
- node1.removeChild(node2) : node1¿¡ ÀÚ½Ä ³ëµåÀÎ node2¸¦ Á¦°Å
- node1.replaceChild(node2, node3) : node1ÀÇ ÀڽijëµåÀÎ node3À» node2·Î ±³Ã¼
- node1.insertBefore(node2, node3) : node1ÀÇ ÀڽijëµåÀÎ node3 ¾Õ¿¡ node2¸¦ Ãß°¡
appendChild°¡ Á¦ÀÏ ¸¶Áö¸·¿¡ Ãß°¡µÇ´Â ¹Ý¸é Á¦ÀÏ ¾Õ¿¡ Ãß°¡ÇÏ°íÀÚ ÇÑ´Ù¸é insertBefore¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù.
ÇÁ·ÎÆÛƼ ¼³Á¤À¸·Î ÄÁÅÙÃ÷¸¦ º¯°æÇϰųª ¹Ýȯ¹ÞÀ» ¼ö ÀÖ´Ù.
- ElementNode.innerHTML : ű׸¦ Æ÷ÇÔµÈ ³»¿ëÀ» ¹Ýȯ ¹× ¼³Á¤ °¡´É
- ElementNode.textContent : Çö ¿ä¼Ò ³»ºÎÀÇ ÅؽºÆ® ³ëµå ¹Ýȯ ¹× ¼³Á¤ (ÁÖÀÇ, script ¹× style ¿ä¼Òµµ text ³ëµå¸¦ °¡Áü IE9ÀÌ»ó)
- Node.textContent : ÇØ´ç ³ëµåÀÇ text ¼³Á¤ ¹× ¹Ýȯ (IE9 ÀÌ»ó)
- ElementNode.innerText : IE¿¡¼ Áö¿øµÇ´Â ÅؽºÆ® ¼³Á¤ ¹× ¹Ýȯ (textContent Â÷ÀÌ°¡ ÀÖÀ½)
[attribute ³ëµå Çü½Ä ]
¼Ó¼ºµµ ¸¶Âù°¡Áö·Î ³ëµå·Î ´Ù·ê ¼ö ÀÖ´Ù. ´Ù¸¸ ¼Ó¼º ³ëµå·Î Á÷Á¢ ´Ù·ê °æ¿ì ±¸Çü IE ºê¶ó¿ìÀú Áö¿øÀº °¢ÀÚ Â÷ÀÌ°¡ ÀÖ¾î ÁÖÀÇ°¡ ÇÊ¿äÇÏ´Ù. HTML¿¡¼ °¢ ¿ä¼Ò¿¡ ¼³Á¤µÈ ¼Ó¼ºÀº attribute ³ëµå¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
¼Ó¼º ³ëµå´Â "node.attributes"¸¦ ÅëÇØ ¹Ýȯ¹ÞÀ» ¼ö ÀÖÀ¸³ª ÀÌ ÀÚü°¡ ¼Ó¼º ³ëµå°¡ ¾Æ´Ï¸ç, °³º° ÀûÀÎ ¼Ó¼º ³ëµå¸¦ °¡Áø ¹è¿ À¯»ç Çü½ÄÀÇ °´Ã¼ÀÌ´Ù. ´Ù½Ã ¸»ÇØ "node.attributes"´Â ¼Ó¼º ³ëµå´Â ¾Æ´Ï³ª, "node.attributes[0]"Àº ¼Ó¼º Çü½ÄÀÇ ³ëµå¶ó´Â °ÍÀÌ´Ù.
¶ÇÇÑ °³º° ¼Ó¼º ³ëµå¿¡¼ nodeValue·Î °ªÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ¿©±â¿¡ °³º° ¼Ó¼º ³ëµå´Â textÇü½ÄÀÇ ÀÚ½Ä ³ëµå¸¦ °¡Áö°Ô µÇ´Âµ¥, ¿©±â¿¡ ÇØ´ç ¼Ó¼ºÀÇ °ªÀ» °®°í ÀÖ´Ù. ÀÌ·¯ÇÑ Á¡À» È®ÀÎÇÏ¸é ´ÙÀ½°ú °°´Ù.
ÀÌ¿¡ ±¸Çü IE ºê¶ó¿ìÀú´Â ´ÙÀ½°ú °°Àº ¹®Á¦/Â÷ÀÌ °¡ ÀÖ´Ù.
- IE9±îÁö´Â À妽º°¡ ÀÛ¼º ¼ø¼¿Í º°°³·Î ÁöÁ¤µÈ´Ù.
- IE8±îÁö´Â ¼Ó¼ºÀÇ °ªÀ» °¡Áø text Çü½ÄÀÇ ÀÚ½Ä ³ëµå°¡ Æ÷ÇԵǾî ÀÖÁö ¾Ê´Ù.
- IE7±îÁö´Â node.attributes´Â ÇØ´ç ¿ä¼ÒÀÇ Àüü ¼Ó¼ºÀ» ´ë»óÀ¸·Î index¸¦ ¸¸µç´Ù. (DIVÀÎ °æ¿ì 82°³)
°³º° attr ³ëµå Á¢±Ù ¹× ÆíÁý
- node.attributes[index]
- node.attributes.item(index)
- node.attributes.getNamedItem("¼Ó¼º¸í')
- node.attributes.setNamedItem(node) : node·Î ¼³Á¤ÇÔ¿¡ ÁÖÀÇ
- node.attributes.removeNamedItem("¼Ó¼º¸í'")
°³º° ¼Ó¼ºÀÇ °ªÀÇ È®ÀÎ
- node.attributes['index'].nodeValue
°³º° ¼Ó¼ºÀÇ °ªÀÇ ¼³Á¤
- node.attributes['index'].nodeValue = ¼³Á¤ °ª
- node.hasAttributes() : 1°³ ÀÌ»ó ¼³Á¤µÈ ¼Ó¼ºÀÌ ÀÖ´ÂÁö BooleanÀ¸·Î ¹Ýȯ, IE9ÀÌ»ó Áö¿ø
- elementNode.getAttribute('¼Ó¼º¸í')
- elementNode.setAttribute('¼Ó¼º¸í'. '¼³Á¤ °ª')
HTML ¹®¼ÀÇ ¼Ó¼ºÀ» IE¿¡¼ ³ëµå Â÷¿øÀ̳ª, setAttributeµîÀÇ ¸Þ¼µå »ç¿ëÀ¸·Î °ªÀÇ ¼³Á¤À̳ª º¯°æ½Ã Á¾Á¾ ¹ö±×°¡ ÀÖ¾î È®ÀÎÀÌ ÇÊ¿äÇÏ´Ù.
HTML¿¡¼ ÇϳªÀÇ ¿ä¼Ò´Â ³»ºÎÀÇ ¿©·¯ ¿ä¼Ò¸¦ Æ÷ÇÔ½Ãų ¼ö ÀÖ´Ù. ±âÁ¸ÀÇ HTML ¹®¼ ÀÛ¼ºÀ̳ª jQueyr³ª Prototype ¹× Dojo µîÀ» ÀÌ¿ëÇÏ¿´´Ù¸é ½±°Ô Á÷Á¢ Node¸¦ ÀÌ¿ëÇÒ ÇÊ¿ä¾øÀÌ ¸¹Àº °ÍÀ» °£´ÜÈ÷ ÇØ°áÇÒ ¼ö ÀÖÀ¸³ª, À̵éÀº ¿ä¼Ò Áß½ÉÀ¸·Î ÀÛ¼ºµÇ¾ú±â¿¡ ±×º¸´Ù »ó¼¼È÷ ´Ù·ç¶§ ³ëµå¸¦ ²¨³»ºÁ¾ß ÇÒ °ÍÀÌ´Ù.
[Àç·á¸ðÀ½]
* MSDN : About the W3C Document Object Mode
* MDN : https://developer.mozilla.org/en/DOM/Node
* W3C DOM L1 Core, W3C DOM L2 Core, W3C DOM L3 Core
[¿¬½À : HTML div ¿ä¼ÒÀÇ ÀÚ½Ä node °¹¼ö ¼¼±â]
1 2 3 4 5 6 7 8 9 10 11 12 13 | < div id = "node-exam1" > hello, < b >world</ b > : demo <!-- ÁÖ¼® --> < h1 >ÇÏÀÌ</ h1 > < script > /* <![CDATA[ */ document.write('hello<br/>'); document.write('bonjour'); /*]]> */ </ script > </ div > |
1 | < span >hello,< b >world< b />!!!</ span > |
- text Çü½ÄÀÇ ³ëµå : "hello"¸¦ °ªÀ¸·Î °®´Â´Ù.
- Element Çü½ÄÀÇ ³ëµå : ¿ä¼Ò "<b> "ű×ÀÌ´Ù. ¶Ç ³»ºÎ¿¡ ÅؽºÆ® Çü½ÄÀÇ ÀÚ½Ä ³ëµå¸¦ °®°í ÀÖ´Ù.
- text Çü½ÄÀÇ ³ëµå : "!!!'¸¦ °ªÀ¸·Î °®´Â´Ù.
¸¸ÀÏ ¸¶Áö¸·ÀÇ "!!!"¹®ÀÚ¿Í ÇÔ²² ºó°ø°£ÀÌ ¾øÀÌ </span>¿ä¼Ò·Î ¸¶°¨ÀÌ µÈ´Ù¸é spanÀº 2°³ÀÇ ÀÚ½Ä ³ëµå°¡ °®°Ô µÈ´Ù. º¸Åë ÄÚµåÀÇ °¡µ¶¼ºÀ» À§ÇØ °³ÇàÀ» »ç¿ëÇϴµ¥ Çϳª¶óµµ ÅÇ µî ºó ÄÀÌ µé¾î°¡Áø´Ù¸é º¸ÀÌ´Â °Í°ú ´Þ¸® ÅؽºÆ® ³ëµå·Î À̸¦ ´Ù·é´Ù. (±×·¯´Ï±î ù ¿¹Á¦ÀÇ Äڵ忡¼ 5Çà°ú 6Çà»çÀÌ, 6Çà°ú 7Çà»çÀÌ¿¡´Â ÇÑ°³ÀÇ °³Çà°ú ÅÇÀ¸·Î ÀÌ·ç¾îÁø ÅؽºÆ® Çü½ÄÀÇ ³ëµå°¡ ÀÖ´Â °ÍÀÌ´Ù.)
±×·¸´Ù¸é À§ÀÇ Ã¹ ¿¹Á¦¸¦ È®ÀÎÇϸé, ÃÑ 11°³ÀÇ ÀÚ½Ä ³ëµå¸¦ °®´Â °ÍÀ» ¼¿ ¼ö ÀÖ´Ù. ÁÖ¼®µµ ÇÑ°³ÀÇ ³ëµå·Î ÀνÄÇÑ´Ù. ³ëµå¸¦ »ç¿ëÇÏ¿© Á¢±ÙÀ» ÇÏ¸é º¸´Ù ÇÏÀ§ ¼öÁØÀ¸·Î ¿ä¼Ò ¹× ±× ³»¿ëÀ» ´Ù·ê ¼ö ÀÖ´Ù´Â Á¡ÀÌ ÀåÁ¡À̸ç ÁÖ¼®ÀÇ ³»¿ë±îÁö ¹Þ¾Æ¿Ã ¼ö ÀÖ´Ù. (´Ü, IE8ÀÌÇÏ´Â ÁÖ¼®À» ³ëµå·Î ¹ÞÁö ¸øÇÑ´Ù. °¹¼ö¿¡¼ Á¦¿ÜµÈ´Ù.) ¶ÇÇÑ »ðÀÔµÈ ½ºÅ©¸³Æ®¿¡¼ document.write·Î Ãß°¡µÈ ÅؽºÆ® ³ëµå´Â </script>´ÙÀ½¿¡ Ãß°¡µÇ´Â °Íµµ È®ÀÎÇØ ³õÀÚ. ±×¸®°í scriptű׿¡¼ CDATA ºÎºÐÀº ÀÚ½ÄÀÇ text³ëµå¿¡¼ °ªÀ¸·Î ÀâÈ÷Áö ¾Ê´Â´Ù. À̶§ ±×Àú "/* */"¸¸À» ¹ÝȯÇÒ »ÓÀÌ´Ù.
[nodeÀÇ ºÐ·ù]
³ëµå Çü½ÄÀº 12Á¾À¸·Î ºÐ·ùÇÒ ¼ö ÀÖÀ¸³ª, HTML¿¡¼ ´Ù·ê °ÍÀº °íÀÛ ¸î°³ ¾ÈµÈ´Ù.
nodeType | ºÐ·ù | nodeName | nodeValue | »ó¼ö |
---|---|---|---|---|
1 | Element | ¿ä¼Ò¸í | null | ELEMENT_NODE |
2 | Attr | ¼Ó¼º¸í | ¼Ó¼º°ª | ATTRIBUTE_NODE |
3 | Text | #text | ÄÁÅÙÆ® ³ëµå | TEXT_NODE |
4 | CDATASection | #cdata-section | ÄÁÅÙÆ® ³ëµå | CDATA_SECTION_NODE |
5 | EntityReference | entity reference À̸§ | null | ENTITY_REFERENCE_NODE |
6 | Entity | entity À̸§ | null | ENTITY_NODE |
7 | ProcessingInstruction | target | ÄÁÅÙÆ® ³ëµå | PROCESSING_INSTRUCTION_NODE |
8 | Comment | #comment | ÁÖ¼® ÅؽºÆ® | COMMENT_NODE |
9 | Document | #document | null | DOCUMENT_NODE |
10 | DocumentType | doctype À̸§ | null | DOCUMENT_TYPE_NODE |
11 | DocumentFragment | #document fragment | null | DOCUMENT_FRAGMENT_NODE |
12 | Notation | notation À̸§ | null | NOTATION_NODE |
¿©±â¼ nodeType, nodeName, nodeValue´Â ÇÁ·ÎÆÛƼ·Î ³ëµå¿¡ µû¶ó ÁöÁ¤µÈ °ªÀ» ¹ÝȯÇÑ´Ù. nodeTypeÀ» ÀÌ¿ëÇÏ¿© ³ëµåÀÇ Á¾·ù¸¦ È®ÀÎÇÒ ¼ö ÀÖÀ¸¸ç, nodeNameÀ» ÀÌ¿ëÇÏ¿© ¿ä¼ÒÀÎ °æ¿ì ű׸íÀ» ¹Ýȯ¹ÞÀ» ¼ö ÀÖ´Ù. ±âŸ #À¸·Î ½ÃÀÛÇÏ´Â °ÍÀº ÇØ´ç ¹®ÀÚ¿·Î Ç׽à ¹ÝȯÇÏ¿© Çü½Ä °Ë»ç·Î ¾µ ¼öµµ ÀÖÀ¸³ª ÁÁÀº »ý°¢Àº ¾Æ´Ï¸ç nodeTypeÀÇ Á¤¼ö¸¦ ¾²´Â °ÍÀÌ ÁÁ´Ù. nodeValueµµ ÇØ´ç ³ëµåÀÇ °ªÀ» ¹ÝȯÇÑ´Ù. nodeTypeÀÌ Á¤¼ö·Î ¹ÝȯÇÏ´Â °Í¿¡ ºñÇØ ¹®ÀÚ¿ »ó¼ö¸¦ ÀÌ¿ëÇÏ¿© Çü½ÄÀ» °Ë»çÇÒ ¼öµµ ÀÖÀ¸³ª, ±¸Çü IE ºê¶ó¿ìÀú´Â À̸¦ Áö¿øÇÏÁö ¸øÇÑ´Ù.
- node.nodeType
- node.nodeName : ¿ä¼ÒÀÎ °æ¿ì, ´ë¹®ÀÚ ¿ä¼Ò¸íÀ¸·Î ¹Ýȯ(Å©·Ò, FF, IE µî ¸¶Âù°¡Áö)
- node.nodeValue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | < div id = "text_type_node" > Hello,< b >world</ b >!!! </ div > <script> var _node_type_elem = document.getElementById( 'text_type_node' ); document.write(_node_type_elem.nodeType); // 1 document.write(_node_type_elem.nodeName); // div document.write(_node_type_elem.nodeValue); // null var _node_type_elem_firstChild = _node_type_elem.firstChild; document.write(_node_type_elem_firstChild.nodeType); // 3 document.write(_node_type_elem_firstChild.nodeName); // #text document.write(_node_type_elem_firstChild.nodeValue); // Hello, </script> |
[nodeÀÇ »ý¼º]
- document.createElement('¿ä¼Ò¸í')
- document.createAttribute('¼Ó¼º¸í')
- document.createTextNode('ÅؽºÆ® ³ëµå ³»¿ë')
- document.createCDATASection('CDATA ³»¿ë')
- document.createComment('ÁÖ¼® ³»¿ë')
[nodeÀÇ °ü°è À̵¿ ¹× Á¢±Ù]
³ëµåÀÇ Á¾·ù¸¦ ¾Ë¾ÒÀ¸¸é ¾î¶°ÇÑ °ÍÀÌ ³ëµåÀÎÁö ¾Ë¾ÒÀ» °ÍÀÌ´Ù. ±âÁ¸ÀÇ ±×Àú ÇϳªÀÇ ¿ä¼Ò·Î »ý°¢Çß´ø °ÍÀº ³ëµå·Î »ý°¢Çؼ º¸¸Õ, ´ëºÎºÐÀÇ ÅؽºÆ®¸¦ ³Ö±â À§ÇØ »ç¿ëÇÏ´Â ¿ä¼Ò´Â ÀÚ½ÅÀÇ ³ëµå¿Í ³»ºÎ¾Ö ÅؽºÆ® Çü½Ä ÀÚ½Ä ³ëµå¸¦ ÀÚµ¿ÀûÀ¸·Î °®°Ô µÇ´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¶ÇÇÑ HTML ¿ä¼ÒÀÇ »ó´ç¼ö´Â ´Ù¸¥ ¿ä¼Ò¸¦ ³»ºÎ¿¡ Æ÷ÇÔ½Ãų ¼ö ÀÖÀ¸¸ç, À̶§ÅؽºÆ® ³ëµå¿Í ´ëµîÇÑ ³ëµå·Î À§Ä¡ÇÏ°Ô µÇ±âµµ ÇÑ´Ù. ÅؽºÆ® ³ëµå´Â ¾î¶°ÇÑ Àڽĵµ °®À» ¼ö ¾ø´Â ³ëµå¶ó´Â Ư¡ÀÌ ÀÖ´Â °Íµµ °°ÀÌ È®ÀÎÇØ µÎÀÚ. ÀÌÁ¦ ³ëµå ¼öÁØ¿¡¼ ³ëµå°£ÀÇ °ü°è¿Í ±×¿¡ µû¸¥ À̵¿À» Á¤¸®ÇÏ°Ú´Ù.
- node.parentNode
- node.parentElement
- node.ownerDocument : Çö ¹®¼ÀÇ document °´Ã¼°¡ µÈ´Ù.
- document.documentElement : ´ë°³ html ¹®¼¿¡¼´Â htmlÀÌ µÈ´Ù.
- node.childNodes : ¹è¿ Çü½Äó·³ ¹Ýȯ. length ÇÁ·ÎÆÛƼ¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, index¸¦ ÅëÇØ °³º° ¿ä¼Ò¿¡ Á¢±Ù
- node.childNodes[index]
- node.childNodes.length
- node.firstChild
- node.lastChild
- node.previsousSibling
- node.nextSibling
siblingÀº ´Ù¸¥ µ¿À§ÀÇ ÀÌÀü ¹× ÀÌÈÄÀÇ ³ëµå¸¦ ¹ÝȯÇÑ´Ù. ÇÁ·¹ÀÓ¿öÅ©¿¡¼ next³ª previous¸Þ¼µå°¡ ÀÌ siblingÀ» ÀÌ¿ëÇÑ °ÍÀÌ´Ù. ¿ä¼Ò°£ÀÇ À̵¿Àº ´ÙÀ½°ú °°Àº Äڵ尡 µÈ´Ù. [Ãâó : The Watchmaker Project ]
1 2 3 4 5 | function previous(p) { do p = p.previousSibling; while (p && p.nodeType != 1); return p; } |
°ü·Ã ¸Þ¼µå·Î´Â ´ÙÀ½°ú °°Àº °ÍÀÌ ÀÖ´Ù.
- Node.hasChildNodes() : ÀÚ½Ä ³ëµå¸¦ °®´ÂÁö Boolean °ªÀ¸·Î ¹Ýȯ
- node1.contains(node2) : node2°¡ node1¿¡ Æ÷ÇÔ¿©ºÎ¸¦ Boolean °ªÀ¸·Î ¹Ýȯ
[nodeÀÇ ÆíÁý]
- node1.appendChild(node2) : node1¿¡ ÀÚ½Ä ³ëµå·Î node2¸¦ ¸¶Áö¸·À¸·Î Ãß°¡
- node1.removeChild(node2) : node1¿¡ ÀÚ½Ä ³ëµåÀÎ node2¸¦ Á¦°Å
- node1.replaceChild(node2, node3) : node1ÀÇ ÀڽijëµåÀÎ node3À» node2·Î ±³Ã¼
- node1.insertBefore(node2, node3) : node1ÀÇ ÀڽijëµåÀÎ node3 ¾Õ¿¡ node2¸¦ Ãß°¡
appendChild°¡ Á¦ÀÏ ¸¶Áö¸·¿¡ Ãß°¡µÇ´Â ¹Ý¸é Á¦ÀÏ ¾Õ¿¡ Ãß°¡ÇÏ°íÀÚ ÇÑ´Ù¸é insertBefore¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù.
1 | node1.insertBefore(node2, node1.childNode[0]); |
ÇÁ·ÎÆÛƼ ¼³Á¤À¸·Î ÄÁÅÙÃ÷¸¦ º¯°æÇϰųª ¹Ýȯ¹ÞÀ» ¼ö ÀÖ´Ù.
- ElementNode.innerHTML : ű׸¦ Æ÷ÇÔµÈ ³»¿ëÀ» ¹Ýȯ ¹× ¼³Á¤ °¡´É
- ElementNode.textContent : Çö ¿ä¼Ò ³»ºÎÀÇ ÅؽºÆ® ³ëµå ¹Ýȯ ¹× ¼³Á¤ (ÁÖÀÇ, script ¹× style ¿ä¼Òµµ text ³ëµå¸¦ °¡Áü IE9ÀÌ»ó)
- Node.textContent : ÇØ´ç ³ëµåÀÇ text ¼³Á¤ ¹× ¹Ýȯ (IE9 ÀÌ»ó)
- ElementNode.innerText : IE¿¡¼ Áö¿øµÇ´Â ÅؽºÆ® ¼³Á¤ ¹× ¹Ýȯ (textContent Â÷ÀÌ°¡ ÀÖÀ½)
[attribute ³ëµå Çü½Ä ]
¼Ó¼ºµµ ¸¶Âù°¡Áö·Î ³ëµå·Î ´Ù·ê ¼ö ÀÖ´Ù. ´Ù¸¸ ¼Ó¼º ³ëµå·Î Á÷Á¢ ´Ù·ê °æ¿ì ±¸Çü IE ºê¶ó¿ìÀú Áö¿øÀº °¢ÀÚ Â÷ÀÌ°¡ ÀÖ¾î ÁÖÀÇ°¡ ÇÊ¿äÇÏ´Ù. HTML¿¡¼ °¢ ¿ä¼Ò¿¡ ¼³Á¤µÈ ¼Ó¼ºÀº attribute ³ëµå¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
1 | var attrNodeCollection = document.getElemenstByTagName( 'div' )[0].attributes; |
¼Ó¼º ³ëµå´Â "node.attributes"¸¦ ÅëÇØ ¹Ýȯ¹ÞÀ» ¼ö ÀÖÀ¸³ª ÀÌ ÀÚü°¡ ¼Ó¼º ³ëµå°¡ ¾Æ´Ï¸ç, °³º° ÀûÀÎ ¼Ó¼º ³ëµå¸¦ °¡Áø ¹è¿ À¯»ç Çü½ÄÀÇ °´Ã¼ÀÌ´Ù. ´Ù½Ã ¸»ÇØ "node.attributes"´Â ¼Ó¼º ³ëµå´Â ¾Æ´Ï³ª, "node.attributes[0]"Àº ¼Ó¼º Çü½ÄÀÇ ³ëµå¶ó´Â °ÍÀÌ´Ù.
¶ÇÇÑ °³º° ¼Ó¼º ³ëµå¿¡¼ nodeValue·Î °ªÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ¿©±â¿¡ °³º° ¼Ó¼º ³ëµå´Â textÇü½ÄÀÇ ÀÚ½Ä ³ëµå¸¦ °¡Áö°Ô µÇ´Âµ¥, ¿©±â¿¡ ÇØ´ç ¼Ó¼ºÀÇ °ªÀ» °®°í ÀÖ´Ù. ÀÌ·¯ÇÑ Á¡À» È®ÀÎÇÏ¸é ´ÙÀ½°ú °°´Ù.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | < div id = "_attrNode" class = "textClass" style = "border-bottom:1px solid #eee" > Hello, World </ div > <script> var attrNodeCollection = document.getElementById( "_attrNode" ).attributes; attrNodeCollection.length; // 3 attrNodeCollection.nodeType // undefined - 'attributes' ÀÚü´Â ³ëµå°¡ ¾Æ´Ï´Ù. attrNodeCollection[0].nodeType // 2 - ¼Ó¼º ³ëµå Çü½ÄÀÇ °ª attrNodeCollection[0].nodeName // id - ¼Ó¼º¸í attrNodeCollection[0].nodeValue // _attrNode - ÇØ´ç ¼Ó¼ºÀÇ °ª attrNodeCollection[0].hasChildNodes() // true - ÀÚ½ÄÀ» °¡Áö°í ÀÖ´Ù. attrNodeCollection[0].childNodes.length // 1 - 1°³ÀÇ ÀÚ½ÄÀ» º¸À¯ attrNodeCollection[0].childNodes[0].nodeType // 3 - text Çü½ÄÀÇ ³ëµå attrNodeCollection[0].childNodes[0].nodeName // #text - ¿ª½Ã text Çü½ÄÀÇ ³ëµåÀÓÀÌ È®ÀÎµÊ attrNodeCollection[0].childNodes[0].nodeValue // _attrNode - ÇØ´ç text ³ëµåÀÇ °ª attrNodeCollection[0].nodeValue === attrNodeCollection[0].childNodes[0].nodeValue // true </script> |
- IE9±îÁö´Â À妽º°¡ ÀÛ¼º ¼ø¼¿Í º°°³·Î ÁöÁ¤µÈ´Ù.
- IE8±îÁö´Â ¼Ó¼ºÀÇ °ªÀ» °¡Áø text Çü½ÄÀÇ ÀÚ½Ä ³ëµå°¡ Æ÷ÇԵǾî ÀÖÁö ¾Ê´Ù.
- IE7±îÁö´Â node.attributes´Â ÇØ´ç ¿ä¼ÒÀÇ Àüü ¼Ó¼ºÀ» ´ë»óÀ¸·Î index¸¦ ¸¸µç´Ù. (DIVÀÎ °æ¿ì 82°³)
°³º° attr ³ëµå Á¢±Ù ¹× ÆíÁý
- node.attributes[index]
- node.attributes.item(index)
- node.attributes.getNamedItem("¼Ó¼º¸í')
- node.attributes.setNamedItem(node) : node·Î ¼³Á¤ÇÔ¿¡ ÁÖÀÇ
- node.attributes.removeNamedItem("¼Ó¼º¸í'")
°³º° ¼Ó¼ºÀÇ °ªÀÇ È®ÀÎ
- node.attributes['index'].nodeValue
- elementNode.attributes.¼Ó¼º¸í.value
- elementNode.attributes['¼Ó¼º¸í'].value
- elementNode.attributes['index'].value
- elementNode.getAttribute('¼Ó¼º¸í')
- elementNode.getAttribute('¼Ó¼º¸í')
°³º° ¼Ó¼ºÀÇ °ªÀÇ ¼³Á¤
- node.attributes['index'].nodeValue = ¼³Á¤ °ª
- elementNode.attributes.¼Ó¼º¸í.value = ¼³Á¤ °ª
- elementNode.attributes['¼Ó¼º¸í'].value = ¼³Á¤ °ª
- elementNode.attributes['index'].value = ¼³Á¤ °ª
- elementNode.setAttribute('¼Ó¼º¸í'. '¼³Á¤ °ª')
- node.setAttributeNode(attribute node)
°ü·Ã ¸Þ¼µå- elementNode.setAttribute('¼Ó¼º¸í'. '¼³Á¤ °ª')
- node.setAttributeNode(attribute node)
- node.hasAttributes() : 1°³ ÀÌ»ó ¼³Á¤µÈ ¼Ó¼ºÀÌ ÀÖ´ÂÁö BooleanÀ¸·Î ¹Ýȯ, IE9ÀÌ»ó Áö¿ø
- elementNode.getAttribute('¼Ó¼º¸í')
- elementNode.setAttribute('¼Ó¼º¸í'. '¼³Á¤ °ª')
HTML ¹®¼ÀÇ ¼Ó¼ºÀ» IE¿¡¼ ³ëµå Â÷¿øÀ̳ª, setAttributeµîÀÇ ¸Þ¼µå »ç¿ëÀ¸·Î °ªÀÇ ¼³Á¤À̳ª º¯°æ½Ã Á¾Á¾ ¹ö±×°¡ ÀÖ¾î È®ÀÎÀÌ ÇÊ¿äÇÏ´Ù.