반응형
*값 얻기
-
name속성
-
<form>존재-이름이 유일할 때
-
document.폼이름.Control명.value
-
id속성
-
<form> X
-
document.getElementById("id")
-
=>Element==Tag==node(xml)
-
<<<id는 딱 한개만 만들도록! 주의>>>
-
=>name 속성과 id속성은 값 하나 얻기!로
-
<input type="text,password,file,hidden" 의 경우, checkbox 딱1개만 사용한 경우, <select>,<textarea>
-
<<<웹은 이름이 같으면 배열! 주의>>>
*값이 여러개 나오는 경우 : 배열로 처리
-
checkbox, radio, select
-
=>checked된걸 확인, selected된걸 확인
-
ex)
-
<input type="checkbox" value="전송할 값" name="이름">0
-
<input type="checkbox" value="전송할 값" name="하위 이름은 무조건 같다">1.....
-
문법)
-
document.폼이름.컨트롤명[인덱스].value(값을 얻는다)
-
.checked(확인상태를 얻는다=>boolean으로 체크되면 true)
*선택된 모든 값 얻기
-
var obj= document.폼이름; //을 넣어주면 짧게 사용가능!
-
for(var i=0; i<document.폼이름.control명,length; i++){ =>obj.control명.length
-
if(document.폼이름.control명[i].checked){ =>checked는 true /false로 나오기 때문에 ==하지 않는다.
-
document.폼이름.control명[i].value;
-
}
-
}
-
=>라디오버튼도 같은 방법이기는 하나 보통 2개로 많이 사용해 굳이 for문을 사용해 늘릴 필요가 없다!
*선택된 값 하나를 얻는다
-
<select name="oo">
-
<option value="값">보여질 값</option> =>배열
-
....
-
</select>
-
=>간단)
-
document.폼이름.control명.value; =>배열을 쓰지 않고도 선택된 값이 나온다.
-
배열) : select의 name 속성은 하나이나 옵션이 여러개이므로 배열로 처리할 수 있다. 그러나 워낙 위의방법이 간단해 잘..안씀
-
<<selectedIndex를 사용하여 얻음.>>
-
var obj=document.폼이름;
-
for(var i=0; i<obj.control명.length(=>옵션갯수); i++){
-
if(obj.control명[i].seleted) { //선택된 옵션에서 true발생.
-
obj.control명[i].value;
-
}
-
}
-
-
obj.control명[obj.control명.seletedIndex].value로도 처리가능!선택한 인덱스번째방을 얻음!
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="http://localhost:8080/html_prj/common/main_v190130.css"/>
<style type="text/css">
</style>
<script type="text/javascript">
//배열(name속성이 같다면 배열!!)로 된 값 얻기
window.onload=function(){
document.getElementById("radio").addEventListener("click",processRadio);//괄호쓰면 함수가 불려져!주의
document.getElementById("check").addEventListener("click",processCheckbox);
document.getElementById("select").addEventListener("click",processSelect);//버튼클릭으로 값얻는거라 change가 아님
}//function
function processRadio(){
//alert("aa");//로 먼저 제대로 실행되는지 확인해주면 추후 편리~
var obj=document.frm;
//alert(obj.gender[0].value+"/"+obj.gender[1].value);
//alert(obj.gender[0].checked+"/"+obj.gender[1].checked);
if(!(obj.gender[0].checked || obj.gender[1].checked)){
alert("성별을 선택해 주세요~!");
return;
}//end if
var checkedGender="";
for(var i=0; i<obj.gender.length; i++){
if(obj.gender[i].checked){
checkedGender=obj.gender[i].value;
}//end if
}//end for
document.getElementById("output").innerHTML="선택성별: "+checkedGender;
}//processRadio
function processCheckbox(){
/* alert("aa"); */
//선택된 체크박스 값 얻기
var obj=document.frm;
var output="<ul>";
var flag=false;
for(var i=0; i<obj.games.length; i++){
if(obj.games[i].checked){//체크박스가 선택되었다면
flag=true;
output+="<li>"+obj.games[i].value+"</li>";//선택된 체크박스의 값을 얻는다.
}//end if
}//end for
if(!flag){
output+="<li>선택하신 게임이 없습니다.</li>";
}//end if
output+="</ul>";
document.getElementById("output").innerHTML=output;
}//processCheckbox
function processSelect(){
//alert("ee");
//select 값얻기
var obj=document.frm;
//가장 간단
//alert(obj.job.value);
//선택된 인덱스 번째 값을 얻기
//alert(obj.job.selectedIndex);
//alert(obj.job[obj.job.selectedIndex].value);
//for를 돌리지 않아도 잘 나온다
//for로 값얻기+output에 출력
var output="";
output=obj.job.value;
/*
for(var i=0; i<obj.job.length; i++){
if(obj.job[i].selected){
output=obj.job[i].value;
}//end if
}//end for
*/
document.getElementById("output").innerHTML="선택한 직업 : "+output;
}//processSelect
</script>
</head>
<body>
<form name="frm">
<div>
<label>성별</label>
<input type="radio" name="gender" value="M"/>남자
<input type="radio" name="gender" value="F"/>여자
</div>
<div>
<label>게임</label>
<input type="checkbox" name="games" value="철권"/>철권
<input type="checkbox" name="games" value="아스팔트"/>아스팔트
<input type="checkbox" name="games" value="GTA"/>GTA<br/>
<input type="checkbox" name="games" value="하스스톤"/>하스스톤
<input type="checkbox" name="games" value="리니지"/>리니지
<input type="checkbox" name="games" value="마인크래프트"/>마인크래프트
</div>
<div>
<label>관심직업 선택</label>
<select name="job">
<option value="none">---직업선택---</option>
<option value="쓰앵님">쓰앵님</option>
<option value="Front개발자">Front 개발자</option>
<option value="BackEnd개발자">BackEnd개발자</option>
<option value="운영">운영</option>
<option value="유지보수개발자">유지보수개발자</option>
</select>
</div>
<div>
<input type="button" value="라디오 값얻기" id="radio" class="btn"/>
<input type="button" value="체크박스 값얻기" id="check" class="btn"/>
<input type="button" value="셀렉트 값얻기" id="select" class="btn"/>
</div>
</form>
<div id="output"></div>
</body>
</html>
*JavaScript의 값을 HTML Form Control 설정
-
name 속성이 유일한 경우.
-
document.폼이름.control이름.value=값;
-
checked 속성 변경
-
document.폼이름.control명[인덱스].checked=true|false ; //넣은 값으로 변경되어 나온다.
-
selected 속성 변경
-
document.폼이름.control명[인덱스].selected=true|false ; //넣은 값으로 변경되어 나온다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="http://localhost:8080/html_prj/common/main_v190130.css"/>
<style type="text/css">
fieldset {border:1px solid #333; width:400px; margin-top:10px; }
img{width: 100px;}
</style>
<script type="text/javascript">
function uniqueVal(){
var obj=document.frm;
obj.name.value="김";//text의 값 설정
obj.password.value="j111"//password 값 설정
obj.addr.value="서울"//hidden 값 설정
obj.img.src="../common/images/img1_1.png"//img 변경
//HTML5에서 제공하는 Form Control
obj.date.value="1993-07-29"//date 변경 년-월-일 의 형태만 적용 가능
obj.range.value=80//range 변경
}//uniqueVal
function setChecked(){
//checked 상태 변경
var obj=document.frm;
//radio의 상태 변경
obj.gender[1].checked=true;
//checkbox의 상태 변경
obj.hobby[0].checked=true;
obj.hobby[3].checked=true;
}//setChecked
function setSelected(){
//selected 상태 변경
var obj=document.frm;
obj.tel[1].selected=true;
}//setSelected
function checkedTotal(){
var obj=document.frm1;
for(var i=0; i<obj.mail.length; i++){
obj.mail[i].checked=obj.flag.checked;
/* if(obj.flag.checked){
obj.mail[i].checked=true;
}else{
obj.mail[i].checked=false;
}//end else*/
}//end for
}//checkedTotal
</script>
</head>
<body>
<div>
<h2>JavaScript의 값을 HTML From Control에 설정</h2>
<form name="frm">
<fieldset>
<legend>이름이 유일한 Form Control</legend>
<label>이름</label>
<input type="text" name="name" class="inputBox"/><br/>
<label>나이</label>
<input type="password" name="password" class="inputBox"/><br/>
<label>주소</label>
<input type="hidden" name="addr"/><br/><!-- hidden은 사용자에게 보여지는 부분이 아니라 class주지 않음 -->
<label>이미지</label>
<img src="../common/images/img.png" name="img"/><br/>
<label>날짜</label>
<input type="date" name="date"/><br/>
<label>범위</label>
0<input type="range" name="range" min="0" max="100"/>100<br/>
<input type="button" value="값설정" onclick="uniqueVal()" class="btn"/>
</fieldset>
<fieldset>
<legend>checked 속성 변경</legend>
<label>성별</label>
<input type="radio" name="gender" value="남자"/>남자 |
<input type="radio" name="gender" value="여자"/>여자<br/>
<label>취미</label>
<input type="checkbox" name="hobby" value="게임"/>게임
<input type="checkbox" name="hobby" value="등산"/>등산
<input type="checkbox" name="hobby" value="낚시"/>낚시
<input type="checkbox" name="hobby" value="독서"/>독서
<input type="checkbox" name="hobby" value="음악감상"/>음악감상
<br/>
<input type="button" value="checked 설정" class="btn" onclick="setChecked()"/>
</fieldset>
<fieldset>
<legend>seleted 속성 변경</legend>
<label>국번 선택</label>
<select name="tel">
<option>---국번 선택---</option>
<option value="010">010</option>
<option value="011">011</option>
<option value="016">016</option>
<option value="017">017</option>
<option value="018">018</option>
<option value="019">019</option>
</select>
<br/>
<input type="button" value="selected 설정" class="btn" onclick="setSelected()"/>
</fieldset>
</form>
</div>
<div>
<form name="frm1">
<table>
<thead>
<tr>
<th><input type="checkbox" name="flag" onclick="checkedTotal()"/></th>
<th width="350">제목</th>
<th width="80">작성자</th>
<th width="100">수신일</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" name="mail"/></td>
<td>안녕하세요? 저번에 바다에서 뵈었던.....바다이야기</td>
<td>김실장</td>
<td>2019-02-12</td>
</tr>
<tr>
<td><input type="checkbox" name="mail"/></td>
<td>안녕하세요? 저번에 바다에서 또 뵈었던.....바다이야기2</td>
<td>김실장</td>
<td>2019-02-12</td>
</tr>
<tr>
<td><input type="checkbox" name="mail"/></td>
<td>대박 승률~야마토</td>
<td>이실장</td>
<td>2019-02-12</td>
</tr>
<tr>
<td><input type="checkbox" name="mail"/></td>
<td>[업무협조] 김정윤 담당자님 안녕하세요? 저번에 바다에서...</td>
<td>이실장</td>
<td>2019-02-12</td>
</tr>
</tbody>
</table>
</form>
</div>
</body>
</html>
*함수 사용
-
정수 변경 : parseInt(값 : 실수,문자열)=>정수 //대신 캐스팅이 없다
-
난수 발생 : Math.random()=>number(실수:0.000~15~16 ~ 0.999~15~16)
-
만약 0~9까지 난수를 발생시키고 싶다면, Math.random()*10(발생시키고 싶은 수)
-
0~9 <=parseInt(Math.random()*10)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="http://localhost:8080/html_prj/common/main_v190130.css"/>
<style type="text/css">
#output{width: 400px; height: 200px; border: 1px solid #333;}
</style>
<script type="text/javascript">
function useFunc(){
var divNode=document.getElementById("output");
var i="2";
var j=12;
var output=i+" * "+j+" = "+(parseInt(i)*j);//형변환 알아서 잘해주긴 한다.
var randomNumber=Math.random();
output+="<br/>"+randomNumber;
output+="<br/>"+randomNumber*10;//범위의 난수
/* output+="<br/>"+(int)(randomNumber*10);//x안됨!=>casting이 없다 */
output+="<br/>"+parseInt(randomNumber*10);
divNode.innerHTML=output;
}//useFunc
</script>
</head>
<body>
<div id="output"></div>
<div>
<input type="button" value="함수 사용" onclick="useFunc()" class="btn"/>
</div>
</body>
</html>
<<<<<<<<<<<<<<<<<<숙제>>>>>>>>>>>>>>>>>>>>>>>>
<<숙제1>>>
1.참여 설정이 클릭되면 사용자1과 2의 공백체크를 한 후 값이 없다면 alert("사용자를 입력"); 을
보여주고 있다면 id가 p1Name,p2Name span에 들어간다.
3.게이머의 라디오버튼이 클릭되고 던지기가 눌러지면 주가위가 변경되고 합산값이 저장된다.
4.초기화버튼이 눌려지면 최초상태로 돌아간다.
규칙 : 3회로 게임을 종료, 주사위를 두번 연속 던질 수 없다, 시작은 1번부터 시작한다.
게임이 종료되면 판정에 "xxx님 이 승리하셨습니다."를 보여줍니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="http://localhost:8080/html_prj/common/main_v190130.css"/>
<style type="text/css">
#diceWrap{border:1px solid #333; width: 500px; height: 400px; box-shadow: 10px 10px 10px #333;
margin-left: 100px; margin-top: 10px;}
#inputHeader{height: 150px; }
#score{height: 30px; text-align: center; }
#diceView{width: 500px; text-align: center; margin-top: 50px; }
h2{text-align: center;}
</style>
<script type="text/javascript">
window.onload=function(){
setDice();
}//function
function setDice(){
var obj=document.frm;
var num1=parseInt(Math.random()*6)+1//1~6
var num2=parseInt(Math.random()*6)+1//1~6
obj.dice1.src="images/dice_"+num1+".png";
obj.dice2.src="images/dice_"+num2+".png";
var arr=[num1,num2];
return arr;
}//setDice
var cnt=0;
var p1count=0;
var p2count=0;
function throwDice(){
var obj=document.frm;
if(obj.player1.value=="" || obj.player2.value==""){//주사위를 던지기 전에 사용자 먼저.
alert("사용자를 먼저 입력하여 주세요");
return;
}//end if
if(!(obj.trun1[0].checked || obj.trun1[1].checked)){//아무 체크도 안되어 있다면 사용자1부터라고 알려줌
alert("처음은 사용자1 부터 시작합니다.");
obj.trun1[0].checked=true;
return;
}//end if
if(cnt==0){//처음돌릴때
if(obj.trun1[1].checked==true){
alert("처음은 사용자1 부터 시작합니다.");
obj.trun1[0].checked=true;
return;
}
var arr=setDice();
p1count+=arr[0]+arr[1];
obj.trun1[1].checked=true;
cnt++;
}else if(cnt==1||cnt==3||cnt==5){
if(obj.trun1[1].checked){
var arr=setDice();
p2count+=arr[0]+arr[1];
obj.trun1[0].checked=true;
cnt++;
}else{
alert("사용자2의 차례입니다.");
}
}else if(cnt==2||cnt==4){
if(obj.trun1[0].checked){//1이 돌리면
var arr=setDice();
p1count+=arr[0]+arr[1];
obj.trun1[1].checked=true;
cnt++;
}else{
alert("사용자1의 차례입니다.");
}
}else {
var win="";
if(p1count>p2count){
win="사용자1";
}else{
win="사용자2";
}
var msg="사용자 1님이 "+p1count+"점, 사용자 2님이 "+p2count+"으로 " +win+ "님이 승리하셨습니다~!!"
alert("판정 :"+msg);
document.getElementById("result").innerHTML+=msg;
}//end else
}//throwDice
function setName(){
var obj=document.frm;
var player1Name=document.getElementById("p1Name")
var player2Name=document.getElementById("p2Name")
if(obj.player1.value=="" || obj.player2.value==""){
alert("사용자를 입력하여 주세요");
return;
}//end if
player1Name.innerHTML=obj.player1.value;
player2Name.innerHTML=obj.player2.value;
//obj.p2Name.value
}//setName
function resetGame(){
var obj=document.frm;
var player1Name=document.getElementById("p1Name")
var player2Name=document.getElementById("p2Name")
player1Name.innerHTML="";
player2Name.innerHTML="";
document.getElementById("result").innerHTML="";
}//reset
</script>
</head>
<body>
<div id="diceWrap">
<form name="frm">
<div id="inputHeader">
<h2>주사위 게임</h2>
<div>
<label>사용자1</label>
<input type="text" name="player1" class="inputBox">
<label>사용자2</label>
<input type="text" name="player2" class="inputBox">
<input type="button" value="참여 설정" class="btn" onclick="setName()"/>
</div>
<div style="text-align: center;margin-top:10px;">
<input type="radio" name="trun1" id="p1"><span id="p1Name"></span>
<input type="radio" name="trun1" id="p2"><span id="p2Name"></span>
<input type="button" value="던지기" class="btn" onclick="throwDice()"/>
</div>
</div>
<div id="score">
판정 : <span id="result"></span><br/>
<input type="reset" value="초기화" class="btn" onclick="resetGame()"/>
</div>
<div id="diceView">
<img src="images/dice_1.png" name="dice1"/>
<img src="images/dice_1.png" name="dice2"/>
</div>
</form>
</div>
</body>
</html>
<<숙제2>>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="http://localhost:8080/html_prj/common/main_v190130.css"/>
<style type="text/css">
#header{border:1px solid #333; width: 300px; height: 300px;}
</style>
<script type="text/javascript">
function change(){
var obj=document.frm;
var size=obj.setSize.value;
var img=obj.imgResize;
img.width=size;
//obj.img.style="width:"+number+"px; height:"+number+"px;";
}//change
</script>
</head>
<body>
<div id="workWrap">
<form name="frm">
<div id="header">
<img src="images/dice_1.png" name="imgResize" /><!-- style="width:30px;height:30px;" -->
</div>
<div>
30<input type="range" name="setSize" min="30" max="300" onmousemove="change()"/>300<br/>
</div>
</form>
</div>
</body>
</html>
반응형
'국비지원학원 > HTML,JavaScript,jQ' 카테고리의 다른 글
78일차-JavaScript+a (0) | 2019.02.18 |
---|---|
77일차-JavaScript_함수 (0) | 2019.02.17 |
75일차-Javascript_함수(function) (0) | 2019.02.14 |
74일차-JavaScript_제어문과 배열(2차원 배열) (0) | 2019.02.13 |
73일차-JavaScript (0) | 2019.02.12 |