[問題] 有關return

作者: washqwe (阿蹦)   2015-11-26 11:50:00
http://i.imgur.com/QbiYgKU.jpg
想請問上圖點選click時不會work的原因,另外請問function只有在需要回傳值才會用retur
作者: icydream (巧虎)   2015-11-26 13:34:00
改成tes.onclick=makeSizer; 試試
作者: washqwe (阿蹦)   2015-11-26 14:19:00
但這樣就沒有傳參數進去了
作者: illl (ill!)   2015-11-26 14:38:00
closure
作者: washqwe (阿蹦)   2015-11-26 14:56:00
這是從閉包範例改來的,但想知道為什麼這樣不work
作者: CaptainH (Cannon)   2015-11-26 15:09:00
新手最常犯的錯誤就是 寫個"work"就以為人家知道是什麼
作者: washqwe (阿蹦)   2015-11-26 15:16:00
請問樓上這位老手要怎麼改呢
作者: Peruheru (還在想)   2015-11-26 16:19:00
我也不懂中文打一打還要切換英文打work不打"動"的原因XD還有你原本的問題好像被你自己切掉了?
作者: washqwe (阿蹦)   2015-11-26 16:25:00
沒放任何互動元素用動適當嗎,為何要鑽研在詞而非問題上?切掉為不重要的部份
作者: Peruheru (還在想)   2015-11-26 16:30:00
適當,程式碼就是一個動作,不管看不看得到提供幾個方向1.程式碼執行時機 你的js執行時元素是否還沒產生?2.語法錯誤 就圖片看來,你的第5行少了分號,第6行多了3.瀏覽器支援 5px的size在chrome似乎無效,太小了然後是比較進階的觀念,tes.onclick=makeSizer(20)意思並不是"在tes的onclick事件時執行makeSizer(20)"而是"在tes的onclick事件被放了makeSizer(20)的[結果]"你簡單在makeSizer函式內多加一行alert('!');,你會發現網頁一開始就跳了兩次訊息,但你只希望一開始跑一次反而在你按下去時不會顯示訊息,因為你沒有綁到事件第六行改這樣 tes.onclick=function(){makeSizer(20);};你就會發現有效果了如果你希望綁事件時執行特定參數,就得用閉包去包住他閉包會產生一個封閉環境,保存了宣告當時包含的數值不用閉包,就無法用這種方式宣告事件只能考慮寫成元素內的程式碼<a href="#" onclick="makeSizer(12);">12</a>安內乾五撩蓋?
作者: washqwe (阿蹦)   2015-11-26 16:51:00
為何在makeSizer裡把document.body...移入return就可執行呢
作者: Peruheru (還在想)   2015-11-26 16:55:00
因為那樣會變成回傳一個"動作"呀然後onclick就會接收到這個程式回傳結果的"動作"可是這樣一來還是閉包喔,在function裡面回傳動作這件事就算是閉包了等於是你在function裡面回傳另外一個function另外5的size好像可行,我以前試不行以為現在也是
作者: washqwe (阿蹦)   2015-11-26 17:02:00
http://i.imgur.com/mFJRYTl.jpg 請問這樣12沒動的原因是什麼
作者: Peruheru (還在想)   2015-11-26 17:03:00
大概是因為你包太多層了,所以執行時只是一直給予事件而沒有去執行事件,剛才說的方法選一個做就好了不要全部都用上去我剛才寫的方法,是找一個仲介幫我做事而你問的return方法,則是找人要了仲介的地址兩個合起來,變成我找一個仲介,幫我要仲介的地址結果仲介除了要地址以外沒有做任何事而且仲介甚至沒把地址給我仲介或仲介的地址,選一個就好了,就可以委託他做事了
作者: y2468101216 (芸)   2015-11-26 17:15:00
https://goo.gl/crizVA 我覺得MDN講得很清楚了
作者: ericdoctor (小黑)   2015-12-02 09:38:00
style.font-size = 你沒有dash
作者: washqwe (阿蹦)   2015-12-02 10:27:00
這不是css...

Links booklink

Contact Us: admin [ a t ] ucptt.com