Как сравнить переменные из функции за её пределами?
Я задал переменные i и b, затем использовал их в функции библиотеки jQuery, после чего захотел сравнить их значения опять же вне функции, но не получается. Прекрасно понимаю, что все дело в области видимости и что условие не выполняется потому что переменные как были равны 0 так и остались, потому что действия в функции игнорируются вне её. Как исправить ошибку?
Простите за глупый вопрос, просто новичок в программировании...
$(document).ready(function() {
var i = 0;
var b = 0;
$(".button_one").click(function (){
i = i+1;
$(".button1 p").text(i);
})
$(".button_two").click(function (){
b = b+1;
$(".button2 p").text(b);
})
if(i>b){
$("h1").text("Win i");
}else if(i
$("h1").text("Win b");
}
});
Дело не в области видимости. Дело в том, что вы сравниваете i > b только при загрузке документа. К кликам по кнопкам ваше сравнения отношения не имеет. Вам нужно добавить условие сравнения на какое-то событие. Например на те же клики по кнопкам.
function getCompare(i, b) {
if (i > b) {
$("h1").text("Win i");
}
}
$(document).ready(function() {
var i = 0;
var b = 0;
$(".button_one").click(function () {
i = i + 1;
$(".button1 p").text(i);
getCompare(i, b);
})
$(".button_two").click(function () {
b = b + 1;
$(".button2 p").text(b);
getCompare(i, b);
})
});
DanKud, Большое спасибо за ответ, все работает! но если не сложно объясните пожалуйста почему мы, допустим, вызываем функцию getCompare в функции с классом .button_one, а затем и в функции с классом .button_two? чтобы записать численное значение i и b в функцию getCompare?
Roman123987, я прописал вызов функции и там и там, чтобы она срабатывала при клике и на одну и на вторую кнопку. Если вам надо, чтобы условие проверялось только при клике на первую кнопку, то во вторую кнопку функцию добавлять не надо. Мы же вешаем событие на кнопку, а внутри прописываем какие должны быть действия при клике. Одним из действий должен быть вызов функции. Вообще на самом деле делать так, как я вам написал, не совсем правильно с точки зрения построения кода. Функция должна возвращать значение, а потом уже с этим значением мы должны работать. Правильнее, опять же повторюсь, только с точки зрения логики кода, а не работоспособности, было бы например так:
function getCompare(i, b) {
if (i > b) {
return 'Win A';
} else if (i < b) {
return 'Win B';
} else {
return null;
}
}
$(document).ready(function() {
var i = 0;
var b = 0;
$(".button_one").click(function () {
i = i + 1;
$(".button1 p").text(i);
$("h1").text(getCompare(i, b));
})
$(".button_two").click(function () {
b = b + 1;
$(".button2 p").text(b);
$("h1").text(getCompare(i, b));
})
});
Alex, Да сам понимаю что тороплюсь, просто надо сайт сделать и есть необходимость в меню и форме обратной связи, быстренько прошёл основы javascript и начал разбираться в jquery. Само собой когда доделаю сайт займусь не поверхностным изучением.HTML + CSS есть уже неплохие знания, сайты верстаю без проблем(относительно любого уровня сложности), но сайт без функционала это ужас сами понимаете...