2015-05-29 17 views
0

我有一個將文本保存到txt文件的函數。 它適用於自己的(當我有一個簡單的HTML和JS文件),但是當我把它添加到我的程序,它拋出這個錯誤:「無法讀取屬性'addEventListener'null」javascript中的錯誤

Cannot read property 'addEventListener' of null

(function(view) { 
    "use strict"; 
    var document = view.document, 
    $ = function(id) { 
     return document.getElementById(id); 
    }, 
    session = view.sessionStorage 
    // only get URL when necessary in case Blob.js hasn't defined it yet 
    , get_blob = function() { 
     return view.Blob; 
    } 

    text = "slavik's text"; 
    save_file = $('saveFile'); 
    text_filename = "filename.txt"; 

    documemt.getElementById('saveFile').addEventListener("submit", function(event) { 
     event.preventDefault(); 
     var BB = get_blob(); 
     saveAs(
      new BB(
       [text.value] 
       , {type: "text/plain;charset=" + document.characterSet} 
      ) 
      , (text_filename.value) + ".txt" 
     ); 
    }, false); 

    view.addEventListener("unload", function() { 
     session.text = text.value; 
     session.text_filename = text_filename.value; 
    }, false); 
}(self)); 

這裏的HTML部分:

<div id="leftColumn"> 
    <ul> 
     <li><a href="#" onclick="vaucherEntry(); return false; showVauchers()">Vaucher Entry</a></li> 
     <li><a href="#" onclick="settings(); return false;">Settings</a></li> 
     <li><a href="#" onclick="about(); return false;">About</a></li> 
     <!--<button type="submit" onclick="saveFile()" id='saveFile'>Save File</button>--> 

     <form id="saveFile"> 
      <input type="submit" value="Save file"/> 
     </form> 
    </ul> 
</div> 
+5

你有一個錯字。 'documemt'應該是'document'。如果這不能解決它,請確保在getElementById被調用之前DOM已準備就緒。 –

+0

你在網絡瀏覽器或任何應用程序中運行這個嗎? –

回答

1

我更新了你的代碼,使它看起來更清晰,我刪除了一些錯字錯誤,所以它現在不會拋出任何錯誤。

我剛剛創建了saveAS函數,因爲它在您的邏輯中需要並且缺少,因此請檢查與代碼的差異並修復它。

(function(view) { 
    "use strict"; 
    var saveAs = function(param1, param2, param3) { 
     console.log('you should do something with this params:'); 
     console.log(param1, param2);    
    }, 
     document = view.document, 
     $ = function(id) { 
      return document.getElementById(id); 
     }, 
     session = view.sessionStorage, 
     // only get URL when necessary in case Blob.js hasn't defined it yet 
     get_blob = function() { 
      return view.Blob; 
     }, 
     text = "slavik's text", 
     save_file = $('saveFile'), 
     text_filename = "filename.txt"; 

    document.getElementById('saveFile').addEventListener("submit", function(event) { 
     event.preventDefault(); 
     var BB = get_blob(); 
     saveAs(new BB([text], {type: "text/plain;charset=" + document.characterSet }), text_filename); 
    }, false); 

    document.addEventListener("unload", function() { 
     session.text = text.value; 
     session.text_filename = text_filename.value; 
    }, false); 
}(self)); 

Fiddle

相關問題