原代碼問題
- `document.all` 僅 IE 支持,現代瀏覽器不可用。
- HTML/JS 混雜、縮進混亂,難以維護。
- `onmouseover` 等內聯事件過時。
重構示例
<form id="loginForm" action="login.jsp" method="post">
用戶名:<input type="text" name="uname" required><br/>
密碼:<input type="password" name="upwd" required><br/>
<button type="submit"><img src="login_btn.png" alt="登錄"></button>
</form>
<script>
document.getElementById('loginForm').addEventListener('submit', function(e) {
const uname = this.uname.value.trim();
const upwd = this.upwd.value.trim();
if (!uname) { alert('用戶名為空'); this.uname.focus(); e.preventDefault(); return; }
if (!upwd) { alert('密碼為空'); this.upwd.focus(); e.preventDefault(); return; }
// 正常提交
});
</script>
優勢
- 語義化 HTML5 (`required`、`button type=submit`)。
- 無阻塞 JS,關注點分離。
- 跨瀏覽器兼容。