이유는 날짜의 상단에있는 버튼 위에 있지만, 다른 방법으로 주위의 날짜 문자열 땅이 (버튼 땅 아니다 할 끈). 전혀 사용하지 않으면 document.write()는 < 본문 >의 출력이 HTML과 같은 정확한 위치에 있어야합니다. < 머리 >에 배치하는 것은 의미가 없습니다. 귀하의 브라우저는 혼란스럽고 어쨌든 즉시 실행하려고 시도합니다. 그러나은 레이아웃을 업데이트하지 않으므로 (나중에 초기화되지 않은 것 같습니다) 나중에 < 본체의 첫 번째 내용 > (버튼 일 수 있습니다) 오버레이.
다음은 OLD STYLE처럼 보일 것입니다. 이 코드는 이 아니며은 현재 모범 사례 코딩 표준과 일치하며 이 아니고이 정확히 에뮬레이트되어야합니다. 그러나 "실제로"무슨 일이 일어나고 있는지 더 잘 알 수 있습니다. Do this는 "innerHTML"을 사용하지 않고 양식을 초기화하는 방법을 보여줍니다. 또한 양식 필드에 레이블을 지정하는 방법을 설명합니다.
여기에 "document.write"를 사용하면 안된다는 데 동의합니다. 지나치게 유연하지 못합니다 (페이지를 서버에서 가져 왔을 때 항상 실행되지만 사용자가 "뒤로"버튼을 클릭 할 때 실행되지 않고 "재설정 양식"과 같은 다른 용도로 사용하기 위해 Javascript 프로그램에서 사용할 수 없음). 또한 많은 경우 실제로 성능이 저하됩니다.
양식의 모든 입력란을 정렬하여 "예쁘"며 전체 양식 주위에 상자를 그리는 것이 일반적입니다. 그런 일은하기 쉽습니다. 그러나 질문의 영역에 초점을 맞추기 위해이 예에서는 이 아니고이 그 예를 보여줍니다.
getElementById()를 사용하지 않고 양식 내에서 필드 이름을 지정하고 일부 브라우저 특정 배열 mumbo-jumbo를 사용하여 액세스하는 것은 가능했습니다 (일반적으로). 그러나 getElementById()를 사용하는 방법은 훨씬 간단하며 모든 브라우저에서 작동합니다. 어떻게 사용했는지 설명하지는 못합니다.
window.onload = (함수 이름이 이 아니라이 아니라 괄호 안에 인수 목록이 있음)는 더 이상 올바른 방법이 아닙니다. 나는 매우 짧고 단순하기 때문에 그것을 사용했습니다. 독자가 정말로 중요한 것에 집중할 수있게 해줍니다.
<html>
<head>
<title>Example of setting a Form Input field</title>
<script type="text/javascript">
function showDefaultDate() {
var dateInputField = document.getElementById("dateInputField");
dateInputField.value = provideToday();
}
function provideToday() {
var currentTime = new Date();
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();
var dateString = month + "/" + day + "/" + year;
return dateString;
}
function initializeForm() {
showDefaultDate();
}
window.onload = initializeForm;
</script>
</head>
<body>
<form>
Today's Date:
<input type="text" size=" 25" id="dateInputField">
<input type="button" value="Miscellaneous Button">
<br>
Another Field:
<input type="text" size="30">
<br>
<br>
<input type="submit" value="Click Me When Done" style="margin-left: 20ex;">
</form>
</body>
</html>
http://stackoverflow.com/questions/802854/why-is-document-write-considered-a-bad-practice – mpm