function selectFromLast(target) {
// Определяем элемент, с которого начинается выделение
// Если до этого кликали на какой-то элемент, берём его
// Иначе берём первый элемент списка
var startElem = lastClickedLi || ul.children[0];
// Определяем, находится стартовый элемент до или после выбранного
// Для этого применяем битовую операцию И
// https://learn.javascript.ru/compare-document-position
var isLastClickedBefore = startElem.compareDocumentPosition(target) & 4;
if (isLastClickedBefore) {
// Если стартовый элемент расположен перед выбранным, идём от стартового вниз до выбранного
for (var elem = startElem; elem != target; elem = elem.nextElementSibling) {
elem.classList.add('selected');
}
} else {
// Если стартовый элемент расположен после выбранного, идём от стартового вверх до выбранного
for (var elem = startElem; elem != target; elem = elem.previousElementSibling) {
elem.classList.add('selected');
}
}
// Наконец, устанавливаем класс выбранному элементу
elem.classList.add('selected');
}
но ничего не меняет
Для продвинутого читателя, который знает, что теги<script>
можно добавлять на страницу в любой момент при помощи самого javascript, заметим, что скрипты, добавленные таким образом, ведут себя так же, как async. То есть, выполняются как только загрузятся, без сохранения относительного порядка.
Если же нужно сохранить порядок выполнения, то есть добавить несколько скриптов, которые выполнятся строго один за другим, то используется свойство script.async = false.
<hr/>
в том, что линия - это не контент, а дизайн. Соответственно, идеально, если дизайн рисуется при помощи css. А уж как конкретно рисовать линию зависит от разметки и дизайна конкретной страницы. Это может быть банальная граница, может быть box-shadow, могут быть псевдоэлементы с фоновой заливкой. Любой из перечисленных вариантов адекватен и имеет право на существование.<span/>
вовсе не значит, что он при этом приобретёт какие-то магические свойства. Их нужно будет реализовывать руками: https://jsfiddle.net/koceg/us9kem6a/2/вдруг люди придумали что-то более продуктивное?Так а что может быть продуктивного в IE8? MutationObserver там не поддерживается, поэтому остаётся только setInterval().
$user->likes($entity);
.$entity->likedBy($user)
.$user->noLongerLikes($entity)
, чтобы снять лайк. При другой организации DSL получится страшненький.var new_items = items.slice(0);
$items = [];
foreach ($arResult["ITEMS"] as $item) {
$items[$item['DISPLAY_PROPERTIES']['DATA_SOBYTIYA']['VALUE']][] = $item;
}
$user = new User; // id|space_id|name
$space = new Space; // id|user_id
$user->name = $name;
$user->save();
$space->user->associate($user);
$space->save();
$user->space->associate($space);
$user->save();