WEB/JavaScript
[ JS] days03
애플쩀
2022. 6. 2. 07:30
함수, 전역변수 지역변수
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
</style>
</head>
<body>
<pre>
함수개념: 자바 함수 개념:
js 함수 선언 형식
function 함수명(매개변수){
(return 리턴값)
}
접 기 리 함([]매:){
return 리턴값;
}
함수 호출하는 3가지 방법
ㄱ.이벤트가 발생할때 함수 호출=="이벤트 핸들러"
button onclick="test()"
function test(){}
ㄴ.js코드에서 함수호출
ㄷ.자동(자체 호출 )
</pre>
<button onclick="btn_click()">버튼</button>
<script>
function btn_click(){
//지역변수
let x=10,y=0;
let result=sum(x,y);
alert(result);
}
//a,b 두 숫자의 합을 반환하는 메소드
function sum(a,b){
return a+b;
}
</script>
<script>
var fnDraw=function drawLine(){
console.log("-----");
}
fnDraw();
// alert(typeof fnDraw); -->function
</script>
</body>
</html>
new Date()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style></style>
</head>
<body>
<script>
var msg;
alert(undefined==null);
if(msg==null){
//true
}
if(msg==undefined){
//타입 undefined!=object false
}
</script>
<button onclick="this.innerText=new Date();">현재시간은 ?</button>
<button onclick="disp()">현재시간은?</button>
<p id="demo"></p>
<script>
function disp(){
document.getElementById("demo").innerText=new Date();
}
</script>
<script>
var x=30;
alert(typeof x);
var x2=new Number();
</script>
<script>
// 객체
const person={
name:"admin",
age:20,
dispinfo:function(){
return this.name+","+this.age;
}
}
console.log(person.name);
console.log(person["name"]);
console.log(person.dispinfo());
</script>
</body>
</html>
String
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<pre>
js에서 문자열은 홑따옴표 쌍따옴표를 사용한다
js문자열은 0개 이상의 문자집합이다.
타입은 string데이터 유형
문자열의 길이를 가져오는 방법 ,함수 : length
두문자열 비교 equals
</pre>
<script>
var msg='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
console.log(msg);
console.log(msg.length);
let name1="hong";//String
let name2=new String("hong"); //자료형이 object
console.log(name1==name2);
console.log(name1===name2); //문자열+ 타입 까지 비교 string , object 이어서 false
var msg=" hello world ";
console.log( "["+msg.trim()+"]" );
//7
var str1="hello";
var str2="world";
//var str3=str1+str2;
var str3=str1.concat(' ',str2,' ','admin');
//alert(str3);
msg="hello word";
msg=msg.toUpperCase();
console.log(msg);
msg=msg.toLowerCase();
console.log(msg);
</script>
</body>
</html>
regex
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var msg="hong gil dong";
// hong=>홍
/* pattern : string 또는 regexp
replacement:string */
//msg=msg.replace(pattern, replacement)
console.log(msg);
//msg=msg.replaceAll(pattern, replacement);
const regex = /HONG/i;
msg=msg.replace(regex, "홍");
console.log(msg);
</script>
</body>
</html>
slice 음수값사용ㅇ
substring 음수값사용x
substr
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let rrn="892323-1700001";
/* rrn.substr(from.length);
rrn.substring(from ,to); 음수값사용 x
rrn.slice(from ,to); 음수값사용o
*/
// 1.substr()
/* let rrn6=rrn.substr(0,6);
console.log(rrn6); */
let rrn6=rrn.substring(0,7);
console.log(rrn6);
let rrn7=rrn.slice(7);
console.log(rrn7);
var year=rrn.substr(0,2);
console.log(year);
var month=rrn.substring(2,4);
console.log(month);
var day=rrn.slice(4,6);
console.log(day);
var sex=rrn.slice(7,8);
console.log(sex);
var con=rrn.slice(-1);
console.log(con);
</script>
</body>
</html>
배열
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<title>Document</title>
</head>
<body>
팀원입력:
<input type="text" value="이창익, 유환재, 김지민, 백경환, 박예린">
<script>
$(":text").keydown(function(event){
if(event.which==13){
let team=$(this).val();
let pattern=",";
let teams= team.split(pattern);
//alert(teams.length);
console.log(typeof teams);
$(teams).each(function(i,element){
console.log(element);
$("<li></li>").text(element).appendTo($("#demo"));
})
/* for (let i = 0; i < teams.length; i++) {
console.log(teams[i]);
} */
}
});
</script>
</body>
</html>
정규식
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
정규식 regex는 텍스트 작업 사용
정규식의 선언형식
i= 대소문자 구분 x
m= multiple
g=
<script>
/* let text="visit Microsoft!";
var pattern="Microsoft";
var index=text.search(pattern);
console.log(index);
//소문자 micro찾기
pattern="microsoft";
index=text.toLowerCase().search(pattern);
console.log(index);
//대소문자 상관없이 찾기
//pattern=/패턴/수정자;
pattern=/MICROSOFT/i;
index=text.search(pattern);
console.log(index)
text=text.replace(pattern,'마소');
console.log(text);
var msg="hong gil dong hong";
pattern = /HONG/ig;
var replacement="홍";
msg=msg.replace(pattern, replacement);
console.log(msg);
</script> */
<script>
// m 설명 -라인단위로 시작
let text="\nls th\nis it?";
let pattern=/^is/m; //is로 시작하는 문자열이 없다.
// let result=text.match(pattern);
//일치하는지 안하는지 true false로 반환하는 함수
let result=pattern.test(text);
</script>
<pre>
i Ignore Case 대소문자를 구별하지 않고 검색한다.
g Global 문자열 내의 모든 패턴을 검색한다.
m Multi Line 문자열의 행이 바뀌더라도 검색을 계속한다.
</pre>
</body>
</html>
i Ignore Case 대소문자를 구별하지 않고 검색한다.
g Global 문자열 내의 모든 패턴을 검색한다.
m Multi Line 문자열의 행이 바뀌더라도 검색을 계속한다.
pattern을 입력할떄 쌍따옴표 쓰지 않는다.
숫자 입력 안하면 이벤트 취소
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input type="text" autofocus="autofocus">
+
<input type="text" >
=
<input type="text" disabled="disabled">
<script>
// 제이쿼리에서는 :text
document.querySelector("input[type=text]:first-of-type").onkeyup=function(){
if(event.keyCode==13){
document.querySelector("input[type=text]:nth-of-type(2)").focus();
}
}
// 숫자입력안하면 이벤트취소
document.querySelector("input[type=text]:first-of-type").onkeydown=function(){
this.value = this.value.replace( /[\ㄱ-ㅎ|ㅏ-ㅣ]/g, '');
if(!(event.keyCode>=48 && event.keyCode<=57|| event.keyCode==13||event.keyCode==8)){
alert("입력잘못");
event.returnValue=false;
}
}
document.querySelector("input[type=text]:nth-of-type(2)").onkeyup=function(){
if(event.keyCode==13){
document.querySelector("input[type=text]:nth-of-type(3)").value=
parseInt(document.querySelector("input[type=text]:nth-of-type(1)").value)+
parseInt(document.querySelector("input[type=text]:nth-of-type(2)").value);
document.querySelector("input[type=text]:nth-of-type(1)").focus();
document.querySelector("input[type=text]:nth-of-type(1)").select();
//document.querySelector("input[type=text]:nth-of-type(1)").value="";
}
}
</script>
</body>
</html>
모두 체크 , 체크해제
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<title>Document</title>
<style>
table, th, td {
border: 1px solid gray;
}
table{
width:50%;
margin:0 auto;
}
</style>
</head>
<body>
<h3>모두 체크와 체크풀기 예제 </h3>
<table>
<thead>
<tr>
<td><input type="checkbox" class="all">모두 선택</td>
<td>Name</td>
<td>Loc</td>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" id="ck1"></td>
<td>Animi.</td>
<td>Hic.</td>
</tr>
<tr>
<td><input type="checkbox" id="ck2"></td>
<td>Esse.</td>
<td>Fuga.</td>
</tr>
<tr>
<td><input type="checkbox" id="ck3"></td>
<td>Fuga.</td>
<td>Ducimus?</td>
</tr>
<tr>
<td><input type="checkbox" id="ck4"></td>
<td>Beatae.</td>
<td>Optio.</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="3" align="center">
<button>확인</button>
</td>
</tr>
</tfoot>
</table>
<p id="demo"> 체크된 체크박스의 id속성값을 출력 </p>
<script>
//모두체크
$(":checkbox.all").click(function(){
$(":checkbox:not(.all)").prop("checked",true);
});
//체크풀기
$(":checkbox:not(.all)").click(function(){
if( $(":checkbox:not(.all):checked").length==4){
$(":checkbox").eq(0).prop("checked",true);
}else{
$(":checkbox").eq(0).prop("checked",false);
}
});
// 삼항연산자
$(":checkbox:not(.all)").click(function(){
let len= $(":checkbox:not(.all):checked").length;
$(":checkbox.all").prop("checked", len==4? true:false);
});
//id 출력하기
$("tfoot button").click(function(){
// alert("xxx");
$(":checkbox:not(.all):checked").each(function(i,element){
console.log(element.id);
// p태그에 id출력
$("p#demo").html(function(index,htmlString){
return htmlString+"<li>"+element.id+"</li>";
});a
});
});
//name 출력하기
$("tfoot button").click(function(){
// alert("xxx");
$(":checkbox:not(.all):checked").each(function(i,element){
// var name= element.parentElement.nextElementSibling.innerHTML;
var name= element.parentElement.nextElementSibling.childNodes[0].innerText;
console.log(name);
});
});
/* li태그를 만들고 그 안에 id 값을 주겟다 .
"<li>"+element.id+"</li>";== $("<li></li>").text(element.id);
*/
</script>
</body>
</html>
select
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<title>Document</title>
<style>
select{
height: 200px;
width: 100px;
}
button{
width:40px;
}
</style>
</head>
<body>
<table>
<tr>
<td>
<select multiple="multiple" id="sleft">
<option>이창익</option>
<option>김지민</option>
<option>김희진</option>
<option>유환재</option>
<option>박예린</option>
</select>
</td>
<td>
<button>▶</button><br>
<button>▶▶</button><br>
<button>◀</button><br>
<button>◀◀</button><br>
</td>
<td>
<select multiple="multiple" id="sright"></select>
</td>
</tr>
</table>
<script>
//jq
$("button").first().click(function(){
//선택한것만 옮기기
$("#sleft option:selected").each(function(i,element){
//남기지않고 옮기기
//$("#sright").append(element);
//남기고(복제하고) 옮기기
$("#sright").append($(element).clone());
//$("#sright").append($("<option></option>").text(element.innerText));
});
});
$("button").eq(1).click(function(){
$("#sleft option").each(function(i,element){
$("#sright").append(element);
});
});
</script>
</body>
</html>
동적추가
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
p{
border:1px solid gray;
text-align: center;
}
p:hover{
cursor: pointer;
background-color: gray;
color: white;
}
</style>
</head>
<body>
<script>
for (let i = 0; i <10; i++) {
//$("<p>1</p>").appendTo($("body"));
//$("body").append( $("<p>1</p>"));
$("<p></p>").text("test-"+i).click(function(){
$(this).hide()
}).appendTo($("body")) ;
}
</script>
<!--
<script>
for (let i = 0; i < 10; i++) {
let pelemt=document.createElement("p");
pelemt.innerText="test-"+(i+1);
pelemt.onclick=function(){
//this.style.display="none";
event.srcElement.style.display="none";
};
document.body.appendChild(pelemt);
}
</script> -->
</body>
</html>
제이쿼리
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<input type="text" autofocus="autofocus" >
<select id="operator">
<option value="+" selected="selected">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="%">%</option>
<option value="/">/</option>
<option value="**">**</option>
</select>
<input type="text" >=
<input type="text" >
<script>
// $(":text:first-of-type") == $(":text").eq(0) == $(":text").first()
$(":text").eq(0).keydown(function(event){
//js에서 event.keyCode
if(event.which==13){
// $(":text").eq(1).focus();
$("select").focus();
}
});
/* change는 똑같은 이벤트가 아닌, 서로 다른 이벤트를 선택해야 일어난다
즉 변화가 있어야 한다는 뜻 */
$("select").change(function(){
$(":text").eq(1).focus();
}).
keydown(function(event){
if(event.keyCode==13){
$(":text").eq(1).focus();
}
});
$(":text").change(function(){
$(":text").eq(1).focus();
});
$(":text").eq(1).keydown(function(event){
if(event.which==13){
var n1=parseInt($(":text").first().val());
var n2=parseInt($(":text").eq(1).val());
//var op=$("select option:selected").val();
//alert(op);
var op=$("select").val();
var result;
if(op=='+'){
result=n1+n2;
}else if(op=='-'){
result=n1-n2;
}else if(op=='*'){
result=n1*n2;
}
else if(op=='/'){
result=n1/n2;
}
else if(op=='%'){
result=n1%n2;
}else if(op=='**'){
result=n1**n2;
}
$(":text").last().val(result);
}
});
/*
$("document").ready(function(){
$("#operator").change(function(event) {
alert("D");
var t1 = $(":text:first-of-type").val();
var t2 = $(":text:nth-of-type(2)").val();
var oper = $(this).val();
alert($(this).val());
var result ;
switch(oper){
case '+':
result=parseInt(t1)+parseInt(t2);break;
case '-':
result=parseInt(t1)-parseInt(t2);break;
case '*':
result=parseInt(t1)*parseInt(t2);break;
case '%':
result=parseInt(t1)%parseInt(t2);break;
case '/':
result=parseInt(t1)/parseInt(t2);break;
}
$(":text:nth-of-type(3)").text(result) ;
});
}); */
</script>
</body>
</html>