2016-12-07 4 views
-1

У меня есть страница с несколькими кнопками, каждая из которых привязана к функции загрузки, которая предназначена для открытия нового окна, а затем настройте ее на какую кнопку вы нажимаете после загрузки страницы. Я сохраняю варианты в объектах, с тем, который используется в currentTile. Однако, как только страница загружается, текст, который появляется, говорит undefined, но разве я еще не определил currentTile в load()?Почему свойство не определено, когда оно определено в функции?

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

где вы вызываете функцию нагрузки? – Geeky

+3

Вы присваиваете значение, переданное 'load' (' tile'), 'currentTile', но вы не показываете, как вызывается' load'. Предположим, что вы не передаете значение функции. –

+0

Я вызываю его в html-коде, '' –

ответ

1

Вы используете window.open("question.html", "_self");, который так же хорош, как и перезагрузка страницы (если ваша текущая страница question.html). Поэтому, когда страница перезагружается, ваш JS-код будет запущен снова, включая оператор var currentTile = {};. Вот почему вы получаете undefined за currentTile.question и currentTile.points.

Вместо того, чтобы звонить window.open("question.html", "_self");, немедленно вызовите setText(), и он отобразит текст правильно. (Где вы звоните setText() прямо сейчас?).

Смежные вопросы