2013-11-07 7 views
0

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

Когда я прошу: цвет, а затем выполните ответ: розовый, фиолетовый или зеленый, он переходит к последнему утверждению; else if(questionID == -1), который не является моим намерением.

Как я могу исправить это поведение? Я запускаю сценарий локально.

var questionID = -1; 

function askQ() { 
    var findme = document.getElementById('askBox').value.toLowerCase(); 
    var dontUnderstand = new Array(); 
    dontUnderstand[0] = "Excuse me, What did You say ?"; 
    dontUnderstand[1] = "Sorry, I cant understand You now. ^_^"; 
    dontUnderstand[2] = "Sorry!, I got to go now... CU !"; 
    dontUnderstand[3] = "ohh... Can you repeat that one more time ?"; 
    var randomIndex = Math.round(Math.random() * 3); 
    if (findme.match(/(age|old)/)) { 
     document.getElementById('bubble').innerHTML = "ohh,, I am " + 
      obj1.age + " years old, How old are You ?"; 
    } 
    if (!isNaN(findme)) { 
     document.getElementById('bubble').innerHTML = "ohh.. that's kinda old !"; 
    } 
    if (findme.match(/(color)/)) { 
     document.getElementById('bubble').innerHTML = "My favourite color " + 
      " is Purple, What's yours ?"; 
     questionID = 6; 
    } 
    if (findme.match(/(pink|purple|green)/) && questionID == 6) { 
     document.getElementById('bubble').innerHTML = "well...that's cute !!"; 
     questionID = -1; 
    } 
    if (findme.match(/(hi|hello)/)) { 
     document.getElementById('bubble').innerHTML = "Hi there, nice to meet You !"; 
    } else if (questionID == -1) { 
     document.getElementById('bubble').innerHTML = dontUnderstand[randomIndex]; 
    } 
} 
+0

_When я спросить: цвет, а затем следить с ответом: пи nk, фиолетовый или зеленый, он переходит к последнему утверждению; 'else if (questionID == -1)', который не является моим намерением_ -> Тогда почему вы устанавливаете 'questionID' в' if'-block до '-1' – Andreas

+0

Какое сообщение об ошибке вы получаете в отладке консоль? – jeff

+0

Ваш 'if (findme.match (/ (розовый | фиолетовый | зеленый) /) && questionID == 6) { ' задает 'questionID'' -1', который затем (во время того же вызова функции) соответствует условие 'else if (questionID == -1) {'. Вы можете исправить это, сделав свой последний оператор 'if'« else if »предыдущего. – Matt

ответ

0
if(findme.match(/(pink|purple|green)/) && questionID == 6){ 
       document.getElementById('bubble').innerHTML = "well...that's cute !!"; 
     // You're setting it to -1. 
     questionID = -1; 
    } 

Кроме того, почему бы не ограничить загрязнение глобального объекта, сделав questionID свойством функции askQ.

askQ.questionID = 6

1

Я бы начать addint это в верхней и нижней части вашей функции:

console.log('starting', questionID); 


console.log('ending', questionID); 

Затем с помощью журнала отладки, чтобы посмотреть, что происходит ... или вы могли бы добавить часы и шаг через код, используя поджигатель или хром

Также интересно, почему вы не используете JQuery ...

+1

Поскольку jQuery не является ответом на все вопросы – jeff

+0

@jeff конечно - но в этой библиотеке было гораздо больше тестов (особенно кросс-браузер), чем мы хотели бы повторить - кто хочет иметь дело с вызовами поддержки, но это не работает в опере! "? – ErichBSchulz

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