제목 | 자바스크립트에서 상하위 노드값 읽기 질문입니다. | ||
---|---|---|---|
글쓴이 | liekie | 작성시각 | 2010/12/29 18:39:31 |
|
|||
안녕하세요. CI와 상관은 없지만... 쇼핑몰 제작중에 문제에 부딪혀서 질문드립니다. 자바스크립트 에서 현재 클릭한 <TD>의 상하위<TD>의 <input> value를 읽으려면 어떻게 해야하나요? <table> 1) 자동차를 클릭시 비행기 의 값을 읽으려면 어떻게 해야하나요 -_-;;
이렇게 하면 <input type="hidden" name="tire" value="타이어"> 의 값은 읽을수 있는데... 답변 부탁드립니다.
|
|||
다음글 | $config['database'] 이것을 문자열로 ... (2) | ||
이전글 | url관련 질문입니다. (2) | ||
오징어
/
2010/12/29 21:55:33 /
추천
0
|
liekie
/
2010/12/29 23:00:24 /
추천
0
<카테고리 구조> 가 아래와 같을때.... 비행기(Level1)의 [↑]를 클릭하면 같은 레벨인 상위 자동차(Level1)의 <input >값 을
위아래 값을 동시에 읽는건 아니구요... document.getElementById('heli').value; |
SEB
/
2010/12/30 06:50:27 /
추천
0
테이블 구조로 묶어놓으셔서 parentNode가 td / table 등으로 잡히기때문에 그렇습니다.
<table> <tr> <td> <input name="비행기"/> </td> </tr> <td> <input name="자동차"/> 인경우 비행기의 parentNode는 td가 됩니다. 자동차를 선택하시려면 비행기.parentNode.parentNode.parentNode.childNodes(1) .childnode(1).....이런식으로 접근하셔야 할듯하네요 디자인 node와 내용 node가 섞여있는경우엔 저런식으로 parentNode를 계산하기가 쉽지않고,, 테이블은 자체가 디자인적 요소이기때문에 가급적 사용을 안하시는것이 좋습니다. 아 그리고 참고로 javascript에서 parent/child Selector를 사용하실경우 id,name을 사용하실때보다 훨씬 속도가 느리다고합니다. |
liekie
/
2010/12/30 16:08:51 /
추천
0
SEB 님 말씀대로 하니까 되긴하는데....
정말 parentNode를 계산하는게 쉽지 않군요 -_-;; 다른 방법으로 구현하는 방법은 없을까요 ^^;; 감이 안오네요 -_-;; |
eray
/
2011/01/03 02:03:34 /
추천
0
테이블을 사용하지 마시고 Div, span과 CSS를 사용해서 만드시면
컨텐츠가 의미위주로 정리가 되기때문에 조금 더 쉽지 않을까싶네요.. 아니면.. 아예 동적으로 생성하실때, id나 class에 nodeLevel등을 지정하시어 javascript에서는 id셀렉터만을 사용해서도 구현가능하지 않을까요? 예를들면, <input name="비행기" id="1"/> <input name="자동차" id="2"/> <input name="타이어" id="2-1"/> <input name="핸들" id="2-2"/> 모 이런식으로 말이죠.. |
liekie
/
2011/01/03 02:52:29 /
추천
0
감사합니다..
이래 저래... 몇일 동안 강아지고생-_-;; 해서 잘 처리 되었습니다. 카테고리 관리는 처음 해보았는데... 쉽지 않군요. 써보지 않았던 스크립트써가면서 하다 보니 어렵게 느껴졌던것 같습니다. 카테고리 위아래로 움직일때마다 처리하는게 생각보다 꾀 까다롭네요... 위의 답변들을 시작으로 몇일간의 카테고리 관련 코딩이 잘마무리 되었습니다.... ^^; 감사합니다^^ |
void
/
2011/02/07 18:11:41 /
추천
0
<script> function traceParent( obj , nodeName ) { return(!obj||!obj.tagName)?null:(( obj.tagName.toUpperCase() == nodeName.toUpperCase() )?obj:traceParent(obj.parentNode,nodeName)); } function getChildNodeWithType( node , index , type ) { if( ! node ) { return false ; } if( ! type ) { type = 1 ; } if( ! index ) { index = 0 ; } var rtn = null ; var i = 0 ; var ls = node.childNodes ; for( var j = 0 ; j < ls.length ; ++j ) { if( ls[j].nodeType == type ) { if( i == index ) { rtn = ls[j] ; break ; } ; i++ ; } } return rtn ; } </script> <table> <tbody> <tr><td>a</td></tr> <tr><td onclick='alert(getChildNodeWithType(traceParent(this,"TBODY"),0).innerHTML)'>b</td></tr> </tbody> </table>
뭐 이런식이라면.. 될거 같기도 한데요.. 사족을 달자면... 익스플로러는 태그와 태그 사이의 공백문자들을 노드로 취급하지 않지만, 크롬이나 여타 브라우저들은 공백문자조차 문자열노드로 인식하는 관계로 anyNode.childNodes[0] 했을때 리턴되는 노드가 다를 수 있습니다. 뒷북인감... ... |
다중셀렉트 말씀하시는 건가요.........?
input 아이디 속성 넣으시고,
아이디.value 하시면될꺼 같네요......
이해하기 어려워요...