Page 1 of 1

역시나 어려운 표준 자바스크립트..

Posted: 2005 09 05 14:26 02
by oragi
역시나 이번에도 문제를 안고 찾아왔습니다..
예전에 쓰던 전체선택용 스크립트를 이번에 웹표준 방식으로 바꾸어 볼려고 했는데
아예 동작을 안하고 자바스크립트 콘솔에선 함수가 정의가 되지 않았다는 군요.
잘 아시는 분들께 수정을 요청드립니다.

자바 스크립트부분
//일괄 선택용 자바스크립트
function selectall_ok()
if (document.del_list.del_chk) //체크박스가 하나라도 있을 때
{
if (document.del_list.del_chk.length==null) //체크박스가 하나일 경우
{
document.del_list.del_chk.checked = true;
}
else
{
for (var i=0; i<document.del_list.del_chk.length;i++)
{
document.del_list.del_chk.checked = true;
}
}
}
}


이 소스를 이렇게 바꾸어 보았는데요.

function selectall_ok()
{
if (document.getElementsByName("del_chk")
{
if (document.getElementsByName("del_chk").length==null)
{
document.getElementsByName("del_chk").checked=true;
}
else
{
for (var i=0; i<document.getElementsByName("del_chk").length;i++)
{
document.getElementsByName("del_chk").checked=true;
}
}
}
}

이게 동작을 하지 않습니다....

html 코드

<table>
<form id="del_list" name="del_list" method="post" action="어디어디">
<tr><td><input type="checkbox" name="del_chk" value="1">내용1</td></tr>
<tr><td><input type="checkbox" name="del_chk" value="2">내용2</td></tr>
<tr><td><input type="checkbox" name="del_chk" value="3">내용3</td></tr>
</form></table>
<a href="#" onclick="selectall_ok(); return false;">클릭</a>

제대로 공부해보지 못한 저로선 무엇이 문제인지 알수가 없네요.
무엇이 잘못ㅤㄷㅚㅆ는지 지적해 주세요.

ps.
웹표준 자바스크립트에 대해서 이해하기 쉽게 정리된 사이트 (될수 있으면 한글..)가 어디 없을까요? w3c나 ㅤㄱㅔㄱ코 사이트는 영어라 영 이해가...(:|)

Re: 역시나 어려운 표준 자바스크립트..

Posted: 2005 09 05 14:40 44
by 하늘다람쥐
oragi wrote:

Code: Select all

function selectall_ok()
{
	if (document.getElementsByName("del_chk")
	{
		if (document.getElementsByName("del_chk").length==null)
		{
			         document.getElementsByName("del_chk").checked=true;
		}
		else
		{
			for (var i=0; i<document.getElementsByName("del_chk").length;i++)
			    {
				     document.getElementsByName("del_chk")[i].checked=true;
				}
		}
	}
}
if (document.getElementsByName("del_chk") 이부분에 괄호가 하나 없습니다. :oops:

Posted: 2005 09 05 15:46 04
by oragi
하...아...
이런... 이런 초보적인 실수를...
역시 아직 전 초보군요. 죄송하게 ㅤㄷㅚㅆ습니다.:|

하늘다람쥐님 갑사합니다.

초기에

Posted: 2005 09 06 07:01 46
by 박민권
oragi wrote:하...아...
이런... 이런 초보적인 실수를...
역시 아직 전 초보군요. 죄송하게 ㅤㄷㅚㅆ습니다.:|

하늘다람쥐님 갑사합니다.
초기에 불여우 사용시 저도 제 문제 보다는 불여우의 문제를 먼저 의심했었습니다.
그러다보니 변수명 틀린건데도 불여우를 의심하구요.
이제는 모든 의심이 다 풀려서 불여우를 믿고 작업하고 있습니다. :)

Posted: 2005 09 06 11:02 01
by 하늘다람쥐
죄송하실 필요까지야.. :D

원래 그런 사소한 실수일 수록 작성자 본인에겐 잘 안보이는 법이죠.

음 제가 좀더 줄여보았는데요.

Posted: 2005 09 11 13:25 02
by ayaya
일단 document.getElementsByName() 함수는 주어진 이름에 대한 elements가 하나도 없을 경우 길이가 0인 collection(배열로 생각하면 편합니다)를 넘기게 되어 있는데요. 따라서 다음과 같이 하면 쉽게 할 수 있습니다.

function selectall_ok()
{
var delObjs = document.getElementsByName("del_chk");

for (var i=0; i < delObjs.length; i++)
{
delObjs.checked = true;
}
}

굳이 얻어온 체크박스가 1개인지 그 이상인지 확인할 필요는 없다고 봅니다. :D