Почему выбор пал на Питон, он ведь тяжеловесный?
Тут и не поспоришь)
Возможно имело смысл учить php, но не хотелось изучать из-за его направленности только почти в веб-разработку. Тем более тут выпала возможность изучать питон в яндекс лицее)
PHP минимизирует нагрузку на сервер, актуально для высоко-нагруженных ресурсов. Как пример - интернет магазин…
Не почти, а именно…
Определяйтесь к чему стремитесь…
Так на РНР в основном с унылым древним вордпрессом работают. А более интересных проектов/компаний/вакансий примерно одинаково и на РНР, и на Питоне, и на Руби, при этом с последними двумя как-то приятнее работать.
А кто там тяжеловеснее еще надо подумать как это оценить )
Из-за чего может возникать такая ошибка?
127.0.0.1/:438 Uncaught SyntaxError: Unexpected end of input
Возникает она в закрывающемся теге </script>
Так а в коде что?
Просто была не закрыта фигурная скобка.
Почему-то js не рабочий, то есть через функцию тегу <i>
должно присваиваться onclick=f(this)
(это работает), но почему-то не происходит передача id, id присваивается так:
btnImg.setAttribute('id_1', id);
тег <i>
становится таким:
<i class="fas fa-play" height="40" width="40" id="p-img-0" id_1="1" onclick='f(this)' aria-hidden="true"></i>
Но в функцию вывода id_1 почему то не передается:
function f(el){
alert(el.id_1);
}
onclick=f(this)
присваивается так:
btnImg.setAttribute("onclick", 'f(this)');
не знаю работает ли так, но тут можно сразу без HTML
btnImg.onClick = ...
или еще лучше
Просто у нас есть <div>
, который должен заполняться, но если посмотреть исходный код там ничего не будет, а в коде элемента будет. То есть изначально у нас нет этого объекта и что-то присваивать надо в btnImg.setAttribute
.
Или можно тег <i>
инициализировать по классу?
Не понял о чем это, но нет смысла использовать
В JS можно сразу у этого объекта
Ну так эта функция используется только для заполнения как я понял
function createTrackItem(index,name,duration, id){
var btnImg = document.createElement('i');
btnImg.setAttribute("class", "fas fa-play");
btnImg.setAttribute("height", "40");
btnImg.setAttribute("width", "40");
btnImg.setAttribute("id", "p-img-"+index);
btnImg.setAttribute('id_1', id);
btnImg.setAttribute("onclick", 'f(this)');
document.querySelector("#pbp-"+index).appendChild(btnImg);
}
Какая?
this
точно не будет работать в атрибуте HTML.
const self = this
btnImg.onclick = () => f(self)
эта:
function createTrackItem(index,name,duration, id){
var btnImg = document.createElement('i');
btnImg.setAttribute("class", "fas fa-play");
btnImg.setAttribute("height", "40");
btnImg.setAttribute("width", "40");
btnImg.setAttribute("id", "p-img-"+index);
btnImg.setAttribute('id_1', id);
btnImg.setAttribute("onclick", 'f(this)');
document.querySelector("#pbp-"+index).appendChild(btnImg);
}
Так и что мешает тут сразу установить onclick
или вызвать addEventListener
не записывая это в атрибут HTML?
Если мы сделаем так, то это исполнится сразу, так как функция отвечает только за создание объекта, а надо получить id только при нажатии
Так onclick
это и есть обработчик клика, почему он сразу исполнится?
Это функция получается?
Это вызов функции внутри обработчика onclick
.
И получается чтобы вывести id нам надо внутри функции прописать alert(self.id_1);
?
Element.getAttribute() - Web APIs | MDN
И для своих не стандартных атрибутов лучше добавлять data-
.
data-myId="42"