JavaScript
HTML manipulation
ToKor
2020. 12. 9. 03:27
- innerHTML: 모든 자식 요소와 텍스트 컨텐츠 접근 가능, 보안에 취약함
<p id="userName">User Kim</p>
<script>
var ele = document.getElementById('useName'); // get a node
console.log(ele); // <p id="userName">User Kim</p>
var ele = document.getElementById('useName').innerHTML; // get a text in a node
console.log(ele); // User Kim
</script>
<!---------------------------------------------------------------------------------->
<p id="userName">Mr.<span>User Kim</span></p>
<script>
var ele = document.getElementById('useName'); // get a node
console.log(ele); // <p id="userName"><span>Mr.</span>User Kim</p>
var ele = document.getElementById('useName').innerHTML; // get a text in a node
console.log(ele); // <span>Mr.</span>User Kim
var ele = document.querySelector('#userName span').innerHTML;
console.log(ele) // Mr.
</script>
- textContent: 특정요소의 컨텐츠에만 접근
<p id="userName">
<span>Mr.</span>
User Kim
</p>
<script>
var ele = document.getElementById("userName").textContent;
console.log(ele);
// Mr.
// User Kim
var ele = document.getElementById("userName").innerText;
console.log(ele);
// Mr. User Kim
</script>
- create element and content
: createElement, createTextNode, appendChild
<p id="userName">Click</p>
<p id="res"></p>
<script>
function creatName(){
var ele = document.createElement("span");
var cont = document.createTextNode("Mr. User Kim");
document.getElementById("res").innerHTML = ele.appendChild(cont).textContent;
}
var user = document.getElementById("userName");
user.addEventListener('click', createName, false);
click
Mr. User Kim // <span>Mr. User Kim</span>
- access to class
: className
<p id="person" class="family">Home</p>
<script>
var ele = document.getElementById("person");
console.log(ele.className) // family
ele.className += " friend"; // Add class
console.log(ele.className); // family friend
console.log(ele); // <p id="person" class="family friend>clas</p>
</script>
- Attribute
: hasAttribute(), getAttribute(), setAttribute(), removeAttribute()
<p id="person" class="family">Home</p>
<a href="" target="_blank" id="contact">Click</a>
<script>
var ele = document.getElementById("person");
/* hasAttribute() check attribute */
if(ele.hasAttribute("class")){
ele.className += " friend"; // Add a class
/* getAttribute() */
console.log(ele.getAttribute("class")); // return attribute's value, family friend
}else{
console.log("no class"); // display "no class"
}
/* setAttribute() */
var con = document.getElementById("contact");
con.setAttribute("href", "https://www.google.com"); // setAttribute(attribute, value)
/* removeAttribute() */
var con = document.getElementById("contact");
con.removeAttribute("target"); // removeAttribute(attribute)
</script>
- Style update
: classList, style
/* classList */
/* add(), remove(), contains(), toggle(), replace() */
<a id="person" class="">Home</a>
<input type="button" value="confirm" id="bbt">
<style>
.textcolor{
background-color:yellow;
}
.textborder{
border:3px solid red;
}
.textpadding{
padding: 10px;
}
.textnewcolor{
background-color:blue;
}
</style>
<script>
var ele = document.getElementById("person");
ele.className = "textcolor"; // className
ele.classList.add("textborder"); // add()
/* style */
ele.style.float = "right";
ele.style.marginRight = "40px";
function testUpdate(){
ele.classList.toggle("textpadding"); // toggle()
ele.classList.replace("textcolor", "textnewcolor"); // replace()
ele.classList.remove("textborder"); // remove()
var attCheck = ele.classList.contains("textcolor"); // contains()
if(attCheck) console.log("Yes");
else console.log("No"); // No
}
var bb = document.getElementById("bbt");
bb.addEventListener('click', testUpdate, false);
</script>