2016-06-23 2 views
-1

У меня есть следующий код в HTML, который создает кнопку, которая при нажатии вызывает некоторые вопросы на моей странице, отлично работает.Доступ к переменной из другой функции

<input type="number" name="quantity" id="num_questions" min="1" max="99"><br> 
<input type="button" name="go" id="go_button" value="Go" onclick="createQuestions()"><br> 

Однако в моей функции createQuestions() я определил переменную в JavaScript, которая основана на ввод номера из моего HTML кода, как показано выше.

var number = document.getElementById('num_questions').value; 

У меня есть другая кнопка, которая вызывает отдельную функцию, но я нужно что номер переменной I определяется локально в другой функции. Есть ли способ захватить эту переменную и использовать ее глобально? Я попытался определить его вне моей функции, но поскольку событие onclick вызывает только одну функцию, оно не будет создавать переменную.

Другая кнопка:

<input type="submit" name="submit" value="Create Tree" onclick="displayData()"> 
+0

Вы должны иметь доступ к переменной 'number' в любом месте, если вы определяете ее глобально. Когда вы запускаете функцию 'createQuestions()', вы можете присвоить ей значение. Можете ли вы разместить остальную часть своего JS здесь? Было бы полезно полностью решить эту проблему. – Coleman

+0

Возможный дубликат [Определить глобальную переменную в функции JavaScript] (http://stackoverflow.com/questions/5786851/define-global-variable-in-a-javascript-function) – billynoah

ответ

2

По How to declare a global variable in a .js file вы можете определить переменную перед вызовом любой функции, а затем использовать ее в разных функциях.

var global1 = "I'm a global!"; 

function setGlobal() { 
    global1= document.getElementById('num_questions').value; 
} 
function testGlobal() { 
    alert(global1); 
} 
+0

Но когда я вызываю эту функцию setGlobal() при нажатии кнопки переменная не будет объявлена, так как нажатие кнопки вызывает ТОЛЬКО функцию. –

+0

Вы не можете объявить ее внутри функции, но вы можете переназначить эту переменную. И он будет доступен, потому что он глобальный. –

+0

Aha! Там мы идем, это именно то, что мне нужно. Интересно, почему я никогда об этом не думал. Благодаря! –

1

Это не представляется возможным получить доступ к локальным переменным функцию, из-за пределов этой функции, так что у вас есть четыре варианта:

  1. объявить глобальную переменную!
  2. Написать отдельную функцию, которая захватывает значение для вас
  3. Создать объект, который содержит значение, которое нужно
  4. получить значение из вашей новой функции, используя getElementById()
Смежные вопросы