HTML里為什麼一些input里要設置value為空?

如圖,好幾個網站上看到text&這些可以不設置value的值卻在裡面強行加了value=「」()

我也想試試,但沒思路:

對於text&,加value是為了在控制項里加入默認文本,這也做可能是因為某個值是用戶經常輸入的;

不加value是正常的,因為對於text&,name是和用戶輸入的數據綁在一起打包送給伺服器腳本的,如果是為了防止用戶不輸入這個就提交,會用required;

如果是防止控制項的name沒數據對應,那也應該用value=一個空格字元之類的值吧,為什麼是空的?

問了別人,說是編輯器自己加的,真是這樣么?

我個人感覺這種是不是Web健壯/安全性之類的原因?考慮到一些語言里對空值、null等的討論,我來問問~


沒什麼不能加的啊……對於百度的情況來說,當你搜索了一個關鍵詞之後,頁面刷新,接下來你搜索的關鍵詞會顯示在搜索框裡面,這個顯示就是靠value來實現的,是後端伺服器根據queryString渲染出來的。對於後端伺服器來說,既然有的時候要渲染value這個屬性,那還不如所有情況下都渲染實現起來更簡單。


因為這樣一來後台就不會有參數為 null 的錯誤了。

看來你沒有過活在對 null 錯誤的恐懼中的經歷。

我其實是不建議這麼做的,恐懼 null 是因為你所有的後台 Web 框架太傻。


HTMLInputElement

HTML Standard

DOM概述

題主,這裡沒有所為的可以不設置值,卻在裡面強行加了 value = "" ,這裡加了這一句,只是告訴HTML解析器,這個input的 value「值」為 等號後面的數據。本質上是調用HTMLInputElement 的value的api,它有個默認值 HTML Standard 為empty string


就是為了後端方便處理參數罷了,沒什麼神秘的,值得注意的是即便是做空值處理,Google和百度的做法是不一樣的,百度就是後端對query參數進行響應返回渲染頁面,所以當值為空的時候也會提交一次,Google做了提交攔截,當你值為空的時候不提交query

所以當你用百度的時候沒有查詢字元串也會提交一個landing page的渲染結果給你而不是什麼變化也沒有


前面的大神都說了.... 沒什麼神秘的...就是後端好處理...

ps: 初始化數據時順手賦予空值確實是個好習慣.....


&