0

Всем привет!

Помогите, пожалуйста, решить проблему по JS. Нужно вытянуть переменную "chosenClass" с его значением с функции, чтобы с ней дальше работать.

Заранее спасибо.

----JS----

(function(){
    var elements = document.querySelectorAll('.items > span');
    for (var i = 0; i < elements.length; i++){
        elements[i].onclick = function(){
            document.getElementById('userResult').innerHTML = this.innerHTML;
            var chosenClass = this.childNodes[0].classList[3];
        }
    }
})();

https://jsfiddle.net/webEugene29/ot4men92/

webEugene
  • 195
  • 1
  • 1
  • 9

1 Answers1

2

Вы можете объявить эту переменную вне функции, т.е. так:

var chosenClass = значениеПоУмолчанию;
(function(){...})();

либо сделать так: window.chosenClass =..., и ваша переменная станет глобальной.

selya
  • 4,439
  • Спасибо за Ваш ответ, но что то все равно не получаеться. – webEugene Oct 22 '16 at 23:16
  • https://jsfiddle.net/webEugene29/6q8pwd99/ - закинул полностью код, возможно неправильнов другом месте. Выдает сразу null, а нужно значение с функции. – webEugene Oct 22 '16 at 23:18
  • 1
    Вы понимаете, что пока функция не будет вызвана, никакого "значения из функции" там и быть не может? Это значит, что вместо null вам нужно задать значение по-умолчанию, которое будет использоваться до того, как функция изменит вашу переменную. – selya Oct 22 '16 at 23:36
  • Если поставить по умолчанию, то скрипт сравнения compare() сразу будет обрабатываться при перезагрузке/загрузке сраницы, а нужно, чтобы обрабатывался только после нажатия на кнопку: – webEugene Oct 22 '16 at 23:53
  • – webEugene Oct 22 '16 at 23:53
  • То есть логика такая: выбор какого то из трех елементов один, он присваивается переменной "chosenClass " и автоматом вытягивается с самовызывающиеся функции в другую переменную (то есть становиться глобальным). И приклике на кнопку сравнить функция compare() срабатывает взяв значение этой переменной. – webEugene Oct 22 '16 at 23:58