- const targetBlock = element.closest('.perenesti-syuda');
+ const targetBlock = element.closest('.block').querySelector('.perenesti-syuda')
qty[i].parentElement.querySelector('.price-amount')
if (newArr === [])
function getChangeListener(selectNameElement) {
return function() {
const fileName = this.files[0].name
selectNameElement.innerText = filename.slice(0, 15)+ "...." + filename.substring(filename.length - 5);
}
}
fileInput.addEventListener('change', getChangeListener(selectName))
fileInput2.addEventListener('change', getChangeListener(selectName2))
Почему консоль выдает ошибку Uncaught ReferenceError: arr is not defined?
function f1(myFunc) {
myFunc(arr, block);
}
function showArr(arr, block) {
arr[3] = arr[3] * 10;
block.innerHTML = arr.join('_');
}
f1(showArr(arr1, out1))
f1
тут не функцию передаёте, а результат её работы, то есть undefined
. Потому что если после названия функции есть круглые скобки, то сначала эта функция вызовется, отработает, и будет использован результат её выполнения. Так как явного return
нет, то showArr
вернёт undefined
. Таким образом эта запись:f1(showArr(arr1, out1))
эквивалентна этой: f1(undefined)
С той лишь разницей, что выполнится код внутри showArr
..f1()
не успевает дойти до ошибки undefined is not a function
потому что внутри f1()
сначала пытается найти переменную arr
. А откуда ей там взяться? Её нет ни в аргументах функции f1()
, ни в вышестоящей области видимости, так как там arr1
.f1(showArr, arr1, out1);
Поэтому ошибку не выдаёт.почему третий элемент массива сохраняет условия и остается 40, хотя в условии я поставил задачу только для четвертого элемента массива?
arr1
по ссылке. То есть один и тот же массив изменяется и в showArr
и в showArr2
.function showArr(arr, block) { // arr = [1, 2, 3, 4, 5, 6, 7, 8]
arr[3] = arr[3] * 10; // поменяли 4ый элемент, массив стал равен [1, 2, 3, 40, 5, 6, 7, 8]
}
function showArr2(arr, block) { // arr = [1, 2, 3, 40, 5, 6, 7, 8]
arr[4] = arr[4] * 100; // поменяли 5ый элемент, массив стал равен [1, 2, 3, 40, 500, 6, 7, 8]
}
f1(showArr, arr1, out1); // и тут
f1(showArr2, arr1, out2); // и тут Вы передаёте один и тот же массив. Массив это ссылочный тип данных. В обоих обработчиках будет один и тот же массив, а не 2 одинаковых
const getDaysWeekElement = (habitName, completed) => {
const arg = (index) => ({ habitName, index });
return weekDays
.map((name, index) =>
completed[index]
? ` <button class="checked" onClick="toggleDayButton(${arg(index)})">
<img width="25" src="./assets/img/check.svg" alt="check" />
</button>`
: `<button onClick="toggleDayButton(${arg(index)})">${name}</button>`,
)
.join('');
};
const getHabitElement = ({ img, name, completed }) => `
<div class="mb-8">
<div class="habit-header">
<img width="80" src="${img}" alt="habit-1" />
<span class="font-semibold text-2xl">${name}</span>
</div>
<div class="habit-plan">
${getDaysWeekElement(completed)} // что принимает функция getDaysWeekElement?
</div>
</div>`;
- ${getDaysWeekElement(completed)}
+ ${getDaysWeekElement(name, completed)}
.closest()
ищет исключительно вверх по дереву, начиная с самого элемента. А .text
не является родительским элементом для картинки.-const message = event.target.closest('.text').textContent;
+ const message = event.target.closest('.message_container').querySelector('.text').textContent;
зачем это объясняется
$('#result').html(data);Вы заменяете всю разметку новой.
$('#result').html($('#result').html() + data)
И если я САМ не могу справиться с такой задачей, то стоит ли делать вывод, что я не осилю даже уровень джуниора попросту потому, что не хватает интеллекта и на программирование стоит забить?
1. Нажал на кнопку
2. Если кнопка вправо
2.1 то нужно извлечь последний элемент из массива и вставить его в начало
2.2 иначе извлечь первый элемент массива и вставить его в конец.
onClickNext
var last = array.pop()
array.unshift(last)
onClickPrev
var first = array.shift()
array.push(first)
2.2 Убедиться в том, что в сети Интернет, и на страницах Сервиса в частности, отсутствуют ответы на данный вопрос. Специально для этого талантливые IT-специалисты создали и развивают поисковые системы Яндекс и Google.
Есть что то по типу next()
var globalVar = "Hello!";
Object.defineProperty(window, 'test', {
get() { return globalVar } // ну и другие необходимые дескрипторы, опущены для примера.
});
console.log(test); // "Hello!"
globalVar = "world!";
console.log(test); // "world!"
.addEventListener
ничего не возвращает. В переменной будет undefined. Соответственно, ни о каких дата атрубтах речи идти не может.document.getElementById('form__code').value = this.querySelector('option[value="'+this.value+'"]').dataset.code
form.on('submit', function(evt) {
evt.preventDefault()
$.ajax({})
}
- range.noUiSlider.set([this.value, null]);
+ range.noUiSlider.set([this.value.replace(/\s/g, ''), null]);
formatFractionCurrent function(number)
format fraction pagination current number. Function receives current number, and you need to return formatted value
formatFractionTotal function(number)
format fraction pagination total number. Function receives total number, and you need to return formatted value