function hello(){
console.log('안녕'); // 실행
return 123;
console.log('반가워'); // 실행 안됨
}
var a = hello();
console.log(a); // 123 출력
<script>
// 부가세 계산기 만들기
function vat(a){
return a * 0.1;
}
console.log(vat(5000));
console.log(vat(7000));
</script>
1.00011001100110011001101와 같이 저장(1.1 + 0.3).toFixed(1);
toFixed()를 사용하면 문자로 변환함parseFloat('123') // 실수로 변환parseInt('123') //정수로 변환 <script>
function ms(min, sec){
var result = ((min*60) + sec)*1000;
return result;
}
console.log(ms(1, 30)); // 90000
console.log(ms(2, 10)); // 130000
</script>
<script>
function sale(price , first){
var salePrice = price * 0.9;
if(first === true){
return parseFloat((salePrice - 1.5).toFixed(2));
}
return parseFloat(salePrice.toFixed(2));
}
console.log(sale(70, false)); // 63
console.log(sale(10, true)); // 7.5
</script>
window : 전체페이지 의미, scroll 이벤트는 관습적으로 window 붙임window.addEventListener('scroll', function(){})window.scrollYwindow.scrollTo(0, 100)window.scrollBy(0, 100)bootstrap 설치했을 때 천천히 이동하게됨scrollTop(100)$(window).on('scroll', function(){
$(window).scrollTop();
})
<nav class="navbar navbar-light bg-light">
<div class="container-fluid">
<span class="navbar-brand">Navbar</span>
<span class="badge bg-dark text-light">Dark 🔄</span>
<button class="navbar-toggler" type="button">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</nav>
<script>
window.addEventListener('scroll', function(){
if(window.scrollY > 100){
document.querySelector('.navbar-brand').style.fontSize= '15px';
} else {
document.querySelector('.navbar-brand').style.fontSize= '30px';
}
});
</script>
scrollRow + seeHeight > scrollHeight - 10 해서 10px정도 오차 관리: 프로그램의 상태를 추적하는 데 사용되는 변수
<!--회원 약관-->
<div class="lorem" style="width: 200px; height: 100px; overflow-y: scroll">
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Quae voluptas voluptatum minus praesentium fugit debitis at,
laborum ipsa itaque placeat sit, excepturi eius.
Nostrum perspiciatis,
eligendi quae consectetur praesentium exercitationem.
</div>
<script>
var alertShown = false; // 플래그 태그 변수
//이벤트 핸들러 외부에 선언해 매번 이벤트 발생할 때마다 변수가 초기화 되는 문제 해결)
// div의 스크롤바를 다 내리면 alert
document.querySelector('.lorem').addEventListener('scroll', function(){
var scrollRow = document.querySelector('.lorem').scrollTop; // 일반 div 박스의 경우 scrollY 불가
var scrollHeight = document.querySelector('.lorem').scrollHeight; // div의 실제 스크롤 높이
var seeHeight = document.querySelector('.lorem').clientHeight;
//console.log(scrollRow); // div의 스크롤 내린 양
//console.log(scrollHeight); // 실제 스크롤바의 높이
//console.log(seeHeight); // 화면에 보이는 div박스의 높이
// div의 스크롤바 내린 양 + 눈에보이는 div박스 width == div의 실제 높이
if(scrollRow + seeHeight > scrollHeight - 10){ // 오차
if(!alertShown){
alert("회원 약관을 모두 읽으셨습니다.")
alertShown = true; // 플래그 태그를 true로 설정해 다시 알림 표시하지 않음
}
}
});
</script>
<body>가 끝나기 전 적는 것이 좋음document.querySelector('html').scrollTop; //현재 웹페이지 스크롤양
document.querySelector('html').clientHeight; //현재 웹페이지 보이는 높이
document.querySelector('html').scrollHeight; //현재 웹페이지 실제높이
window.scrollY // 현재 웹페이지의 실제 높이 .scollHeight와 같음
<nav class="navbar navbar-light bg-light">
<div class="container-fluid">
<span class="navbar-brand">Navbar</span>
<span class="badge bg-dark text-light">Dark 🔄</span>
<button class="navbar-toggler" type="button">
<span class="navbar-toggler-icon"></span>
</button>
<div class="scroll-box">
<div class="scroll-state"></div>
</div>
</div>
</nav>
<script>
window.addEventListener('scroll', function(){
var scrollTop = document.querySelector('html').scrollTop;
var scrollHeight = document.querySelector('html').scrollHeight;
var clientHeight = document.querySelector('html').clientHeight;
var progress = ((scrollTop) / (scrollHeight - clientHeight)) * 100;
document.querySelector('.scroll-state').style.width = progress + '%';
});
</script>

<div class="container mt-5">
<ul class="list">
<li class="tab-button orange">Products</li>
<li class="tab-button">Information</li>
<li class="tab-button">Shipping</li>
</ul>
<div class="tab-content show">
<p>상품설명입니다. Product</p>
</div>
<div class="tab-content">
<p>스펙설명입니다. Information</p>
</div>
<div class="tab-content">
<p>배송정보입니다. Shipping</p>
</div>
</div>
<!--자바스크립트 모듈화-->
<script src="index9.js"></script>
ul.list {
list-style-type: none;
margin: 0;
padding: 0;
border-bottom: 1px solid #ccc;
}
ul.list::after {
content: '';
display: block;
clear: both;
}
.tab-button {
display: block;
padding: 10px 20px 10px 20px;
float: left;
margin-right: -1px;
margin-bottom: -1px;
color: grey;
text-decoration: none;
cursor: pointer;
}
.orange {
border-top: 2px solid orange;
border-right: 1px solid #ccc;
border-bottom: 1px solid white;
border-left: 1px solid #ccc;
color: black;
margin-top: -2px;
}
.tab-content {
display: none;
padding: 10px;
}
.show {
display: block;
}
$('.tab-button) 하면 해당 요소 모두를 가져옴$( ).eq(x)$('.tab-button').eq(0).on('click', function(){
$('.tab-button').removeClass('orange');
$('.tab-button').eq(0).addClass('orange');
$('.tab-content').removeClass('show');
$('.tab-content').eq(0).addClass('show');
});

$('.tab-button').length'.tab-button' 요소의 개수 가져옴var button = $('.tab-button');
var content = $('.tab-content');
for(let i=0; i<$('.tab-button').length; i++){
button.eq(i).on('click', function(){
button.removeClass('orange');
button.eq(i).addClass('orange');
content.removeClass('show');
content.eq(i).addClass('show');
});
}