ì´ ëª¨ëì ì´ ë§ì§ë§ 문ììì, ì°ë¦¬ë ë°°ì´ì ì´í´ë³¼ ê²ì ëë¤. ë°°ì´ì´ë íëì ë³ìëª ìëì ë°ì´í° ìì´í ì 리ì¤í¸ë¥¼ ì ì¥íë ê°í¸í ë°©ë²ì ëë¤. ì¬ê¸°ì ì°ë¦¬ë ì ë°°ì´ì´ ì ì©íì§ ë³´ê³ , ì´ë»ê² ë°°ì´ì ë§ë¤ê³ , ê²ìíê³ (retrieve), ì¶ê°íê³ , ê·¸ë¦¬ê³ ë°°ì´ì ì ì¥ë ììë¤(items)ì ìì íëì§, ê·¸ë¦¬ê³ ê·¸ ì¸ì ë§ì ê²ì í구í©ëë¤.
ì íìì: ê¸°ì´ ì»´í¨í° íì©ì§ì, HTML, CSS ê·¸ë¦¬ê³ JavaScriptì ëí ê¸°ì´ ì§ì. 목ì : ë°°ì´ì´ 무ìì¸ì§ ì´í´íê³ JavaScriptìì ì´ë»ê² íì©íëì§ ë°°ì´ë¤. ë°°ì´ì´ë?ë°°ì´ì´ë ì¼ë°ì ì¼ë¡ "리ì¤í¸ê°ì ê°ì²´(list-like objects)"ë¼ê³ 기ì ë©ëë¤. ë°°ì´ì ë³´íµ ë¦¬ì¤í¸ì ì ì¥ë ë¤ìì ê°ë¤ì í¬í¨íê³ ìë íëì ê°ì²´ì ëë¤. ë°°ì´ ê°ì²´ë ë³ìì ì ì¥ë ì ìê³ ë¤ë¥¸ ì¢ ë¥ì ê°ë¤ì²ë¼ í¨ì¬ ê°ì ë°©ë²ì¼ë¡ ë¤ë¤ì§ ì ìëë°, ì°¨ì´ë ì°ë¦¬ë ë°°ì´ ìì ê° ê°ë¤ì ê°ë³ì ì¼ë¡ ì ê·¼í ì ìê³ , 리ì¤í¸ë¥¼ íµí´ ë°ë³µ(loop)íê³ ëª¨ë ê°ì ëì¼í ê²ì í ì ìë ê²ê³¼ ê°ì´, 리ì¤í¸ì í¨ê» ìì² ì ì©íê³ í¨ì¨ì ì¸ ê²ë¤ì í ì ìë¤ë ê²ì ëë¤. ìë§ë ì°ë¦¬ë ë°°ì´ì ì ì¥ë ìíëª ê³¼ ê°ê²©ì ê°ì§ê³ ìê³ , ê·¸ ê°ë¤ì íµí´ ë°ë³µíê³ , 모ë ê°ê²©ì íëë¡ í©íê³ ì´ì¡ì ì²êµ¬ìì íë¨ì ì¶ë ¥íê³ ì¶ìì§ë ëª¨ë¦ ëë¤.
ë§ì½ ë°°ì´ì´ ìë¤ë©´ 모ë ìì를 ë³ëì ë³ìì ì ì¥í´ì¼ í ê²ì´ê³ , ê° ììì ëí´ ë³ëë¡ ì¶ë ¥íê³ ëíë ì½ë를 ë¶ë¬ì¼ í ê²ì ëë¤. ì´ë° ë°©ìì ìì±í기ì í¨ì¬ ì¤ë ê±¸ë¦¬ê³ , ë í¨ì¨ì ì´ë©°, ì¤ë¥ê° ë기 ì½ìµëë¤. ë§ì½ ì°ë¦¬ê° ì²êµ¬ìì ëí 10ê°ì 물íì ê°ì§ê³ ìë¤ë©´ ì´ê²ë§ì¼ë¡ë ì´ë¯¸ ì§ì¦ëëë°, 100ê°ì 물í, í¹ì 1000ê°ì 물íì´ë¼ë©´ ì´ë¨ê¹ì? ì°ë¦¬ë ì´ ë¬¸ììì ëì¤ì ì´ ììë¡ ëìì¬ ê²ì ëë¤.
ì§ë 문ìììì²ë¼, ë¸ë¼ì°ì ê°ë°ì ì½ìì ëªëª ìì 를 ì ë ¥í¨ì¼ë¡ì¨ ë°°ì´ì ì§ì§ 기ì´ì ëí´ ë°°ì ë´ ìë¤. (ìëì ì½ì ì°½ì ì¬ì©íê±°ë, ë¹ì ì´ ì í¸íë ê°ë°ì ì½ìì ì¬ì©íë©´ ë©ëë¤.)
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>JavaScript console</title>
<style>
* {
box-sizing: border-box;
}
html {
background-color: #0c323d;
color: #809089;
font-family: monospace;
}
body {
max-width: 700px;
}
p {
margin: 0;
width: 1%;
padding: 0 1%;
font-size: 16px;
line-height: 1.5;
float: left;
}
.input p {
margin-right: 1%;
}
.output p {
width: 100%;
}
.input input {
width: 96%;
float: left;
border: none;
font-size: 16px;
line-height: 1.5;
font-family: monospace;
padding: 0;
background: #0c323d;
color: #809089;
}
div {
clear: both;
}
</style>
</head>
<body></body>
<script>
var geval = eval;
function createInput() {
var inputDiv = document.createElement("div");
var inputPara = document.createElement("p");
var inputForm = document.createElement("input");
inputDiv.setAttribute("class", "input");
inputPara.textContent = ">";
inputDiv.appendChild(inputPara);
inputDiv.appendChild(inputForm);
document.body.appendChild(inputDiv);
if (document.querySelectorAll("div").length > 1) {
inputForm.focus();
}
inputForm.addEventListener("change", executeCode);
}
function executeCode(e) {
try {
var result = geval(e.target.value);
} catch (e) {
var result = "error â " + e.message;
}
var outputDiv = document.createElement("div");
var outputPara = document.createElement("p");
outputDiv.setAttribute("class", "output");
outputPara.textContent = "Result: " + result;
outputDiv.appendChild(outputPara);
document.body.appendChild(outputDiv);
e.target.disabled = true;
e.target.parentNode.style.opacity = "0.5";
createInput();
}
createInput();
</script>
</html>
ë°°ì´ ë§ë¤ê¸°
ë°°ì´ì ëê´í¸ë¡ 구ì±ëë©° ì¼íë¡ êµ¬ë¶ ë í목ë¤ì í¬í¨í©ëë¤.
ì¼í 목ë¡ì ë°°ì´ì ì ì¥íê³ ì¶ë¤ë©´ ë¤ìê³¼ ê°ì´ íë©´ ë©ëë¤. ì½ìì ë¤ì íì ì ë ¥íììì¤.
var shopping = ["bread", "milk", "cheese", "hummus", "noodles"];
shopping;
ìì ìì ìì, ê° ììë 문ìì´ì´ì§ë§, ì°ë¦¬ë ë¤ìí ë°ì´í° ì íì ë°°ì´ì ì ì¥í ì ììµëë¤ (문ìì´, ì«ì, ê°ì²´, ë¤ë¥¸ ë³ì, ì¬ì§ì´ ë¤ë¥¸ ë°°ì´). ëì¼í ííì íëª©ë§ ë£ê±°ë (ìë sequence ì²ë¼) ë¤ìí ííì í목ì í¨ê» ë£ì ì (ìë random ì²ë¼) ììµëë¤. 모ë ì«ì, 문ìì´ ë±ì¼ íìë ììµëë¤. ë¤ìì ì ë ¥í´ë³´ì¸ì.
var sequence = [1, 1, 2, 3, 5, 8, 13];
var random = ["tree", 795, [0, 1, 2]];
ë¤ìì¼ë¡ ëì´ê°ê¸° ì ì¬ë¬ë¶ ë§ìëë¡ ë°°ì´ì ë§ë¤ì´ ë³´ì¸ì.
ê·¸ë° ë¤ì 문ìì´ì 문ìì ì ê·¼íë ê²ê³¼ ê°ì ë°©ë²ì¼ë¡ ê´í¸ í기ë²ì ì¬ì©íì¬ ë°°ì´ì ê°ë³ í목ì ì ê·¼ í ì ììµëë¤.
ì½ìì ë¤ìì ì ë ¥íì¸ì:
shopping[0];
// returns "bread"
ë¨ì¼ ë°°ì´ í목ì ì ê°ì ì ê³µíì¬, ë°°ì´ì í목ì ìì í ìë ììµëë¤. íë² í´ë³´ì¸ì:
shopping[0] = "tahini";
shopping;
// shopping will now return [ "tahini", "milk", "cheese", "hummus", "noodles" ]
ì°¸ê³ : ì ìë ë§íì§ë§, ì»´í¨í°ë ì«ì를 ì ë 0ë¶í° ììí©ëë¤!
ë°°ì´ ë´ë¶ì ë°°ì´ì ë¤ì¤ë°°ì´(multidimensional array)ì´ë¼ê³ í©ëë¤. ëê´í¸ ëê°ë¥¼ í¨ê» ì°ê²°íì¬ ë¤ë¥¸ ë°°ì´ ìììë ë°°ì´ ë´ë¶ì í목ì ì ê·¼ í ì ììµëë¤.ì를 ë¤ì´ random
ë°°ì´ ë´ë¶ì ì¸ ë²ì§¸ ììì ì ê·¼íë ¤ë©´(ì ì¹ì
참조) ë¤ìê³¼ ê°ì´ í ì ììµëë¤:
ë¤ì ë¨ê³ë¡ ëì´ê°ê¸° ì ì ì¶©ë¶í ë°°ì´ ìì 를 ì°ìµí´ ë³´ì¸ì.
length
ìì±ì ì¬ì©í´ì, 문ìì´ì (문ìì) 길ì´ë¥¼ ììë¸ ê²ê³¼ ì íí ê°ì ë°©ìì¼ë¡ (ì¼ë§ë ë§ì ììê° ë°°ì´ì ë¤ì´ ìëì§) ë°°ì´ì 길ì´ë¥¼ ììë¼ ì ììµëë¤. ë¤ìì ë´
ìë¤.:
sequence.length;
// should return 7
ì´ê²ì ë¤ë¥¸ ì¬ì©ë²ì ê°ì§ê³ ìì§ë§, ì´ê²ì ê°ì¥ íí ë°ë³µë¬¸ì´ ë°°ì´ì 모ë ìì를 ê±°ì¹ê¸° ì ê¹ì§ ê³ìíë¼ê³ ë§íë ë° ì°ì ëë¤. ë¤ìì´ ììì ëë¤.
var sequence = [1, 1, 2, 3, 5, 8, 13];
for (var i = 0; i < sequence.length; i++) {
console.log(sequence[i]);
}
ë¤ì 문ììì ë°ë³µë¬¸ì ëí´ì ìì¸í ë¤ë£¨ê² ì§ë§, ê°ë¨í ë§íìë©´, ì´ ì½ëë ë¤ìì ë§íê³ ììµëë¤.
console.log()
ë¡ ë¸ë¼ì°ì ì½ìì ì¶ë ¥í©ëë¤.ì´ë² ì¹ì ììë 문ìì´ì ë°°ì´ ììë¡ ëëê³ ê·¸ ìì¼ë¡ë í ì ìê² íë, ê·¸ë¦¬ê³ ìë¡ì´ ììë¤ì ë°°ì´ì ì¶ê°í ì ìê² íë ëªëª 꽤 ì ì©í ë°°ì´ì ê´ë ¨ë ë©ìëë¤ì ì´í´ë³¼ ê²ì ëë¤.
문ìì´ì ë°°ì´ë¡, ë°°ì´ì 문ìì´ë¡ ë³íí기íë¡ê·¸ë¨ì ë§ë¤ë¤ë³´ë©´ ì¢
ì¢
긴 문ìì´ë¡ ì´ë£¨ì´ì§ ìì ë°ì´í°ë¥¼ ì ê³µë°ê² ë ê²ì´ê³ , ìì ë°ì´í°ë¥¼ ì ì íì¬ ë ì ì©í ë°ì´í°ë¥¼ ì¶ì¶í´ í
ì´ë¸ ííë¡ íìíë ë± ìì
ì ìíí´ì¼ í©ëë¤. ì´ë¬í ìì
ì ìí´ split()
ë©ìë를 ì¬ì©í ì ììµëë¤. split()
ë©ìëë ì¬ì©ìê° ìíë 매ê°ë³ìë¡ ë¬¸ìì´ì ë¶ë¦¬íì¬ ë°°ì´ë¡ ííí´ì¤ëë¤.
ì°¸ê³ : ì¬ì¤ ìë°í ë°ì§ë©´ 문ìì´ ë©ìëì§ë§, ë°°ì´ê³¼ í¨ê» ì¬ì©í기 ë문ì ì¬ê¸°ì ë£ììµëë¤.
split()
ë©ìëê° ì´ë»ê² ìëíëì§ ì´í´ë´
ìë¤. ì°ì ì½ììì ìëì ê°ì 문ìì´ì ë§ëëë¤:
var myData = "Manchester,London,Liverpool,Birmingham,Leeds,Carlisle";
콤ë§ë¡ ë¶ë¦¬í´ ë´ ìë¤:
var myArray = myData.split(",");
myArray;
ë§ì§ë§ì¼ë¡ ìë¡ì´ ë°°ì´ì 길ì´ë¥¼ ì°¾ê³ ì´ ë°°ì´ìì ëª ê°ì§ í목ì ê²ìí´ ë´ ìë¤:
myArray.length;
myArray[0]; // the first item in the array
myArray[1]; // the second item in the array
myArray[myArray.length - 1]; // the last item in the array
ëí ìë ë°©ë²ì²ë¼ join()
ë©ìë를 ì¬ì©íì¬ ë°°ì´ì ë¤ì 문ìì´ë¡ ë§ë¤ ì ììµëë¤:
var myNewString = myArray.join(",");
myNewString;
ë°°ì´ì 문ìì´ë¡ ë³ííë ë ë¤ë¥¸ ë°©ë²ì toString()
ë©ìë를 ì¬ì©íë ê²ì
ëë¤. toString()
ì join()
ê³¼ ë¬ë¦¬ 매ê°ë³ìê° íììì´ì ë ê°ë¨íì§ë§, ë ë§ì ì íì´ ììµëë¤. join()
ì ì¬ì©íë©´ ë¤ë¥¸ 구ë¶ì를 ì§ì í ì ìì§ë§, toString()
ì íì 콤ë§ë¥¼ ì¬ì©í©ëë¤. (ì½¤ë§ ë§ê³ ë¤ë¥¸ 매ê°ë³ì를 ì¬ì©íì¬ 4ë¨ê³ë¥¼ ì¤íí´ ë³´ì¸ì.)
var dogNames = ["Rocket", "Flash", "Bella", "Slugger"];
dogNames.toString(); //Rocket,Flash,Bella,Slugger
ì´ë²ì ë°°ì´ì ìì를 ì¶ê°íê³ ì ê±°íë ë°©ë²ì ììë³¼ ì°¨ë¡ì
ëë¤. ììì ë§ë myArray
를 ë¤ì ì¬ì©íê² ìµëë¤. ì¹ì
ì ììëë¡ ì§ííì§ ììë¤ë©´ ìëì ê°ì ë°°ì´ì ë§ë¤ì´ì£¼ì¸ì:
var myArray = [
"Manchester",
"London",
"Liverpool",
"Birmingham",
"Leeds",
"Carlisle",
];
먼ì , ë°°ì´ì 맨 ëì ìì를 ì¶ê°íê±°ë ì ê±°í기 ìí´ ê°ê° push()
and pop()
를 ì¬ì©í ì ììµëë¤.
먼ì push()
를 ì¬ì©í©ëë¤. â ë°°ì´ì ëì ì¶ê°í ìì를 ë°ëì íë ì´ì í¬í¨í´ì¼ íë¤ë ì ì 기ìµíê³ ìëì ê°ì´ ë°ë¼í´ë³´ì¸ì:
myArray.push("Cardiff");
myArray;
myArray.push("Bradford", "Brighton");
myArray;
ë©ìë í¸ì¶ì´ ìë£ëë©´ ë°°ì´ì ì 길ì´ê° 리í´ë©ëë¤. ë§ì½ ì ë°°ì´ì 길ì´ë¥¼ ë³ìì ì ì¥íê³ ì¶ë¤ë©´, ë¤ìê³¼ ê°ì´ í ì ììµëë¤:
var newLength = myArray.push("Bristol");
myArray;
newLength;
ë°°ì´ì ë§ì§ë§ ìì를 ì ê±°íë ë°©ë²ì pop()
ì¼ë¡ ë§¤ì° ê°ë¨í©ëë¤. ìëì ê°ì´ ë°ë¼í´ ë³´ì¸ì:
ë©ìë í¸ì¶ì´ ìë£ëë©´ ì ê±°ë ììê° ë¦¬í´ë©ëë¤. ì´ ìì를 ì ë³ìì ì ì¥í기 ìí´ì, ë¤ìê³¼ ê°ì´ í ì ììµëë¤:
var removedItem = myArray.pop();
myArray;
removedItem;
unshift()
ìshift()
ë push()
ì pop()
ê³¼ ìì í ëì¼íê² ëìí©ëë¤. ë¤ë§, ë°°ì´ì 맨 ëì´ ìë ì ì¼ ì²ì ë¶ë¶ì ìì를 ì¶ê°íê±°ë ì ê±°í©ëë¤.
먼ì unshift()
를 ì¬ì©í´ë´
ìë¤:
myArray.unshift("Edinburgh");
myArray;
ì´ì shift()
를 ì¬ì©í´ë´
ìë¤!
var removedItem = myArray.shift();
myArray;
removedItem;
ììì ì¤ëª íë ìì ë¡ ëìê° ë´ ìë¤. ìíì ì´ë¦ê³¼ ê°ê²©ì ì²êµ¬ìì ì¶ë ¥íê³ , ê°ê²©ì í©ê³ë¥¼ ë´ì ê·¸ê²ì ë°ì ì¶ë ¥í©ëë¤. ìëì ìì ê°ë¥í ìì ì, ì«ì를 í¬í¨íê³ ìë 주ìì´ ììµëë¤. ê° ì¤ì ì½ëì ì¶ê°í ì¥ì를 íìíê³ ììµëë¤. ê·¸ê²ë¤ì ë¤ìê³¼ ê°ìµëë¤.
// number 1
주ìì ëª ê°ì 문ìì´ì¸ë°, ê° ë¬¸ìì´ì ìíì ì´ë¦ê³¼ ê°ê²©ì í¬í¨íê³ ìê³ ì½ë¡ ì ìí´ ë¶ë¦¬ëì´ ììµëë¤. ì°ë¦¬ë ë¹ì ì´ ì´ê²ì products
ë¼ë ë°°ì´ì¼ë¡ ë°ê¾¸ê³ ì´ê³³ì ì´ê²ì ì ì¥í기를 ìí©ëë¤.// number 2
주ìì´ ìë ê°ì ë¼ì¸ììë for ë°ë³µë¬¸ì´ ììë©ëë¤. ì´ ë¼ì¸ìì ì°ë¦¬ë íì¬ i <= 0
를 ê°ì§ê³ ìëë°, ì´ ì¡°ê±´ í
ì¤í¸(conditional test)ë "i
ê° ë ì´ì 0ë³´ë¤ ìê±°ë ê°ì§ ìì ë ë©ì¶ìì¤"ë¼ê³ ë§íê³ ìê³ , i
ë 0ìì ììí기 ë문ì, ì´ë for ë°ë³µë¬¸ì´ ì¦ì ë©ì¶ë ê²ì ì ë°íë ì¡°ê±´ í
ì¤í¸ì
ëë¤. ì°ë¦¬ë ë¹ì ì´ ì´ê²ì i
ê° products
ë°°ì´ì 길ì´(length)ë³´ë¤ ë ì´ì ìì§ ìì ë ë°ë³µì ë©ì¶ê² íë ì¡°ê±´ í
ì¤í¸ë¡ ë°ê¾¸ê¸°ë¥¼ ìí©ëë¤.// number 3
주ì ë°ë¡ ìëìì ì°ë¦¬ë ë¹ì ì´ íì¬ ë°°ì´ì ìì를, í ê°ë ë¨ìí ì´ë¦ì í¬í¨íê³ í ê°ë ë¨ìí ê°ê²©ì í¬í¨íë ë ê°ì ììë¡ ë¶ë¦¬íë í ì¤ì ì½ë를 ìì±í기를 ìí©ëë¤. ë§ì½ ë¹ì ì´ ì´ê²ì ì´ë»ê² íëì§ íì¤í ìì§ ëª»íë¤ë©´, ì ì©í 문ìì´ ë©ìë(Useful string methods)를 ëìì ìí´ ì°¸ê³ íê±°ë, ë ëì ì 보를 ìíë¤ë©´, ì´ ê¸ì 문ìì´ê³¼ ë°°ì´ ì íí기 ë¶ë¶ì ì°¸ê³ íì¸ì.total
ì´ë¼ë ë³ìê° ì½ëì ì쪽ì ììµëë¤. ì´ ë°ë³µë¬¸ ììì (// number 4
ìë) ì°ë¦¬ë ë¹ì ì´ íì¬ ìíì ê°ê²©ì ë°ë³µë¬¸ì ê° ë°ë³µë§ë¤ ì´ì¡(total)ì í©íë ì½ë í ì¤ì ì¶ê°í´ì, ì½ëì ëìì ì¬ë°ë¥¸ ì´ì¡ì´ ì²êµ¬ìì ì¸ìëëë¡ í기를 ìí©ëë¤. ë¹ì ì ì´ê²ì í기 ìí´ ëì
ì°ì°ì(assignment operator)ê° íìí ì§ë 모ë¦
ëë¤.itemText
ë³ìê° "current item name â $current item price"ì ê°ì´ ë§ë¤ì´ì§ëë¡, ì를 ë¤ìë©´ ê°ê°ì ê²½ì°ì "Shoes â $23.99" ì²ë¼ ë§ë¤ì´ì§ëë¡ ì°ë¦¬ë ë¹ì ì´ // number 5
ë°ë¡ ìëì ì¤ì ë³ê²½í´ì, ê°ê°ì 물íì ëí ì¬ë°ë¥¸ ì ë³´ê° ì²êµ¬ìì ì¶ë ¥ëëë¡ í기를 ìí©ëë¤. ì´ê²ì, ë¹ì ìê² ì¹ìí ì§ë 모르ë, ë¨ì§ ë¨ìí 문ìì´ ì°ê²°(concatenation)ì
ëë¤.<h2>Live output</h2>
<div class="output" style="min-height: 150px;">
<ul></ul>
<p></p>
</div>
<h2>Editable code</h2>
<p class="a11y-label">
Press Esc to move focus away from the code area (Tab inserts a tab character).
</p>
<textarea id="code" class="playable-code" style="height: 410px;width: 95%">
var list = document.querySelector('.output ul');
var totalBox = document.querySelector('.output p');
var total = 0;
list.innerHTML = '';
totalBox.textContent = '';
// number 1
'Underpants:6.99'
'Socks:5.99'
'T-shirt:14.99'
'Trousers:31.99'
'Shoes:23.99';
for (var i = 0; i <= 0; i++) { // number 2
// number 3
// number 4
// number 5
itemText = 0;
var listItem = document.createElement('li');
listItem.textContent = itemText;
list.appendChild(listItem);
}
totalBox.textContent = 'Total: $' + total.toFixed(2);
</textarea>
<div class="playable-buttons">
<input id="reset" type="button" value="Reset" />
<input id="solution" type="button" value="Show solution" />
</div>
var textarea = document.getElementById("code");
var reset = document.getElementById("reset");
var solution = document.getElementById("solution");
var code = textarea.value;
var userEntry = textarea.value;
function updateCode() {
eval(textarea.value);
}
reset.addEventListener("click", function () {
textarea.value = code;
userEntry = textarea.value;
solutionEntry = jsSolution;
solution.value = "Show solution";
updateCode();
});
solution.addEventListener("click", function () {
if (solution.value === "Show solution") {
textarea.value = solutionEntry;
solution.value = "Hide solution";
} else {
textarea.value = userEntry;
solution.value = "Show solution";
}
updateCode();
});
var jsSolution =
"var list = document.querySelector('.output ul');\nvar totalBox = document.querySelector('.output p');\nvar total = 0;\nlist.innerHTML = '';\ntotalBox.textContent = '';\n\nvar products = ['Underpants:6.99',\n 'Socks:5.99',\n 'T-shirt:14.99',\n 'Trousers:31.99',\n 'Shoes:23.99'];\n\nfor(var i = 0; i < products.length; i++) {\n var subArray = products[i].split(':');\n var name = subArray[0];\n var price = Number(subArray[1]);\n total += price;\n itemText = name + ' â $' + price;\n\n var listItem = document.createElement('li');\n listItem.textContent = itemText;\n list.appendChild(listItem);\n}\n\ntotalBox.textContent = 'Total: $' + total.toFixed(2);";
var solutionEntry = jsSolution;
textarea.addEventListener("input", updateCode);
window.addEventListener("load", updateCode);
// stop tab key tabbing out of textarea and
// make it write a tab at the caret position instead
textarea.onkeydown = function (e) {
if (e.keyCode === 9) {
e.preventDefault();
insertAtCaret("\t");
}
if (e.keyCode === 27) {
textarea.blur();
}
};
function insertAtCaret(text) {
var scrollPos = textarea.scrollTop;
var caretPos = textarea.selectionStart;
var front = textarea.value.substring(0, caretPos);
var back = textarea.value.substring(
textarea.selectionEnd,
textarea.value.length,
);
textarea.value = front + text + back;
caretPos = caretPos + text.length;
textarea.selectionStart = caretPos;
textarea.selectionEnd = caretPos;
textarea.focus();
textarea.scrollTop = scrollPos;
}
// Update the saved userCode every time the user updates the text area code
textarea.onkeyup = function () {
// We only want to save the state when the user code is being shown,
// not the solution, so that solution is not saved over the user code
if (solution.value === "Show solution") {
userEntry = textarea.value;
} else {
solutionEntry = textarea.value;
}
updateCode();
};
html {
font-family: sans-serif;
}
h2 {
font-size: 16px;
}
.a11y-label {
margin: 0;
text-align: right;
font-size: 0.7rem;
width: 98%;
}
body {
margin: 10px;
background-color: #f5f9fa;
}
ì¤ìµ: ìì 5ê°ì ê²ìì´
push()
ì pop()
ê°ì ë°°ì´ ë©ìëì ì¢ì ì¬ì©ì ì¹ ì±(web app)ìì íì¬ íëì ì¸ ìì(item)ì 기ë¡ì ì ì§í ëì
ëë¤. ì를 ë¤ìë©´ ëììì¼ë¡ ë ì¥ë©´ìì, ë¹ì ì íì¬ ë³´ì´ë ë°°ê²½ì ëíë´ë ê°ì²´ë¤ì ë°°ì´ì ê°ì§ê³ ìê³ ì±ë¥ì´ë ì´ìì í¨ì ì´ì ë¡ ì¤ì§ íë²ì 50ê°ë§ì´ ë³´ì¬ì§ê¸°ë¥¼ ìí ì§ë 모ë¦
ëë¤. ìë¡ì´ ê°ì²´ê° ìì±ëê³ ë°°ì´ì ì¶ê°ëë©°, ìíë ì를 ì ì§í기 ìí´, ì¤ëë ê²ë¤ì ë°°ì´ìì ìì ë ì ììµëë¤.
ì´ ìì ìì ì°ë¦¬ë ëì± ë¨ìí ì¬ì©ì ë³´ì¼ ê²ì ëë¤. ì¬ê¸°ì ì°ë¦¬ë ë¹ì ìê² ê²ì ììê° ìë ê°ì§ ê²ì ì¬ì´í¸ë¥¼ ì ê³µí©ëë¤. ê°ë ì ì©ì´ê° ê²ì ììì ì ë ¥ëìì ë, ìì 5ê°ì ì´ì ê²ì ì©ì´ë¤ì´ 목ë¡ì ë³´ì´ë ê²ì ëë¤. ì©ì´ì ìê° 5를 ëì´ê° ë, ë§ì§ë§ ì©ì´ë ìë¡ì´ ì©ì´ê° ìì ì¶ê°ë ëë§ë¤ ì§ìì§ê¸° ììí´ì, 5ê°ì ì´ì ì©ì´ê° ê³ì ë³´ì ëë¤.
ì°¸ê³ : ì¤ì ê²ì ì±ììë, ë¹ì ì ìë§ë ì´ì ê²ìì¼ë¡ ëìê°ê¸° ìí´ ì´ì ê²ì ì©ì´ë¥¼ í´ë¦í ì ìê³ , ì´ê²ì ì¤ì ê²ì 결과를 ë³´ì¬ì¤ ê²ì ëë¤! ì°ë¦¬ë ë¨ì§ ì°ì ì ë¨ìíê² íê³ ììµëë¤.
ì±ì ìì±í기 ìí´, ì°ë¦¬ë ë¹ì ì´ ë¤ìì í기를 íìë¡ í©ëë¤.
// number 1
주ì ë°ì ë°°ì´ì ììì ê²ì ì
ë ¥(input)ì ì
ë ¥ë íì¬ ê°ì ì¶ê°íë ì½ë를 ì¶ê°íì¸ì. ì´ê²ì searchInput.value
를 ì¬ì©íì¬ íìë ì ììµëë¤.// number 2
주ì ë°ì íì¬ ë°°ì´ì ëì ìë ê°ì ì ê±°íë ì½ë를 ì¶ê°íì¸ì.<h2>Live output</h2>
<div class="output" style="min-height: 150px;">
<input type="text" /><button>Search</button>
<ul></ul>
</div>
<h2>Editable code</h2>
<p class="a11y-label">
Press Esc to move focus away from the code area (Tab inserts a tab character).
</p>
<textarea id="code" class="playable-code" style="height: 370px; width: 95%">
var list = document.querySelector('.output ul');
var searchInput = document.querySelector('.output input');
var searchBtn = document.querySelector('.output button');
list.innerHTML = '';
var myHistory = [];
searchBtn.onclick = function() {
// we will only allow a term to be entered if the search input isn't empty
if (searchInput.value !== '') {
// number 1
// empty the list so that we don't display duplicate entries
// the display is regenerated every time a search term is entered.
list.innerHTML = '';
// loop through the array, and display all the search terms in the list
for (var i = 0; i < myHistory.length; i++) {
itemText = myHistory[i];
var listItem = document.createElement('li');
listItem.textContent = itemText;
list.appendChild(listItem);
}
// If the array length is 5 or more, remove the oldest search term
if (myHistory.length >= 5) {
// number 2
}
// empty the search input and focus it, ready for the next term to be entered
searchInput.value = '';
searchInput.focus();
}
}
</textarea>
<div class="playable-buttons">
<input id="reset" type="button" value="Reset" />
<input id="solution" type="button" value="Show solution" />
</div>
html {
font-family: sans-serif;
}
h2 {
font-size: 16px;
}
.a11y-label {
margin: 0;
text-align: right;
font-size: 0.7rem;
width: 98%;
}
body {
margin: 10px;
background: #f5f9fa;
}
var textarea = document.getElementById("code");
var reset = document.getElementById("reset");
var solution = document.getElementById("solution");
var code = textarea.value;
var userEntry = textarea.value;
function updateCode() {
eval(textarea.value);
}
reset.addEventListener("click", function () {
textarea.value = code;
userEntry = textarea.value;
solutionEntry = jsSolution;
solution.value = "Show solution";
updateCode();
});
solution.addEventListener("click", function () {
if (solution.value === "Show solution") {
textarea.value = solutionEntry;
solution.value = "Hide solution";
} else {
textarea.value = userEntry;
solution.value = "Show solution";
}
updateCode();
});
var jsSolution =
"var list = document.querySelector('.output ul');\nvar searchInput = document.querySelector('.output input');\nvar searchBtn = document.querySelector('.output button');\n\nlist.innerHTML = '';\n\nvar myHistory= [];\n\nsearchBtn.onclick = function() {\n if(searchInput.value !== '') {\n myHistory.unshift(searchInput.value);\n\n list.innerHTML = '';\n\n for(var i = 0; i < myHistory.length; i++) {\n itemText = myHistory[i];\n var listItem = document.createElement('li');\n listItem.textContent = itemText;\n list.appendChild(listItem);\n }\n\n if(myHistory.length >= 5) {\n myHistory.pop();\n }\n\n searchInput.value = '';\n searchInput.focus();\n }\n}";
var solutionEntry = jsSolution;
textarea.addEventListener("input", updateCode);
window.addEventListener("load", updateCode);
// stop tab key tabbing out of textarea and
// make it write a tab at the caret position instead
textarea.onkeydown = function (e) {
if (e.keyCode === 9) {
e.preventDefault();
insertAtCaret("\t");
}
if (e.keyCode === 27) {
textarea.blur();
}
};
function insertAtCaret(text) {
var scrollPos = textarea.scrollTop;
var caretPos = textarea.selectionStart;
var front = textarea.value.substring(0, caretPos);
var back = textarea.value.substring(
textarea.selectionEnd,
textarea.value.length,
);
textarea.value = front + text + back;
caretPos = caretPos + text.length;
textarea.selectionStart = caretPos;
textarea.selectionEnd = caretPos;
textarea.focus();
textarea.scrollTop = scrollPos;
}
// Update the saved userCode every time the user updates the text area code
textarea.onkeyup = function () {
// We only want to save the state when the user code is being shown,
// not the solution, so that solution is not saved over the user code
if (solution.value === "Show solution") {
userEntry = textarea.value;
} else {
solutionEntry = textarea.value;
}
updateCode();
};
ë¹ì ì 기ëì ìíí´ ë³´ì¸ì!
ë¹ì ì ì´ ë¬¸ìì ëì ëë¬íì§ë§, ê°ì¥ ì¤ìí ì ë³´ë¤ì 기ìµí ì ìì¼ì ê°ì? ë¹ì ì ëìê°ê¸° ì ì ì´ ì ë³´ë¤ì ë³´ì íê³ ìë¤ë ê²ì íì¸íë ì¶ê°ì ì¸ í ì¤í¸ë¤ì ì°¾ì ì ììµëë¤ â ë¤ìì ë³´ì¸ì: Test your skills: Arrays
ê²°ë¡ì´ 문ì를 ì ì½ì¼ì ¨ë¤ë©´ ë°°ì´ì´ 꽤 ì ì©í´ ë³´ì¸ë¤ë ê²ì ëìí ê²ëë¤. ë°°ì´ì ì¢ ì¢ ëª¨ë ììì ëì¼í ê²ì í기 ìí´ ë°ë³µë¬¸ê³¼ í¨ê» JavaScriptì 모ë ê³³ìì ì°¾ìë³¼ ì ììµëë¤. ë¤ì 모ëìì ë°ë³µë¬¸ì ëí´ ì기 ìí´ ìë 모ë ì ì©í 기본ì ê°ë¥´ì¹ ê²ì´ì§ë§, ì°ì ì¤ì¤ë¡ìê² ë°ì를 ë³´ë´ê³ í´ìì ì·¨íì¸ì. ì´ ëª¨ëì 모ë 문ì를 ë ííì ¨ì¼ë ì ê¹ ì¬ì´ê°ë ì¢ìµëë¤!
ì ì¼í ë¨ì ê²ì ì´ ëª¨ëì íê°ì¸ë°, ì´ë ì´ íê° ì´ì ì ì¤ë 문ìë¤ì ëí ë¹ì ì ì´í´ë¥¼ í ì¤í¸í ê²ì ëë¤.
ì°¸ê³Array
â Array
ê°ì²´ 참조 íì´ì§ â ì´ íì´ì§ìì ë¤ë¤ì§ 기ë¥ë¤ê³¼ ë ë§ì ê²ë¤ì ëí ìì¸í 참조 ê°ì´ëRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4