음 봉쿠라즈 ㅡㅡ 멤버
소중한 나의 친구 녀석들..
이제는 옛날 처럼 자주 만나진 못하겠지만 멀리 떨어졌지만 모두~_~
평생도록 친구일꺼라 믿는다ㅎㅎ 아웅 갑자기 보고 싶네 자슥들..
그치만 별은 마시지말자 -_-.. 그건 쫌 아니였지...

카니발의 「그땐 그랬지」를 들으며..


ps. 돼지 혼자 해외로 도피하니까 좋냐
네이트온에 자주 들어와 돼지놈아 거기에서도 말썽부리지 말고 잘해라 후훗
글구 진부야 너의 여고생은 나에게 있으니 담에 만나자 ㅋㅋ

'Life > 살아가고 있어요' 카테고리의 다른 글

회사에서, 나.  (4) 2007.04.20
새로 만들고자하는 세컨드 카드. - 하나은행 마이웨이카드  (6) 2007.03.23
가계부 작성 시작  (7) 2006.12.11
집안 싱크대 전경  (4) 2006.11.26
jx3 and azki at 신촌  (2) 2006.11.15
AND

요새 난 정신없는 javascript 질을 하고 있는중
나의 동반자 prototype 과 함께.. FF vs IE 와 Opera, Netscape.. 전전긍긍-_-..
지나간 이야기이지만, 그냥 삽질 했던 것 자취를 남긴당
참고로 테스트 환경은 다음과 같다 =_=
Firefox 2.0, Internet Explorer 6.0, Opera 8.5, Netscape 8.1 - on windowsXP


DOM 에서 뭔가 엘리멘트를 만들때 이런 것을 주로 쓴다

createElement(String tagName) : static HTML Element

예를 들면 다음과 같다

var testInputElement = createElement('input');

그리고 속성들을 지정할때는
testInputElement.value = 'korea';
testInputElement.type = 'text';
등과 같이 Element 의 멤버들에 접근하면 된다. (setAttribute 를 이용해도 되고)
이렇게 한 결과는 다음과 같다
<input value='korea' type='text'>

암튼 문제는 이런 것이다..
원래 라디오 버튼 사용은 다음과 같이 한다
<input type='radio' name='onandoff' value='on'>
<input type='radio' name='onandoff' value='off'>

위와 같이 name 속성을 똑같은 것으로 지정하면 서로 관계를 갖게 되고, 베타적으로 작동(선택)을 할 수 있다

여기서, 위의 라디오버튼들을 생성해보자 (createElement 를 이용해서)

var radio1 = document.createElement('input');
var radio2 = document.createElement('input');
radio1.type = radio2.type = 'radio';
radio1.name = radio2.name = 'onandoff';
radio1.value = 'on';
radio2.value = 'off';

자 댔다 ㅋㅋ (조심해서 썼으나 틀렸을 수도 있음)

근대 문제가 있다 IE에서!
FF에서는 전혀 문제가 없다 (물론 그를 기반한 넷츠도 문제 없고 오페라 물론 괜찮다)
이상하게도 IE에서는 radio 버튼 생성을 저런식으로 하면 안된다
type 속성까지는 적용되지만 name 속성을 적용한 것이 동작하지 않는다 (일시적인 문제인 것인지 확인해 보기 위해 다른 이벤트를 동작시켜서 name 속성을 변경시켜봤지만 마찬가지였다)
실제로 appendChild 등을 통해 화면에 뿌려보면 name 없는 radio 버튼 처럼 작동을 한다
(베타적인 선택을 하지 못할 뿐만 아니라 아예 선택이 되지 않는다)

MSDN에 따르면, 우리는 이런식으로 라디오 버튼을 생성해야만 한다

var radio1 = document.createElement("<input type='radio' name='onandoff' value='on'>");
var radio2 = document.createElement("<input type='radio' name='onandoff' value='off'>");

오, 뭔가 이런식으로도 만들 수 있구나.. 앞으로도 그냥 이런식으로 만들면 되겠구나.
라고 생각했었다 처음엔..
물론 다른 엘리멘트들도 이런 식으로 생성이 가능하다.
그런데 문제는.
W3C DOM 스펙에 맞지 않는다는 것이다

The W3C DOM spec is supposed to be "the name of the element type to instantiate" (e.g., createElement('input'))

심지어 FF에선 작동하지 않고

Raises an INVALID_CHARACTER_ERR error if the specified name contains an illegal character.

throw 한다..

이밖에 IE..에 실망한 많은 경우들을 열거하면서 불평하고 싶지만.. 일단 해결책을 찾아보자.

내가 이 문제에 대해 사용햇던 방법은 다음과 같다 (try ~ catch)

try {
  var radio1 = document.createElement("<input type='radio' name='onandoff'>");
  var radio2 = document.createElement("<input type='radio' name='onandoff'>");
}
catch (e) {
  var radio1 = document.createElement('input');
  var radio2 = document.createElement('input');
  radio1.type = radio2.type = 'radio';
  radio1.name = radio2.name = 'onandoff';
}
radio1.value = 'on';
radio2.value = 'off';

음 FF, IE, Opera, Netscape에서 제대로 동작하는걸 확인했는데
버전 따라서 안될지도 모르겠고, Safari에서는 확인해보지 못했다.
다른 방법으로는 애초에 appendChild 메소드를 사용 안하고 innerHTML 속성을 사용하는 방법도 있다


ps. 여담이지만..
radio button 속성중 베타적 선택을 가능케하는 name 이 없을 경우..
각각의 브라우저가 다르게 반응한다 -.-
IE6: 위에도 적었지만 아예 선택(checked)자체가 되지않는다
FF2: 한개 한개 다르게 선택이 된다, 즉 4개를 만들면 4개다 선택이 가능하다.
Opera8: 마치 name이 없는 것으로 그룹화된 것 처럼 정상적으로 베타적 작동(선택)을 한다

AND

남산 다녀왔어요

첫 고난..
왼쪽에 보이는 건물인 과학관에두 다녀왔지요 (견학!)
재미있었는데요 그곳에서는 왠지 사진을 안찍어서 없군용
열심히 올라가고있어요 ' '
두번째 고난.. 갈 길이 멉니다 ' ㅁ '
정상?인 서울 타워에서 쉬면서..
서울 타워 안에서 찍은듯


뭔가 쭈르륵 이어지는 것이 없네요 -_-
열심히 놀땐 노는 것에 집중하다보니까 -_-;;

재미있었습니다 운동도 조금 하고 말이죠..
시끄런 클럽보다 산에 가고픈 커플인거죠..

'Life > 더헛과 함께' 카테고리의 다른 글

데이트 - 여의도 봄꽃축제 #2007.04.11  (4) 2007.04.15
데이트 - 과천 서울대공원 동물원 #2007.03.17  (0) 2007.03.18
반지  (5) 2007.03.03
데이트 - 봉쥬르 #2007.02.24  (10) 2007.02.25
Gstar 2006  (6) 2006.11.16
AND