[ 자바스크립트 중고급 내용 별도 정리(함수,호이스팅,prototype,실행컨텍스트 등. ]
- 해당 내용은 class 상속을 제외한 자바스크립트 중,고급 내용을 정리한 것입니다.
'스터디 > 자바스크립트중고급' 카테고리의 다른 글
1. 함수(Function) 및 객체(Object) (0) | 2018.09.27 |
---|
[ 자바스크립트 중고급 내용 별도 정리(함수,호이스팅,prototype,실행컨텍스트 등. ]
- 해당 내용은 class 상속을 제외한 자바스크립트 중,고급 내용을 정리한 것입니다.
1. 함수(Function) 및 객체(Object) (0) | 2018.09.27 |
---|
[ 함수(Function) ]
-종류)
1. 선언적 함수 : 함수에 이름이 있는 함수로 호이스팅의 대상이 된다.(호이스팅은 별도로 정리)
function circle(radius){
~~
return something;
}
2. 익명 함수 : 함수에 이름이 없어 주로 변수에 대입해서 사용하는 함수(호이스팅의 대상이 되지 않음)
-> 따라서 순차적으로 수행되기 때문에 요즘은 익명함수로 선언하는 것이 추천됨.
var anonymousFunc = function(raidus){
~~
return something;
}
3. 람다 함수 : 일회성으로 사용하기 위한 목적으로 사용되는 함수
(function(radius){
~~
return something;
})(25)
- 매개변수가 정해지지 않은 함수 처리 방식)
-> 자바스크립트는 arguments 라는 배열을 제공함
-> arguments[0], arguments[1], ... 하면 각 순서대로 넘긴 매개변수 값을 가져올 수 있다.
-> arguments.length : 실재 넘긴 매개변수 개수
-> arguments.callee 는 함수 정의부를 의미한다.
-> 따라서, arguments.callee.length 하면 선언된 매개변수 개수
testFunc(10,20,30,40); // 선언적 함수는 호이스팅되기 때문에 수행 가능.
function testFunc(a, b){
if(arguments.callee.length != arguments.callee){
alert("선언된 함수의 매개변수 개수와 실재 호출시 넘긴 매개변수 개수가 다릅니다.");
alert("선언 매개변수 개수 : " + arguments.callee.length);
alert("실재 호출시 넘긴 매개변수 개수 : " + arguments.length);
// arguments[0] // 10
// arguments[1] // 20
// arguments[2] // 30
}
}
- 인코딩/디코딩 내장함수)
-> 한글 등을 넘길때 값에 문제가 생길 수 있어 인코딩에 사용되는 내장함수이다.
escape(str) <-> unescape(str)
encodeURIComponent(str) <-> decodeURIComponent(str)
- 숫자 판별 내장함수)
isNaN() : 숫자면 true 아니면 false를 return함.
- 정수 변환 내장함수)
parseInt()
- 실수 변환 내장함수)
parseFloat()
-------------------------------------------------------------------------------------------
[ 객체(Object) ]
객체 선언 방식 종류)
1. new Object()를 통한 방식 -> 거의 사용 안함...
2. 객체 리터럴 방식
var circle = {
변수 : "값",
메서드1 : function(){
~~
return something;
},
메서드2 : function(){}
...
}
-new 를 통해 객체를 여러개 생성할 수 없음으로 3번 생성자를 이용한 방식이 제일 자주 사용된다.
-객체 선언 이후에 객체에 메서드, 변수를 추가하는 방법)
circle.새변수명 = 값;
circle.새메서드명 = function(){
~~
}
->*** 이런 방식 말고도 변수나 문자열을 통해서도 동적으로 변수, 메서드를 추가할 수 있다.
circle["새변수명"] = 값;
circle["새메서드명"] = function(){};
var newFunction = "print";
circle[newFunction] = function(){} 처럼 동적으로 생성할 수 있다.
3. 생성자 함수를 이용한 방식
1) 선언적 함수를 이용하는 방식
function constructorObject(a, b){
this.변수명 = 값;
this.메서드명 = function(){}
...
}
2) 익명함수를 이용하는 방식
var constructorObject = function(a,b){
this.변수명 = 값;
this.메서드명 = function(){}
}
new constructorObject(10,20);
처럼 new 연산자를 통해 인스턴스를 생성해서 사용하며, 이때 this는 자기 자신의 객체를 의미하게 된다.
-> 자바스크립트에서 각 사용처 별로 this가 굉장히 다른데 추후에 정리...
-> 일단, 생성자 함수를 통해 생성된 객체에서의 this는 자기 자신의 객체를 의미
-> 함수 내에서 this는 window 객체를 의미
역시 익명함수에서도 new를 통해 생성한 객체에 추가로 변수, 메서드를 추가하고 싶은 경우
var newObject = new constructorObject(10,20);
newObject.newVal = "새로운 값 추가";
newObject["newMethod"] = function(){} 처럼 추가할 수 있다.
*** [ 객체에서의 prototype ]
-> prototype 사용 이유)
생성자 함수를 통해 선언된 것을 new 키워드를 통해 객체 생성시 모든 인스턴스들은
생성자 함수 내에 선언된 메서드 공간을 중복적으로 할당받게 된다.
하지만 이러한 중복된 메서드를 공간을 객체마다 각기 할당받는 것은 비효율 적임으로
공유될 수 있는 prototype을 통해 한군대에서만 정의될 수 있도록 해주는 방식을 사용한다.
클래스명.prototype.변수명 = "값"; // 이 값은 해당 클래스명으로 생성되는 모든 객체에서 공유된다.
클래스명.prototype.메서드명 = function(){}
// 한번에 여러개를 뭉뚱그려 정의하고 싶다면...
클래스명.prototype = {
// 해당 클래스의 prototype을 통째로 재정의할 수도 있다.
변수명 : "값",
메서드1 : function(){},
메서드2 : function(){},
...
}
- Date 내장 객체 자주사용되는 메서드)
var date = new Date();
date.getFullYear();
date.getMonth() + 1; // 시작값이 0부터여서 1을 더해야함
date.getDate(); // 일
date.getHours();
date.getMinutes();
date.getSeconds();
- 콜백(Callback) 함수란? )
: 별거없다... 함수 호출시 매개변수에 함수를 넘겨서 해당 함수 내에서 특정 시점에 넘긴 함수를 수행하기 위한 목적으로 사용된다.
-> ajax등에서 success시 로딩 이미지를 없앤다거나 success가 완료된 시점에 특정 작업 등을 하려할 때 많이 사용된다.
function print(sum){
document.write(sum);
}
function testMethod(callbackF, a, b){
var sum = 0;
sum = a + b;
callbackF(sum); // 전달받은 callbackF(print메서드)를 수행한다.
}
testMethod(print, 10, 20);
1.자바스크립트 중고급 내용 정리(함수,호이스팅,prototype, 실행컨텍스트 등) (0) | 2018.09.30 |
---|
[ 자바스크립트로 사용자 OS 버전 확인하는 코드(IE버전 X 운영체제 판별)]
자바스크립트로 IE8 과 같은 브라우저 버전 체크하는 코드는 많은데 막상 사용자의 운영체제가 무슨 버전인지까진 판별하는 코드가 잘 없었는데
다른분 티스토리에서 보고 유용한거같아 공유하려합니다.
조금더 덧대서 해당 윈도우 운영체제에 로그인한 사용자명의 폴더를 알아야할 경우
var net = new ActiveXObject ( "WScript.NetWork" );
var userName = net.UserName;
strFilePath = "C:\\Users\\" + userName + "\\AppData\\Local\\" + nanumTechnologiesPath; 코드를 사용하시면 로그인한 userName도 얻어올 수 있습니다.
이 아래는 자바스크립트로 운영체제 종류와 버전을 판별하는 코드입니다.
// JavaScript Document
// 만든이 : 다섯방울, THREE™ (http://the3.tistory.com)
// 주소 : http://the3.tistory.com/17
// Data : 2015. 01. 28
// Version : 0.2
// 참조 http://www.openspc2.org/userAgent/
// OS 버전 보기
var uanaVigatorOs = navigator.userAgent;
var AgentUserOs= uanaVigatorOs.replace(/ /g,'');
var Ostxt="";
var OSName="";
var OsVers="";
// This script sets OSName variable as follows:
// "Windows" for all versions of Windows
// "MacOS" for all versions of Macintosh OS
// "Linux" for all versions of Linux
// "UNIX" for all other UNIX flavors
// "Unknown OS" indicates failure to detect the OS
new function() {
var OsNo = navigator.userAgent.toLowerCase();
jQuery.os = {
Linux: /linux/.test(OsNo),
Unix: /x11/.test(OsNo),
Mac: /mac/.test(OsNo),
Windows: /win/.test(OsNo)
}
}
function OSInfoDev(){
if($.os.Windows) {
if(AgentUserOs.indexOf("WindowsCE") != -1) OSName="Windows CE";
else if(AgentUserOs.indexOf("Windows95") != -1) OSName="Windows 95";
else if(AgentUserOs.indexOf("Windows98") != -1) {
if (AgentUserOs.indexOf("Win9x4.90") != -1) OSName="Windows Millennium Edition (Windows Me)"
else OSName="Windows 98";
}
else if(AgentUserOs.indexOf("WindowsNT4.0") != -1) OSName="Microsoft Windows NT 4.0";
else if(AgentUserOs.indexOf("WindowsNT5.0") != -1) OSName="Windows 2000";
else if(AgentUserOs.indexOf("WindowsNT5.01") != -1) OSName="Windows 2000, Service Pack 1 (SP1)";
else if(AgentUserOs.indexOf("WindowsNT5.1") != -1) OSName="Windows XP";
else if(AgentUserOs.indexOf("WindowsNT5.2") != -1) OSName="Windows 2003";
else if(AgentUserOs.indexOf("WindowsNT6.0") != -1) OSName="Windows Vista/Server 2008";
else if(AgentUserOs.indexOf("WindowsNT6.1") != -1) OSName="Windows 7";
else if(AgentUserOs.indexOf("WindowsNT6.2") != -1) OSName="Windows 8";
else if(AgentUserOs.indexOf("WindowsNT6.3") != -1) OSName="Windows 8.1";
else if(AgentUserOs.indexOf("WindowsNT6.4") != -1) OSName="Windows 10";
else if(AgentUserOs.indexOf("WindowsPhone8.0") != -1) OSName="Windows Phone 8.0";
else if(AgentUserOs.indexOf("WindowsPhoneOS7.5") != -1) OSName="Windows Phone OS 7.5";
else if(AgentUserOs.indexOf("Xbox") != -1) OSName="Xbox 360";
else if(AgentUserOs.indexOf("XboxOne") != -1) OSName="Xbox One";
else if(AgentUserOs.indexOf("Win16") != -1) OSName="Windows 3.x";
else if(AgentUserOs.indexOf("ARM") != -1) OSName="Windows RT";
else OSName="Windows (Unknown)";
if(AgentUserOs.indexOf("WOW64") != -1) OsVers=", WOW64";
else if(AgentUserOs.indexOf("Win64;x64;") != -1) OsVers=", Win64 on x64";
else if(AgentUserOs.indexOf("Win16") != -1) OsVers=" 16-bit";
else OsVers=" on x86";
} else if ($.os.Linux) {
if(AgentUserOs.indexOf("Android") != -1) { OSName = getAndroidDevName(); }
else if(AgentUserOs.indexOf("BlackBerry9000") != -1) OSName="BlackBerry9000";
else if(AgentUserOs.indexOf("BlackBerry9300") != -1) OSName="BlackBerry9300";
else if(AgentUserOs.indexOf("BlackBerry9700") != -1) OSName="BlackBerry9700";
else if(AgentUserOs.indexOf("BlackBerry9780") != -1) OSName="BlackBerry9780";
else if(AgentUserOs.indexOf("BlackBerry9900") != -1) OSName="BlackBerry9900";
else if(AgentUserOs.indexOf("BlackBerry;Opera Mini") != -1) OSName="Opera/9.80";
else if(AgentUserOs.indexOf("Symbian/3") != -1) OSName="Symbian OS3";
else if(AgentUserOs.indexOf("SymbianOS/6") != -1) OSName="Symbian OS6";
else if(AgentUserOs.indexOf("SymbianOS/9") != -1) OSName="Symbian OS9";
else if(AgentUserOs.indexOf("Ubuntu") != -1) OSName="Ubuntu";
else if(AgentUserOs.indexOf("PDA") != -1) OSName="PDA";
else if(AgentUserOs.indexOf("NintendoWii") != -1) OSName="Nintendo Wii";
else if(AgentUserOs.indexOf("PSP") != -1) OSName="PlayStation Portable";
else if(AgentUserOs.indexOf("PS2;") != -1) OSName="PlayStation 2";
else if(AgentUserOs.indexOf("PLAYSTATION3") != -1) OSName="PlayStation 3";
else OSName="Linux (Unknown)";
if(AgentUserOs.indexOf("x86_64") != -1) OsVers=", x86_64";
else if(AgentUserOs.indexOf("i686") != -1) OsVers=", i686";
else if(AgentUserOs.indexOf("i686 on x86_64") != -1) OsVers=", i686 running on x86_64";
else if(AgentUserOs.indexOf("armv7l") != -1) OsVers=" Nokia N900 Linux mobile, on the Fennec browser";
else if(AgentUserOs.indexOf("IA-32") != -1) OsVers=" 32-bit";
else OsVers="";
} else if ($.os.Unix) {
OSName="UNIX";
} else if ($.os.Mac) {
if(AgentUserOs.indexOf("iPhoneOS3") != -1) OSName="iPhone OS 3";
else if(AgentUserOs.indexOf("iPhoneOS4") != -1) OSName="iPhone OS 4";
else if(AgentUserOs.indexOf("iPhoneOS5") != -1) OSName="iPhone OS 5";
else if(AgentUserOs.indexOf("iPhoneOS6") != -1) OSName="iPhone OS 6";
else if(AgentUserOs.indexOf("iPhoneOS7") != -1) OSName="iPhone OS 7";
else if(AgentUserOs.indexOf("iPhoneOS8") != -1) OSName="iPhone OS 8";
else if(AgentUserOs.indexOf("iPad") != -1) OSName="iPad";
else if((AgentUserOs.indexOf("MacOSX10_1")||AgentUserOs.indexOf("MacOSX10.1")) != -1) OSName="Mac OS X Puma";
else if((AgentUserOs.indexOf("MacOSX10_2")||AgentUserOs.indexOf("MacOSX10.2")) != -1) OSName="Mac OS X Jaguar";
else if((AgentUserOs.indexOf("MacOSX10_3")||AgentUserOs.indexOf("MacOSX10.3")) != -1) OSName="Mac OS X Panther";
else if((AgentUserOs.indexOf("MacOSX10_4")||AgentUserOs.indexOf("MacOSX10.4")) != -1) OSName="Mac OS X Tiger";
else if((AgentUserOs.indexOf("MacOSX10_5")||AgentUserOs.indexOf("MacOSX10.5")) != -1) OSName="Mac OS X Leopard";
else if((AgentUserOs.indexOf("MacOSX10_6")||AgentUserOs.indexOf("MacOSX10.6")) != -1) OSName="Mac OS X Snow Leopard";
else if((AgentUserOs.indexOf("MacOSX10_7")||AgentUserOs.indexOf("MacOSX10.7")) != -1) OSName="Mac OS X Lion";
else if((AgentUserOs.indexOf("MacOSX10_8")||AgentUserOs.indexOf("MacOSX10.8")) != -1) OSName="Mac OS X Mountain Lion";
else if((AgentUserOs.indexOf("MacOSX10_9")||AgentUserOs.indexOf("MacOSX10.9")) != -1) OSName="Mac OS X Mavericks";
else if((AgentUserOs.indexOf("MacOSX10_10")||AgentUserOs.indexOf("MacOSX10.10")) != -1) OSName="Mac OS X Yosemite";
else OSName="MacOS (Unknown)";
if(AgentUserOs.indexOf("Intel") != -1) OsVers=" on Intel x86 or x86_64";
else if(AgentUserOs.indexOf("PPC") != -1) OsVers=" on PowerPC";
else OsVers="";
} else {
OSName="Unknown OS";
}
var OSDev = OSName + OsVers;
return OSDev;
}
// Android의 단말 이름을 반환
function getAndroidDevName() {
var uaAdata = navigator.userAgent;
var regex = /Android (.*);.*;\s*(.*)\sBuild/;
var match = regex.exec(uaAdata);
if(match) {
var ver = match[1];
var dev_name = match[2];
return "Android " + ver + " " + dev_name;
}
return "Android OS";
}
// OSInfoDev() 는 OS이름과 버전 출력하는 함수
// AgentUserOs 는 userAgent 출력
자바스크립트 내장객체1(배열,Date,String,Number) (0) | 2017.08.14 |
---|---|
자바스크립트 객체의 캡슐화 (0) | 2017.08.14 |
eclipse(이클립스) 자바스크립트(javascript) 자동완성 플러그인 설정하기 (0) | 2017.08.11 |
지역변수,전역변수 개념과 자바스크립트의 객체(Object) (2) | 2017.08.10 |
자바스크립트 정리1 (0) | 2017.08.09 |
1 2 3 4 5 6 7 8 9 10 | < ul > < li id = "target" >html</ li > < li >css</ li > < li >JavaScript</ li > </ ul > < script > var t = document.getElementById('target').firstChild; console.log(t.nodeValue); console.log(t.data); </ script > |
<!DOCTYPE html>
<
html
>
<
head
>
<
style
>
#target{
font-size:77px;
font-family: georgia;
border-bottom:1px solid black;
padding-bottom:10px;
}
p{
margin:5px;
}
</
style
>
</
head
>
<
body
>
<
p
id
=
"target"
>Cording everybody!</
p
>
<
p
> data : <
input
type
=
"text"
id
=
"datasource"
value
=
"JavaScript"
/></
p
>
<
p
> start :<
input
type
=
"text"
id
=
"start"
value
=
"5"
/></
p
>
<
p
> end : <
input
type
=
"text"
id
=
"end"
value
=
"5"
/></
p
>
<
p
><
input
type
=
"button"
value
=
"appendData(data)"
onclick
=
"callAppendData()"
/>
<
input
type
=
"button"
value
=
"deleteData(start,end)"
onclick
=
"callDeleteData()"
/>
<
input
type
=
"button"
value
=
"insertData(start,data)"
onclick
=
"callInsertData()"
/>
<
input
type
=
"button"
value
=
"replaceData(start,end,data)"
onclick
=
"callReplaceData()"
/>
<
input
type
=
"button"
value
=
"substringData(start,end)"
onclick
=
"callSubstringData()"
/></
p
>
<
script
>
var target = document.getElementById('target').firstChild;
var data = document.getElementById('datasource');
var start = document.getElementById('start');
var end = document.getElementById('end');
function callAppendData(){
target.appendData(data.value);
}
function callDeleteData(){
target.deleteData(start.value, end.value);
}
function callInsertData(){
target.insertData(start.value, data.value);
}
function callReplaceData(){
target.replaceData(start.value, end.value, data.value);
}
function callSubstringData(){
alert(target.substringData(start.value, end.value));
}
</
script
>
</
body
>
</
html
>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | < style > body{ padding:0; margin:0; } div{ border:50px solid #1065e6; padding:50px; margin:50px; } #target{ width:100px; height:2000px; } </ style > < div > < div id = "target" > Coding </ div > </ div > < script > var t = document.getElementById('target'); setInterval(function(){ console.log('getBoundingClientRect : ', t.getBoundingClientRect().top, 'pageYOffset:', window.pageYOffset); }, 1000) </ script > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | < style > body{ padding:0; margin:0; } div{ border:50px solid #1065e6; padding:50px; margin:50px; } #target{ width:100px; height:2000px; } </ style > < input type = "button" id = "scrollBtn" value = "scroll(0, 1000)" /> < script > document.getElementById('scrollBtn').addEventListener('click', function(){ window.scrollTo(0, 1000); }) </ script > < div > < div id = "target" > Coding </ div > </ div > |
Node 객체에 대하여(NODE 객체와 NODE객체 컨트롤하기) (0) | 2017.12.03 |
---|---|
이벤트 및 우클릭 방지 (0) | 2017.11.28 |
5판 7장 객체(Object)와 배열(Array) (0) | 2017.11.13 |
[ Node 객체에 대하여(NODE 객체와 NODE객체 컨트롤하기) ]
-> 자바스크립트의 모든 DOM ELEMENT들은 최상위로 NODE를 상속하고 있기 때문에 NODE가 가지고 있는 속성을 사용할 수 있다.
Node 객체는 Node 간의 관계 정보를 담고 있는 일련의 API를 가지고 있다. 다음은 관계와 관련된 프로퍼티들이다.
[ 1. Node의 자식 및 형제 Node에 접근하는 프러퍼티 ]
<
body
id
=
"start"
>
<
ul
>
<
li
><
a
href
=
"./532"
>html</
a
></
li
>
<
li
><
a
href
=
"./533"
>css</
a
></
li
>
<
li
><
a
href
=
"./534"
>JavaScript</
a
>
<
ul
>
<
li
><
a
href
=
"./535"
>JavaScript Core</
a
></
li
>
<
li
><
a
href
=
"./536"
>DOM</
a
></
li
>
<
li
><
a
href
=
"./537"
>BOM</
a
></
li
>
</
ul
>
</
li
>
</
ul
>
</
body
>
노드 작업을 하게 되면 현재 선택된 노드가 어떤 타입인지를 판단해야 하는 경우가 있다. 이런 경우에 사용할 수 있는 API가 nodeType, nodeName이다.
EX)
노드의 추가와 관련된 API들은 아래와 같다.
노드를 추가하기 위해서는 추가할 엘리먼트를 생성해야 하는데 이것은 document 객체의 기능이다. 아래 API는 노드를 생성하는 API이다.
노드 제거를 위해서는 아래 API를 사용한다. 이 때 메소드는 삭제 대상의 부모 노드 객체의 것을 실행해야 한다는 점에 유의하자.
<
ul
>
<
li
>HTML</
li
>
<
li
>CSS</
li
>
<
li
id
=
"target"
>JavaScript</
li
>
</
ul
>
<
input
type
=
"button"
onclick
=
"callReplaceChild();"
value
=
"replaceChild()"
/>
<
script
>
function callReplaceChild(){
var a = document.createElement('a');
a.setAttribute('href', 'http://opentutorials.org/module/904/6701');
a.appendChild(document.createTextNode('Web browser JavaScript'));
var target = document.getElementById('target');
target.replaceChild(a,target.firstChild); // 새로 만든 a태그를 target의 첫번째 자식 엘리먼트와 교체한다.(즉 텍스트 JavaScript를 대체)
}
</
script
>
innerHTML는 문자열로 자식 노드를 만들 수 있는 기능을 제공한다. 또한 자식 노드의 값을 읽어올 수도 있다.
outerHTML은 선택한 엘리먼트를 포함해서 문자열로 가지고 오거나, 자신을 포함해서 문자열로 노드를 대체할 수 있다.
좀 더 정교하게 문자열을 이용해서 노드를 변경하고 싶을 때 사용한다.
EX) innerHTML
<
ul
id
=
"target"
>
<
li
>HTML</
li
>
<
li
>CSS</
li
>
</
ul
>
<
input
type
=
"button"
onclick
=
"get();"
value
=
"get"
/>
<
input
type
=
"button"
onclick
=
"set();"
value
=
"set"
/>
<
script
>
function get(){
var target = document.getElementById('target');
alert(target.innerHTML); // target 내부의 HTML과 CSS li를 가지고 오게 된다.(문자열로)
}
function set(){
var target = document.getElementById('target');
target.innerHTML = "<
li
>JavaScript Core</
li
><
li
>BOM</
li
><
li
>DOM</
li
>";
}
</
script
>
EX) outerHTML
<
ul
id
=
"target"
>
<
li
>HTML</
li
>
<
li
>CSS</
li
>
</
ul
>
<
input
type
=
"button"
onclick
=
"get();"
value
=
"get"
/>
<
input
type
=
"button"
onclick
=
"set();"
value
=
"set"
/>
<
script
>
function get(){
var target = document.getElementById('target');
alert(target.outerHTML); // target 전체를 가지고 오게 된다.(문자열로)
}
function set(){
var target = document.getElementById('target');
target.outerHTML = "<
ol
><
li
>JavaScript Core</
li
><
li
>BOM</
li
><
li
>DOM</
li
></
ol
>";
// ul태그 전체가 통째로 ol로 대체되게 된다.
}
</
script
>
EX) insertAdjacentHTML(arg1, arg2)
<
ul
id
=
"target"
>
<
li
>CSS</
li
>
</
ul
>
<
input
type
=
"button"
onclick
=
"beforebegin();"
value
=
"beforebegin"
/>
<
input
type
=
"button"
onclick
=
"afterbegin();"
value
=
"afterbegin"
/>
<
input
type
=
"button"
onclick
=
"beforeend();"
value
=
"beforeend"
/>
<
input
type
=
"button"
onclick
=
"afterend();"
value
=
"afterend"
/>
<
script
>
function beforebegin(){
var target = document.getElementById('target');
target.insertAdjacentHTML('beforebegin','<
h1
>Client Side</
h1
>'); // 맨 첫번째 자식 앞에 삽입
}
function afterbegin(){
var target = document.getElementById('target');
target.insertAdjacentHTML('afterbegin','<
li
>HTML</
li
>'); // 첫번째 자식 뒤에 삽입
}
function beforeend(){
var target = document.getElementById('target');
target.insertAdjacentHTML('beforeend','<
li
>JavaScript</
li
>'); // 끝 자식 전에 삽입
}
function afterend(){
var target = document.getElementById('target');
target.insertAdjacentHTML('afterend','<
h1
>Server Side</
h1
>'); // 끝 자식 뒤에 삽입
}
</
script
>
Text Node 제어와 Document 및 스크린, 스크롤 위치 제어 (0) | 2017.12.05 |
---|---|
이벤트 및 우클릭 방지 (0) | 2017.11.28 |
5판 7장 객체(Object)와 배열(Array) (0) | 2017.11.13 |
자바스크립트로 사용자 OS 버전 확인하는 코드(IE버전 X 운영체제 판별) (0) | 2018.07.18 |
---|---|
자바스크립트 객체의 캡슐화 (0) | 2017.08.14 |
eclipse(이클립스) 자바스크립트(javascript) 자동완성 플러그인 설정하기 (0) | 2017.08.11 |
지역변수,전역변수 개념과 자바스크립트의 객체(Object) (2) | 2017.08.10 |
자바스크립트 정리1 (0) | 2017.08.09 |
자바스크립트로 사용자 OS 버전 확인하는 코드(IE버전 X 운영체제 판별) (0) | 2018.07.18 |
---|---|
자바스크립트 내장객체1(배열,Date,String,Number) (0) | 2017.08.14 |
eclipse(이클립스) 자바스크립트(javascript) 자동완성 플러그인 설정하기 (0) | 2017.08.11 |
지역변수,전역변수 개념과 자바스크립트의 객체(Object) (2) | 2017.08.10 |
자바스크립트 정리1 (0) | 2017.08.09 |
자바스크립트 객체의 캡슐화 (0) | 2017.08.14 |
---|---|
eclipse(이클립스) 자바스크립트(javascript) 자동완성 플러그인 설정하기 (0) | 2017.08.11 |
자바스크립트 정리1 (0) | 2017.08.09 |
자바스크립트 navigator를 이용한 IE 버전 알아내기 (0) | 2017.08.08 |
자바스크립트로 부모,자식 요소 접근하기 (0) | 2017.08.08 |
자바스크립트 navigator를 이용한 IE 버전 알아내기 (0) | 2017.08.08 |
---|---|
자바스크립트로 부모,자식 요소 접근하기 (0) | 2017.08.08 |
window 객체(location,navigator,screen etc...) : 부모창 자식창간 데이터 주고 받기 포함 (0) | 2017.08.04 |
location 객체와 navigator 객체 (0) | 2017.08.04 |
HTML에서 자바스크립트 로드하기 (0) | 2017.08.04 |
자바스크립트 navigator를 이용한 IE 버전 알아내기 (0) | 2017.08.08 |
---|---|
자바스크립트로 부모,자식 요소 접근하기 (0) | 2017.08.08 |
자바스크립트로 제어하고 싶은 대상 선택하기(찾기) (0) | 2017.08.04 |
window 객체(location,navigator,screen etc...) : 부모창 자식창간 데이터 주고 받기 포함 (0) | 2017.08.04 |
HTML에서 자바스크립트 로드하기 (0) | 2017.08.04 |
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
1. Javascript Inline 방식 :
<input onclick="alert('hello world')" type="button" name="inline"><br/>
2. <h2 id="hw">script 태그 내에 삽입하는 방식 :</h2>
<script type="text/javascript">
var hw = document.getElementById("hw");
hw.addEventListener("click",function(){
alert("hello world");
})
</script>
<br/>
3. 외부 파일로 분리하는 방식 :
<script type="text/javascript" src="./script2.js"></script>
<br/>
4. 스크립트의 위치 :
스크립트는 어느 위치에나 올 수 있지만 body 태그의 마지막 부분에 위치시키는 것이 좋다.
why??
=> 제어할려는 태그가 다 로딩된 다음에 작업이 수행되어야 하니까(로딩되지 않은 상태에서 작업시 제어 불가)
=> 위치에 상관없이 태그가 다 로딩된 후 수행토록 하려면
: javascript의 경우
=> window.onload = function(){
이 내부 코드는 태그가 다 로딩된 이후 수행하게 된다.
}
jquery의 경우
=> document.ready(function(){
})
</body>
</html>
자바스크립트 navigator를 이용한 IE 버전 알아내기 (0) | 2017.08.08 |
---|---|
자바스크립트로 부모,자식 요소 접근하기 (0) | 2017.08.08 |
자바스크립트로 제어하고 싶은 대상 선택하기(찾기) (0) | 2017.08.04 |
window 객체(location,navigator,screen etc...) : 부모창 자식창간 데이터 주고 받기 포함 (0) | 2017.08.04 |
location 객체와 navigator 객체 (0) | 2017.08.04 |
AJAX 통신시 컨트롤러에서 한글 문자열을 리턴해야하는 경우 인코딩 문제 처리 (0) | 2017.05.31 |
---|---|
AJAX를 동기화, 비동기화 지정하는 방법(동기<순서대로>로 작업하는 예제) (0) | 2017.05.31 |
sitemesh 추가하기 (0) | 2017.05.11 |
게시글 페이징 처리하기(페이지 처리 쪽 처리) (11) | 2017.05.07 |
스프링 환경설정 (2) | 2017.05.06 |