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: 初始化數據時順手賦予空值確實是個好習慣.....
&
&
在現在這兩種寫法基本等同, 但是有些編輯器默認就帶了type的
和這個道理一樣吧
為了讓用戶每次打開百度首頁的時候,文本框都是空的,可以直接輸入。不這麼寫的話,瀏覽器可能將文本框填充為上次用戶輸入的值。
沒數據對應的這個問題,「空」和一個「空格」,完全是不同的兩個概念好嗎。
你沒事給控制項設置默認的空格數據,你之後怎麼處理數據?明明為空處理很簡單,但是現在你卻要檢測是不是只有一個空格。
而且處理數據的時候,用戶自己輸入的東西可能還在空格後面,你還要剝離掉這個開始的這個空格。
給自己找麻煩很有意思?
另外,初始化數據時順手賦予空值是個好習慣。雖然 html 可以不這麼講究,但是講究起來反而可以讓你以後的開發更加放心。
所以一些自動生成的代碼,都會有一些給人感覺很「多餘」的內容。其實這是防止問題出現的一些保底手段而已。
input加回車,編輯器自動生成,不用也不會管
推薦閱讀:
※Egg + Vue SSR 組件非同步載入
※webpack 進階
※前端構建系統 Gulp 的使用與常用插件推薦 - 上篇
※2016前端探索總結——前端工程與未來
※用 husky 和 lint-staged 構建超溜的代碼檢查工作流