取值賦值常用的方法,html(),text(),val()
單獨說說textarea
.它是表單元素,val()可用
.它是閉合標簽,html(),text()可用
這三個都可以取值賦值,會有怎樣的效果?舉例
<textarea class="test">111</textarea>
一、取值
- textarea默認值111
- 在輸入框內輸入wwww
可見text(),html()沒有獲取到改變后的值,
截一下源碼中關鍵的部分,就知道原因了,從jquery源碼中可以看出,
val()方法通過遍歷元素的value值
text()方法是通過遍歷元素的childNodes,獲取每個子節點的nodeValue,拼接成字符串返回。
html()通過元素的innerHTML返回需要取的值
再看textarea的childNodes和value,innerHTML是什么
默認時:
在輸入框鍵入后
總結:text(),html()方法只能夠獲取到textarea的初始化文本值。 val() 方法不僅可以獲取textarea的初始化文本值,當文本值改變時,也能正常獲取到。
二、賦值
1.默認為111,只有val(‘222’)改變了輸入框值
html(‘444’),text(‘333’)后對應的nodeValue,innerHTML值都修改了,但是value值絲毫未動搖
2.默認1111
.執行html('222');框內值變化,對應innerHTML,nodeValue,value變化
.執行text('333'),框內值變化,對應innerHTML,nodeValue,value變化
.在框內輸入3334,對應value變化,innerHTML,nodeValue不變
.再執行text('444'),框內值不變,對應innerHTML,nodeValue變化,value不變化
這就是為什text(),html()賦值時而好用時而不起作用的原因
總結:value是一頭沉睡的獅子,通過val()賦值,或者鍵入改變輸入框的值,都是在喚醒這頭獅子;一旦value蘇醒,text(),html()都可以歇菜了.
文章轉自:https://blog.csdn.net/wangjiaohome/article/details/81709938