Snapshot
- 텍스트 클릭하면 해당 이미지 보여주기
<SCRIPT type=text/javascript>
//자기자신의 객체를 바로 갖고 와서 href의 값을 e에다 넣어준다.
//직접 접근은 불가능해서 getElementById로 img를 받고, img주소의 e값을 넣어준다.
function showPic(i) {
e = i.getAttribute("href");
document.getElementById("placeholder").src = e;
//document.all["placeholder"].src = e;
t = i.getAttribute("title");
document.getElementById("description").innerText = t;
}
</SCRIPT>
<H1>snapshots</H1>
<UL>
<LI><A title="A fireworks display" onclick="showPic(this); return false;">Fireworks</A></LI>
<LI><A title="A cup of black coffe" onclick="showPic(this); return false;">Coffee</A></LI>
<LI><A title="A red rose" onclick="showPic(this); return false;">Rose</A></LI>
<LI><A title="The famous Clock" onclick="showPic(this); return false;">BigBen</A></LI></UL><br/>
<IMG id=placeholder alt="my image gellery"
>
<P id=description>Choose an image</P>
showPic.js
function showPic(whichPic) {
var source = whichPic.getAttribute("href");
var placeholder = document.getElementById("placeholder");
placeholder.setAttribute("src", source);
var text = whichPic.getAttribute("title");
var description = document.getElementById("description");
description.firstChild.nodeValue = text;
}
위의 코드에서 html태그 빼고 실행해보기
<html>
<head>
<script type="text/javascript" src="showPic2.js"></script>
</head>
<body>
<h1>snapshots</h1>
<ul id="imageGallery">
<li><a href="images/fireworks.jpg" title="A fireworks display">
Fireworks</a></li>
<li><a href="images/coffee.jpg" title="A cup of black coffe">
Coffee</a></li>
<li><a href="images/rose.jpg" title="A red rose">
Rose</a></li>
<li><a href="images/bigben.jpg" title="The famous Clock">
BigBen</a></li>
</ul>
<img id="placeholder" src="images/placeholder.gif" alt="my image gellery"/>
<p id="description">Choose an image</p>
</body>
</html>
showPic2.js
function showPic(whichpic) {
var text = "";
var source = whichpic.getAttribute("href");
var placeholder = document.getElementById("placeholder");
placeholder.setAttribute("src", source);
if(whichpic.getAttribute("title")) {
text = whichpic.getAttribute("title");
} else {
text="";
}
var description = document.getElementById("description");
//p태그 첫번째 자식의 노드타입이 3(텍스트 노드)이면 텍스트 값을 넘겨주는 것이다.
if (description.firstChild.nodeTyle == 3) {
description.firstChild.nodeValue = text;
}
return false;
}
//for문을 돌려 이벤트를 전부 다 처리해 주었다
//gallery는 ul을 담고있다
//ul을 담고있는 태그 내에서만 a태그를 받는다
function prepareGallery() {
var gallery = document.getElementById("imageGallery");
var link = gallery.getElementsByTagName("a");
for(var i=0; i<link.length; i++) {
link[i].onclick = function () {
return showPic(this);
}
}
}
function addLoadEvent(func) {
//window.onload = prepareGallery;
var oldonload = window.onload;
//window.onload에 prepareGallery가 들어가지 않았을 때, 실행
if(typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
//prepareGallery
func();
}
}
}
//이 함수가 실행될 때 prepareaGallery함수가 실행되라는 뜻
addLoadEvent(prepareGallery);
img태그도 자바스크립트로 표현한 코드
<html>
<head>
<script type="text/javascript" src="showPic3.js"></script>
</head>
<body>
<h1>snapshots</h1>
<ul id="imageGallery">
<li><a href="images/fireworks.jpg" title="A fireworks display">
Fireworks</a></li>
<li><a href="images/coffee.jpg" title="A cup of black coffe">
Coffee</a></li>
<li><a href="images/rose.jpg" title="A red rose">
Rose</a></li>
<li><a href="images/bigben.jpg" title="The famous Clock">
BigBen</a></li>
</ul>
</body>
</html>
showPic3.js
function showPic(whichpic) {
var text = "";
var source = whichpic.getAttribute("href");
var placeholder = document.getElementById("placeholder");
placeholder.setAttribute("src", source);
if(whichpic.getAttribute("title")) {
text = whichpic.getAttribute("title");
} else {
text="";
}
var description = document.getElementById("description");
if (description.firstChild.nodeType == 3) {
description.firstChild.nodeValue = text;
}
return false;
}
//img태그와 p태그를 자바스크립트로 구현
function preparePlaceholder() {
var body_element = document.getElementsByTagName("body")[0];
var placeholder = document.createElement("img");
placeholder.setAttribute("id", "placeholder");
placeholder.setAttribute("src", "images/placeholder.gif");
placeholder.setAttribute("alt", "my image gallery");
var description = document.createElement("p");
description.setAttribute("id", "description");
var desctext = document.createTextNode("Choose an image");
description.appendChild(desctext);
var gallery = document.getElementById("imagegallery");
//body태그에 ul에 전에 img와 p태그를 넣어준다
body_element.insertBefore(placeholder, gallery);
//p태그가 ul 뒤에 붙는다
insertAfter(description, gallery);
}
function prepareGallery() {
var gallery = document.getElementById("imageGallery");
var link = gallery.getElementsByTagName("a");
for(var i=0; i<link.length; i++) {
link[i].onclick = function () {
return showPic(this);
}
}
}
function addLoadEvent(func) {
//window.onload = prepareGallery;
var oldonload = window.onload;
//window.onload에 prepareGallery가 들어가지 않았을 때, 실행
if(typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
//prepareGallery
func();
}
}
}
function insertAfter(newNode, targetNode){
var parent = targetNode.parentNode;
if (parent.lastChild == targetNode) {
parent.appendChild(newNode);
} else {
parent.insertBefore(newNode, targetNode.nextSibling);
}
}
//이 함수가 실행될 때 prepareaGallery함수가 실행되라는 뜻
addLoadEvent(prepareGallery);
addLoadEvent(preparePlaceholder);
'Study > JavaScript' 카테고리의 다른 글
[javaScript] 쿠키 (0) | 2019.05.16 |
---|---|
[javaScript] Dom Script (0) | 2019.05.16 |
[javaScript] Document 실습 (0) | 2019.05.16 |
[javaScript] Document (0) | 2019.05.16 |
[javaScript] Form (0) | 2019.05.16 |