2017-01-08 3 views
0

編集:外部の.jsファイルの "注文事項"をHTMLで理解する

さて、できるだけ小さなコードを使用して問題を説明しようと思います。

changetext()関数が関連付けられている選択ドロップダウンメニューがあります。ドロップダウンメニューで値が選択されるたびに、タグ内のテキストが変更されます。

関数へのスクリプトは、外部のjsファイルに保存され、HTMLファイルの一番下に配置されます。

jsファイルの中には、このようなものがあります。このファイルを使用することで、JS

var selectormenu = document.getElementById("selector"); 
var spanTag = document.getElementById("texthere"); 

function changetext(){ 
    if(selectormenu.value == "one"){ 
     spanTag.innerHTML = "one"; 
    } 
} 

、私は私のブラウザコンソールではTypeErrorを取得します。しかし、関数内にvar selectormenuとspanTagを置くと、スクリプトが機能します。

+0

JavaScriptは大文字と小文字を区別します。だから 'soandso!== Soandso' –

+0

' div'は実行時にページに存在しないことを意味します。それが「ヌル」の理由です。より多くの文脈を見ることなく、あなたのdivがなぜページにないのかは分かりません。 – Jacob

+0

[私のWebサイトの何かが動作しません。リンクを貼り付けることはできますか?](http://meta.stackoverflow.com/questions/125997/something-on-my-web-site-doesnt-work-can-i-just-paste-a-link -to-it)です。外部リソースがなくなったり修正されたりすると、理解されるべき外部リソース(JavaScriptファイルなど)に依存する質問は役に立たなくなります。代わりに[MCVE]を作成し、それを質問自体に入れてください。 – Quentin

答えて

1

編集:質問の感度が固定されているので、私は自分の答えを調整しています。 document.getElementByIdには何かを選択する必要があるため、既に作成されているDOM要素が必要です。次に、関数の名前を括弧の前に付ける必要があります。最後に、関数を呼び出す必要があります。なぜなら、関数が呼び出されるまで実行されないからです。

<div id="divid>Hello World!</div> 
<script> 
var soandso = document.getElementById("divid"); 

function statsChange() { 
    soandso.innerHTML = "123"; 
} 
statsChange(); 
</script> 
+0

申し訳ありません。私は自分の電話に出ているので、自動資本化が有効になっています。今修正されました。 – Roger

+0

jsfiddleやcodepenなどのコードへのリンクがありますか?私が気づいている事は、1) 'onclick'は普通のJSのメソッドではなく、' addEventListener'を使う必要があります.2)イベントリスナーは関数内にある必要はありません。 https:// developer .mozilla.org/ja-JP/docs/Web/API/EventTarget/addEventListener –

+0

しかし、onclickはブラウザコンソールで示すように変数をnullにしますか?私は私のOPで与えられたコードが一例であることを指摘したいと思います。 – Roger

関連する問題