2016-12-07 9 views
-1

複数のボタンがあるページがあり、それぞれが新しいウィンドウを開くロード機能に関連付けられており、ページのロード後にクリックするボタンをカスタマイズするように設定されています。 私は、オブジェクトにオプションを格納しています。使用するオブジェクトはcurrentTileです。ただし、ページが読み込まれると、表示されるテキストはundefinedと表示されますが、load()にはcurrentTileが既に定義されていませんか?プロパティが関数で定義されているときにプロパティが定義されていないのはなぜですか?

function tile(question, answer, points) { 
    this.question = question; 
    this.answer = answer; 
    this.points = points; 
} 

var currentTile = {}; 

var testTile = new tile("How are you?", "Fine", 200); 

function load(tile) { 
    currentTile = tile; 
    window.open("question.html", "_self"); 
} 

function setText() { 
    document.getElementById("qSlot").innerHTML = currentTile.question; 
    document.getElementById("value").innerHTML = "" + currentTile.points + ""; 
} 

load()はHTMLでこのように呼ばれている:事前に <td onclick="load(testTile)"></td>

感謝。

+2

ここで、load関数を呼び出していますか? – Geeky

+3

'load'(' tile')に渡された値を 'currentTile'に代入していますが、あなたは' load'がどのように呼び出されているか表示していません。あなたは関数に値を渡していないと推測します。 –

+0

私はhtmlコードで '' –

答えて

1

あなたは現在のページがquestion.htmlであると仮定して、ページをリロードするのと同じくらい良いwindow.open("question.html", "_self");を使用しています。したがって、ページがリロードされると、JSコードはvar currentTile = {};のステートメントを含めて、すべて繰り返し実行されます。そのため、currentTile.questioncurrentTile.pointsの場合はundefinedになります。

window.open("question.html", "_self");の代わりにsetText()を直接呼び出すと、テキストが正しく表示されます。 (今どこにsetText()に電話していますか?)

関連する問題