揚聲器1:現在在這最後一個例子, 記得,我們​​穿插了一些 JavaScript代碼我的HTML裡面, 具體而言,裡面的價值 要求提交的屬性 對於表單標籤。 現在的小頁面,這 不是什麼大不了的。 但作為一個網頁變得更長,更 複雜的,簡單地把你的 JavaScript代碼在這裡和那裡裡面 的屬性的值是不 最好的設計。 最好的,如果我們的因素,並出 至少把它的內部 script標籤集中。 如何做到這一點? 好吧,讓我們回到我的表單標籤和 先刪除這個屬性和它 重視完全。 然後在這裡,而不是限定 函數調用打招呼,讓我們掛在 到的代碼行,最終我們 仍然要執行和替換 在迎接功能如下。 Document.get元素通過ID 引用引文演示 - 在那裡演示,召回,是獨一無二的 標識符形式本身 - 點上提交,這是召回的名字 事件處理程序,其中 我們感興趣。 而且我們指派的提交處理程序 值這實際上是一個 函數本身。 現在請注意,我不是真正 這裡調用一個函數。 我不是定義一個匿名的, 否則稱為lambda函數, 這些大括號之間指定 一串代碼,應該 其實是可以執行的。 特別是,我想代碼 執行是行,我有 前,然後讓我們添加到 返回false,因此,這種形式是不 最終提交到結束遠程Web 在傳統方式的服務器。 現在讓我們保存這個文件,打開它 在瀏覽器中,並看看會發生什麼。 http://localhost/dom-1.html。 現在,讓我們輸入我的名字, 大衛提交。 並沒有什麼似乎已經發生了 除了我的網頁的URL似乎 已經改變,就好像形式是 實際提交到同一個文件。 現在為什麼會這樣呢? 嗯,我需要一些更多的信息。 因此,讓我們去進取,不斷開拓Chrome的 開發者工具,這樣我實際上可以 看在控制台窗口中看到 如果我做錯了什麼事。 我可以訪問通過 一對夫婦的方式。 其中之一就是通過這個菜單在這裡, 然後在工具,然後下降到 開發者工具。 並注意在這裡的控制台選項卡, 有一個未捕獲的錯誤類型,不能 在提交空的設置屬性。 現在為什麼會這樣呢? 以及早在我的源代碼在這裡,通知 上提交,我認為是一個 其元素的屬性 唯一標識符是演示。 一個元件,同樣,僅僅是 在樹中的節點。 這樣看來,我的瀏覽器不 認為該元素 或節點存在呢。 而事實上,它沒有。 回想一下,一個網頁被解析或讀 通過一個網絡瀏覽器,從上到下, 左到右。 所以當JavaScript代碼是 遇到的,典型地,它的執行 的時候了。 但在這種情況下,我們甚至還沒有得到 但對DOM的一部分, HTML中,在該表格具有獨特的 標識符演示已被宣布。 因此,我們正在努力執行我的 該節點之前的JavaScript代碼甚至 存在於樹的,當然,是 有問題的,因為那麼可以肯定, 元素本身將是空的 在該時間點。 因此,如何解決? 那麼,我們有幾個解決方案。 但是,讓我們通過重新嘗試最簡單的 從我的頭上腳本標籤 標記為我的身體,但具體而言,對 我的網頁的本體的底部,以便 它的節點下方 和問題。 具體地講,讓我們突出和切 開放的標記和腳本結束標記 和重新定位的代碼,整幢 這裡的文件的底部。 現在這不一定是最乾淨的 設計的,但至少它會 執行操作的正確順序。 讓我們保存文件, 重新在我的瀏覽器。 讓我們刷新頁面,重新輸入我的名字, 還有,您好大衛又回來了。