搜尋

首頁  >  問答  >  主體

javascript - js中onchange事件綁定怎麼傳參?

<input type="file" type="file" accept="image/*" onchange="previewImage" multiple/>

onchange裡面填入previewImage能在previewImage函數裡面取得到一個值(很多人都會寫成e),裡面有files,這個e是什麼?
如果在onchange裡面填入previewImage('segmentfault'),在previewImage函數裡面取得到只能取得到segmentfault,那個e跑哪了?想同時獲取怎麼辦?

還有就是previewImage('segmentfault')previewImage的差別?

previewImage的時候不是只是個引用麼,為什麼會直接呼叫?

求推薦一本js的教學或書,現在只會用個jq,用個vue,用各種js函式庫。 。但是碰到問題總解決不了,沮喪。 。想從基礎的學起,求推薦本書

PHPzPHPz2770 天前803

全部回覆(3)我來回復

  • 高洛峰

    高洛峰2017-05-19 10:20:17

    previewImage的參數可以是this,這裡指的是這個標籤。
    透過this.files來操作文件,例如this.files.length是文件的個數,this.files[index]指向對應的文件。
    previewImage的參數可以是也可以是event,指的是change這個事件。

    至於加入事件處理程序,可以
    1.直接把js程式碼寫在引號裡,如

    <input type="file" accept="image/*" onchange="alert
    (event.type);" multiple/>
    

    2.onchange = 函數名,函數宣告在腳本中。如果"previewImage"不加()是不會執行的吧。

    <input type="file" accept="image/*" onchange="previewImage
    (this)" multiple/>
    <script> function previewImage(obj){
                alert(obj.files.length);
            };</script>
    

    3.DOM0級事件處理程序

    <input type="file" accept="image/*" multiple/>
    <script> document.getElementsByTagName("input")[0].onchange = function(){
                alert(event.type);
            };</script>
    

    4.DOM2級事件處理程序

    <input type="file" accept="image/*"  multiple/>
    <script> document.getElementsByTagName("input")[0].addEventListener("change",function(){
                alert(event.type);
            });</script>`
    或者IE7 8中为`<script> document.getElementsByTagName("input")[0].attachEvent("onchange",function(){
                alert(event.type);
            });</script>
    

    我可能有寫錯的地方,最好的方法是自己實踐一下。
    書我看的是《JavaScript高級程式設計》第三版。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-19 10:20:17

    e表示event
    可以通过this获取相关files資料;
    推薦《JavaScript高階程式設計》

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-19 10:20:17

    基礎js 推薦犀牛書--JavaScript權威指南(第6版)

    回覆
    0
  • 取消回覆