| <!DOCTYPE HTML> |
| <html> |
| <head> |
| <script src="../../../resources/js-test-pre.js"></script> |
| </head> |
| <body id="a"> |
| <script> |
| |
| description("Test that different ways of changing an element's id all work properly."); |
| |
| debug("\n1. Check id after parsing."); |
| shouldBe('document.getElementById("a")', 'document.body'); |
| shouldBe('document.body.id', '"a"'); |
| shouldBe('document.body.getAttributeNode("id").textContent', '"a"'); |
| |
| debug("\n2. Change Attr.value."); |
| document.body.getAttributeNode("id").value = "b"; |
| shouldBe('document.getElementById("a")', 'null'); |
| shouldBe('document.getElementById("b")', 'document.body'); |
| shouldBe('document.body.getAttributeNode("id").textContent', '"b"'); |
| |
| debug("\n3. Change HTMLElement.id."); |
| document.body.id = "c"; |
| shouldBe('document.getElementById("b")', 'null'); |
| shouldBe('document.getElementById("c")', 'document.body'); |
| shouldBe('document.body.getAttributeNode("id").textContent', '"c"'); |
| |
| debug("\n4. Change id attribute via setAttribute()."); |
| document.body.setAttribute("id", "d"); |
| shouldBe('document.getElementById("c")', 'null'); |
| shouldBe('document.getElementById("d")', 'document.body'); |
| shouldBe('document.body.getAttributeNode("id").textContent', '"d"'); |
| |
| debug("\n5. Change id attribute via setAttributeNS()."); |
| document.body.setAttributeNS(null, "id", "e"); |
| shouldBe('document.getElementById("d")', 'null'); |
| shouldBe('document.getElementById("e")', 'document.body'); |
| shouldBe('document.body.getAttributeNode("id").textContent', '"e"'); |
| |
| var attrNode = document.body.getAttributeNode("id"); |
| |
| debug("\n6. Change Attr.nodeValue."); |
| document.body.getAttributeNode("id").nodeValue = "f"; |
| shouldBe('document.getElementById("e")', 'null'); |
| shouldBe('document.getElementById("f")', 'document.body'); |
| shouldBe('document.body.id', '"f"'); |
| shouldBe('document.body.getAttribute("id")', '"f"'); |
| shouldBe('attrNode.textContent', '"f"'); |
| shouldBe('attrNode.childNodes.length', '0'); |
| |
| debug("\n7. Changing Attr.textContent."); |
| attrNode.textContent = "hi"; |
| shouldBe('document.getElementById("i")', 'null'); |
| shouldBe('document.getElementById("hi")', 'document.body'); |
| shouldBe('document.body.id', '"hi"'); |
| shouldBe('document.body.getAttribute("id")', '"hi"'); |
| shouldBe('attrNode.textContent', '"hi"'); |
| shouldBe('attrNode.childNodes.length', '0'); |
| |
| debug("\n8. Node.normalize(), joining text nodes."); |
| attrNode.normalize(); |
| shouldBe('document.getElementById("hi")', 'document.body'); |
| shouldBe('document.body.id', '"hi"'); |
| shouldBe('document.body.getAttribute("id")', '"hi"'); |
| shouldBe('document.body.getAttributeNode("id").textContent', '"hi"'); |
| shouldBe('document.body.getAttributeNode("id").childNodes.length', '0'); |
| |
| debug("\n9. Remove an Attr node."); |
| document.body.removeAttributeNode(attrNode); |
| shouldBe('document.body.id', '""'); |
| shouldBe('document.getElementById("mn")', 'null'); |
| shouldBe('document.body.getAttribute("id")', 'null'); |
| shouldBe('document.body.getAttributeNode("id")', 'null'); |
| |
| debug("\n10. Add an Attr node."); |
| var attrNode = document.createAttribute("id"); |
| attrNode.value = "o"; |
| document.body.setAttributeNode(attrNode); |
| shouldBe('document.getElementById("o")', 'document.body'); |
| shouldBe('document.body.id', '"o"'); |
| shouldBe('document.body.getAttribute("id")', '"o"'); |
| |
| debug("\n11. Add an Attr node over an existing one."); |
| var attrNode = document.createAttribute("id"); |
| attrNode.value = "p"; |
| document.body.setAttributeNode(attrNode); |
| shouldBe('document.getElementById("o")', 'null'); |
| shouldBe('document.getElementById("p")', 'document.body'); |
| shouldBe('document.body.id', '"p"'); |
| shouldBe('document.body.getAttribute("id")', '"p"'); |
| </script> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |