document.write 사용문의

국내에 웹 사이트들이 웹 표준을 지키고 OS나 브라우저와 관계 없이 접근성을 향상 시키기 위한 사이트 버그 신고 및 문제 해결을 위한 게시판입니다.
Post Reply
리모
Posts: 1
Joined: 2005 08 03 18:41 39
Contact:

document.write 사용문의

Post by 리모 »

첨으로 파이어폭스를 사용하는데요...하루종일 이것때문에 골치가 아푸네요..^^


***********
* 되는 코딩
***********

document.write("<form name='f_JsLink' method='post' action='/servlets/IGateWeb'>");
document.write("<input type='hidden' name='sTrSet' value='1'>");
document.write("<input type='hidden' name='sLstData' value='0100170243996610'>");
document.write("<input type='hidden' name='msgId' value='6429'>");
document.write("<input type='hidden' name='com_cmd' value='lbds0210'>");
document.write("</form>");

function aa(){

document.f_JsLink.submit();
}


***********
* 안되는 코딩
***********

function aa(){

document.write("<form name='f_JsLink' method='post' action='/servlets/IGateWeb'>");
document.write("<input type='hidden' name='sTrSet' value='1'>");
document.write("<input type='hidden' name='sLstData' value='0100170243996610'>");
document.write("<input type='hidden' name='msgId' value='6429'>");
document.write("<input type='hidden' name='com_cmd' value='lbds0210'>");
document.write("</form>");

document.f_JsLink.submit();

}


위에테스트처럼 document.write를 사용하려 하는데 function안에다 선언을 해야하거든요. value값을 function의 매개변수로받아오는거라..
근데 function 내에서는 document.write를 사용했더니 f_JsLink no has properties 라고 form이름을 못 찾는것 같습니다..

해결좀 부탁드려요..^^
daybreaker

Re: document.write 사용문의

Post by daybreaker »

document.f_JsLink 라고 쓰시면 안 되구요, document.getElementById('f_JsLink')라고 쓰셔야 표준에 맞는 것입니다. 그리고 form도 name으로 하시지 마시고 원래는 id로 해야 합니다. 그러나 아직 호환성 문제 때문에 id와 name을 모두 적어줍니다. 따라서 form 태그도 <form id="f_JsLink" name="f_JsLink"로 고쳐주시는 게 좋겠네요.

그러나 function 안에 있고 밖에 있고의 차이가 왜 됐다 안 됐다 하는 것인지는 저도 잘 모르겠습니다. 일단 제가 말한 대로 해 보세요.
리모 wrote:첨으로 파이어폭스를 사용하는데요...하루종일 이것때문에 골치가 아푸네요..^^


***********
* 되는 코딩
***********

document.write("<form name='f_JsLink' method='post' action='/servlets/IGateWeb'>");
document.write("<input type='hidden' name='sTrSet' value='1'>");
document.write("<input type='hidden' name='sLstData' value='0100170243996610'>");
document.write("<input type='hidden' name='msgId' value='6429'>");
document.write("<input type='hidden' name='com_cmd' value='lbds0210'>");
document.write("</form>");

function aa(){

document.f_JsLink.submit();
}


***********
* 안되는 코딩
***********

function aa(){

document.write("<form name='f_JsLink' method='post' action='/servlets/IGateWeb'>");
document.write("<input type='hidden' name='sTrSet' value='1'>");
document.write("<input type='hidden' name='sLstData' value='0100170243996610'>");
document.write("<input type='hidden' name='msgId' value='6429'>");
document.write("<input type='hidden' name='com_cmd' value='lbds0210'>");
document.write("</form>");

document.f_JsLink.submit();

}


위에테스트처럼 document.write를 사용하려 하는데 function안에다 선언을 해야하거든요. value값을 function의 매개변수로받아오는거라..
근데 function 내에서는 document.write를 사용했더니 f_JsLink no has properties 라고 form이름을 못 찾는것 같습니다..

해결좀 부탁드려요..^^
eouia

아마도..

Post by eouia »

잘 모르지만...
함수안에서 document.write를 써서 동적으로 HTML을 추가할 경우에는 DOM에 자동으로 추가가 안되는 듯 합니다. 메모리 모델이 어떤 식으로 이루어지는지 모르겠지만, 함수 밖에서 사용하면 일단 해당 메모리를 할당하므로 상관없지만 함수 안에서 사용하면 메모리 할당이 안된 채로 해석이 시작되는 듯...
그래서 function안에 있으면 아직 해당 엘리먼트가 생성되지 않은 상태이므로 f_JsLink를 제대로 사용할 수 없는 것 같습니다.
테스트해보지는 않았지만, document.write대신 createElement등을 이용해서 추가해주면 가능하지 않을까 생각해봅니다.
yser_로그인 팅

Post by yser_로그인 팅 »

DOM 모델을 따라서 쓸 때는 document.write 를 쓰면 안된다고 합니다. 이전에 XSLT 관련 정보를 외국에서 찾다가 봤는데.. 하도 헤매던 중에 봐서 어디였는지 잘 기억은 안나네요. 대표적으로 document.write, innerHTML 등을 쓰지 말라고 했는데.. 이건 객체 접근 방식이 아닌 구시대적인 함수(메소드)라서 xhtml 부터는 특히 쓰지 말기를 권하고 있더군요. 그래서 단순히 문자 하나 추가를 하려고 해도 innerHTML 를 쓰질 말고 document.createTextNode 를 써야 하는 등.. 조금 귀찮게 된 면은 있습니다. 그러나 DOM 을 따를려면 어쩔 수 없이..

예전에 여기 포럼에서 박민권 님이 비슷한 답변을 한 게 있을텐데 검색 한 번 해보세요.
Post Reply

Who is online

Users browsing this forum: No registered users and 4 guests