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

국내에 웹 사이트들이 웹 표준을 지키고 OS나 브라우저와 관계 없이 접근성을 향상 시키기 위한 사이트 버그 신고 및 문제 해결을 위한 게시판입니다.
Post Reply
oragi

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

Post 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나 ㅤㄱㅔㄱ코 사이트는 영어라 영 이해가...(:|)
User avatar
하늘다람쥐
도우미
도우미
Posts: 287
Joined: 2004 08 25 13:02 50
Location: 푸른 하늘
Contact:

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

Post 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:
oragi

Post by oragi »

하...아...
이런... 이런 초보적인 실수를...
역시 아직 전 초보군요. 죄송하게 ㅤㄷㅚㅆ습니다.:|

하늘다람쥐님 갑사합니다.
박민권
해커
해커
Posts: 724
Joined: 2005 01 31 22:33 55
Location: 대한민국
Contact:

초기에

Post by 박민권 »

oragi wrote:하...아...
이런... 이런 초보적인 실수를...
역시 아직 전 초보군요. 죄송하게 ㅤㄷㅚㅆ습니다.:|

하늘다람쥐님 갑사합니다.
초기에 불여우 사용시 저도 제 문제 보다는 불여우의 문제를 먼저 의심했었습니다.
그러다보니 변수명 틀린건데도 불여우를 의심하구요.
이제는 모든 의심이 다 풀려서 불여우를 믿고 작업하고 있습니다. :)
User avatar
하늘다람쥐
도우미
도우미
Posts: 287
Joined: 2004 08 25 13:02 50
Location: 푸른 하늘
Contact:

Post by 하늘다람쥐 »

죄송하실 필요까지야.. :D

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

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

Post 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
Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests