2017-03-24 5 views
1

Framework7でアプリケーションを作成していて、ブラウザのローカルストレージにテキストを送信できるセクションを追加しようとしています。フォームを使用してindex.htmlページのデータを送信すると問題なく動作しますが、他のページで使用するとUncaught TypeError: 'addEventListener' of null 'プロパティを読み取れません。私は同じ場所の各ページの下にあるスクリプトsrcをリンクしているので、なぜこのエラーが出るのか分かりません。受信 'Uncaught TypeError:インデックス以外のすべてのページで' addEventListener 'of null'プロパティを読み取れませんか?

HTML

<form> 
    Text: <br> 
    <input type="text" id="Input"  name="addText"> <br> 
    <button id="Submit">Save</button> 
</form> 

Javascriptを

var submit = document.getElementById("Submit"); 

    submit.addEventListener("click", function() 
    { 
     var Input = document.getElementById("Input").value; 
     localStorage.setItem("Text", Input); 
     alert("Your text has been saved"); 
     console.log("Text saved"); 
    } , false); 
+0

を探す(https://jsfiddle.net/nyhub7vc/) - :あなたはこのような機能を使用することができます - 私は何かが間違っていると思う。 –

答えて

0

Framework7には、jQueryのような機能があり、dom7または$$と呼ばれています。

$$("#Submit").on("click",function() { 
    var Input = $$("Input").val(); 
    localStorage.setItem("Text", Input); 
    alert("Your text has been saved"); 
    console.log("Text saved"); 
}); 

私はJSフィドルに-あるように動作するようにコードを取得することができたドキュメントにhere

0

これは、あなたが行うとき以来起こる:

var submit = document.getElementById("Submit"); 

submitはとなり送信ボタンは他のページでは使用できないため、となります。

すぐに解決できるのは、送信ボタンが現在のページに存在するかどうかを確認してから、イベントリスナーを追加することです。

if(submit){ 
    submit.addEventListener("click", function() { 
     var Input = document.getElementById("Input").value; 
     localStorage.setItem("Text", Input); 
     alert("Your text has been saved"); 
     console.log("Text saved"); 
    } , false); 
} 
+0

私はすべてのページにフォームを追加しました。送信ボタンがすべてのページに表示されるようにしました。しかし、私はそれを望んでいるページのフォームに123456789を提出しました。それはURLに '/?addText = 123456789'を追加し、それをlocalstorageに保存しません。 (編集:index.htmlでこれをやっていないことを念頭に置いてください) –

+0

ボタンタイプについては、https://www.w3schools.com/tags/att_button_type.asp – Orangesandlemons

+0

のボタンを明示的に追加する必要があります。次のようにする必要があります:

関連する問題