펑소에 html 코딩을 할 때 button 등에 데이터를 저장하기 위해

<button id="data1"> 버튼 1 </button>
<button id="data2"> 버튼 2 </button>
<button id="data3"> 버튼 3 </button>
<button id="data4"> 버튼 4 </button>

이렇게 야매로 많이 했었다. 근데 관리해야할 데이터가 좀 많아져서 찾아보니 다른 방법이 있더라.

 

<button id="btn1" data-test="value"> 버튼 </button>

<script type="text/javascript">
	document.getElementById("btn1").addEventListener("click", function(){
        console.log(this.dataset.test);
    })
</script>

<!-- console
value
-->

 

data- 뒤에 원하는 변수명을 입력하고 값을 지정해준다.

그리고 DOM을 얻어와 dataset.변수명으로 구해올 수 있다.

 

<button id="btn1" data-test="value" data-test2="value2"> 버튼 </button>

<script type="text/javascript">
	document.getElementById("btn1").addEventListener("click", function(){
        console.log(this.dataset);
    })
</script>

<!-- console
 { test : "value" , test2 : "value2" }
-->

console

데이터를 여러개 넣어서 구해오고 싶으면 더 추가하면 된다.

'Frontend > HTML' 카테고리의 다른 글

[HTML] Element 클릭 무시하기  (34) 2020.05.12

input type='file' 로 비디오 파일을 선택해서 video 태그로 재생해보자

 

<!-- HTML -->
<input id="file" type="file" accept="video/mp4,video/mkv, video/x-m4v,video/*">
<video id="video"></video>

html

input 에 type 은 file로, accept 로 비디오 확장자로 설정했다.

 

 

// Javascript

const inputFile = document.getElementById("file");
const video = document.getElementById("video");

inputFile.addEventListener("change", function(){
    const file = inputFile.files[0];
    const videourl = URL.createObjectURL(file);
    video.setAttribute("src", videourl);
    video.play();
})

 

일단 간단하게 이렇게 만들수 있다.

 

file loaded

 

샘플 페이지

codepen.io/mika0203/pen/VwPKLLM

element.insertAdjacentHTML(position, text);

 

element 에 html 텍스트를 파싱하여 node를 추가한다.

jQuery 의 append() 기능과 비슷하다고 생각하면 된다.

<div id='node'> </div>

<script type="text/javascript">
	var node = document.getElementById("node");
    var span = "<span> Hello World! </span>"

	node.insertAdjacentHTML("beforeend", span);
</script>

결과

 

position 엔 4가지가 있다.

jquery 의 append(), prepend(), before(), after() 과 동일하다. 

node.insertAdjacentHTML("beforebegin", "beforebegin");
node.insertAdjacentHTML("afterbegin", "afterbegin");
node.insertAdjacentHTML("beforeend", "beforeend");
node.insertAdjacentHTML("afterend", "afterend");

 

 

결과

 

현재 jQuery코드를 javascript 로 옮기는 중 의문점..

 

document.addEventListener("DOMContentLoaded", function(event) { 
  //do work
});

 

https://stackoverflow.com/questions/799981/document-ready-equivalent-without-jquery

자바스크립트로 난수를 생성해보자.

 

 

Math.random() 을 쓰면 된다.

for (var i = 0; i < 10; i++) {
    console.log(Math.random());
}
    
0.25721506183081844
0.5823201981959083
0.1276669448208927
0.5631301578055086
0.17111868936942853
0.5330896617959899
0.8969996301883194
0.5037203939477015
0.6167480911555299
0.009640469869059975

 

Math.random() 은 0 이상,  1 미만의 값을 Return 한다.

 

만약 정수로 0이상 9이하 의 값을 구하고 싶다면?

 

for (var i = 0; i < 10; i++) {
    console.log(Math.floor(Math.random() * 10));
}


5
6
8
6
0
7
4
8
6
9

 

Math.random() 으로 나온 값에 10을 곱해주고 Math.floor() 로 소수점을 없애주면 된다.

 

시작이 0이 아닌 1로 하고 싶다면

 

for (var i = 0; i < 10; i++) {
    console.log(Math.floor(Math.random() * 10) + 1);
}


2
3
1
7
8
10
3
5
2
6

1이상 10이하의 수가 구해진다.

+ Recent posts