就是這個問題$("input:eq(2)").attr('value',function(i, val)
我以提問的方式,說說我的理解,希望評論指出我的錯誤。
<form> ????????<input?type="text"?value="設置value"?/> ????????<input?type="text"?value="獲取value"/> ????????<input?type="text"?value="回調拼接value"?/> ????????<input?type="text"?value="刪除value"?/> ????</form> ???? ????<script?type="text/javascript"> ???? //i是當前選擇元素的索引值,val是當前選擇元素的當前屬性值 ???? $("input:eq(2)").attr('value',function(i,?kengdie){ ???? return?'通過function設置'?+?kengdie ???? }) ????</script>
先把多余的刪掉,然后把原本的變量val改成kengdie,對!
1、首先,$("input:eq(2)").attr('value',function(....))設置(替換)當前input的value值為function(...)
2、function(i,kengdie),i就是指當前($("input:eq(2)"))的索引值,kengdie這個變量是獲取當前的value值,因為.attr('value',function(....))目的是要設置value值,所以function(i,kengdie)就是獲得當前的value值(據說是回調函數???)
3、return?'通過function設置' + kengdie。容易理解。
所以結果是:“通過function設置回調拼接value”。
好像input 的長度不夠啊真坑爹,誤以為看到的是“通過function設置回調拼接val”,其實把文字拉右邊就能看到ue了。加上坑爹的變量名val!誤以為是變成val!
所以就這樣理解吧。
2017-07-20
大概像你說的一樣,
attr的第一個參數是獲取屬性名,第二個參數是利用函數改變屬性值。
你這樣看這個function,傳入兩個參數,第一個參數接收eq的索引值,進行定位,測試:因為當你把eq(2)改為eq(1)時,對應的第二條input就會顯示為通過function設置XXX。
第二個參數val,就如你所說的kengdie,接收--當前attr獲取的屬性名--的屬性值,用--隔開看起來更容易理解一點
最后用return返回添加的內容和屬性值
eg:你會更好理解用函數改變屬性值,沒有傳參,理解起來就沒有那么困難。
首先,第三條input需要加一個name
(把name的屬性值設為value的屬性值)
可以在代碼區測試一下。相信你能理解。加油。
2017-09-13
看不懂耶
2017-07-14
我還是初學者