Uncaught TypeError: document.getElementsById is not a function
- 2022 年 4 月 3 日
- 筆記
今天部落客終於開始攻關javascript(俗稱js)了,不過要注意了,它和java可是一丁點關係都沒有,就像老婆餅和老婆一樣。
下面就讓我們來討論一下部落客這次犯下的低級錯誤吧
一、背景(解決方法在文末)
今天部落客要實現的內容是,點擊按鈕設置後,會獲取input文本框內輸入的文本內容,程式碼如下(會報錯):
<div class="box1">屬 性:<input type="text" class="sub1" placeholder="請輸入CSS屬性"></div> <div><input id="sub" type="submit" value="設置"></div> <script> var SubOneValue = document.querySelector('#sub') SubOneValue.onclick = function (){ Sub = document.getElementsById('sub1') console.log(Sub.value) </script>
頁面布局如下(上面達到程式碼不會顯示屬性值這一行元素的內容)(好吧,部落客偷了個懶):

這裡需要注意:
console.log(Sub.value)
這行程式碼的目的是用來顯示input輸入框內輸入的內容的,類似於python中的print()函數,讓我們可以更直觀的判斷程式碼運行是否正確
二、解決辦法
這裡運行上面的程式碼會出現如下報錯:

解決辦法就是把Elements的s去掉就沒問題了(是不是很簡單)
False:Sub = document.getElementsById('sub1')
True:Sub = document.getElementById('sub1')
針對中二個低級的錯誤,部落客一開始是吧屬性值設置成了class,而不是id(為了試試通過class查找標籤的方法)。嘗試完畢,部落客為了圖方便直接把後面的ClassName修改成了Id,就導致了elements後面的s沒有刪掉,因為id是唯一的,所以對應的元素標籤只能是一個,而不像class的不唯一可以搜的多個標籤。
不過需要注意的是,按鈕的屬性值最好設置id,不要設置成class,因為class的屬性名可以重複使用在其他標籤上,而id則是唯一對應的,這樣會避面後期一些事件的觸發失敗問題。
今天的分享就到這裡啦~
感謝閱讀~
end...

