Please or Регистрация to create posts and topics.

Кнопки в любом месте параграфа?

Как реализовать кнопки в любом месте параграфа?

 

Дополнительный инструмент:

Как реализовать время для появления, пропадание кнопки?

Период времени для кнопки?

 

Пробовал скрыть элемент с помощью JS, но как-то не получилось.
Есть такой костыльный вариант. Кнопка появляется через 2 секунды после перехода на параграф, через 4 секунды параграф обновляется и кнопка пропадает.

if($$title !== $$from){
var кнопка = button("Кнопка","имя параграфа","*/+",function(){});
setTimeout(()=> print(кнопка),2000);
setTimeout(()=> update(),2000);
setTimeout(()=> goto($$title),4000);
}

То есть можно попробовать вариант обновления параграфа?

Задать время, чтоб параграф обновлялся, через ХХХ время?

Цитата: SIZZZ от 22.02.21, 21:49

Пробовал скрыть элемент с помощью JS, но как-то не получилось.
Есть такой костыльный вариант. Кнопка появляется через 2 секунды после перехода на параграф, через 4 секунды параграф обновляется и кнопка пропадает.

if($$title !== $$from){
var кнопка = button("Кнопка","имя параграфа","*/+",function(){});
setTimeout(()=> print(кнопка),2000);
setTimeout(()=> update(),2000);
setTimeout(()=> goto($$title),4000);
}

Я вот так реализовывал:

setTimeout(function(){objID.style.opacity = 1;}, 100);

 

Ну и, соответственно, можно style.visibility = "hidden" использовать, или вообще удалять элемент. Ну, и Id элементу задать, и время transition выставить соответственно, чтобы работать с ним.

 

У меня как раз проблема была в том, чтобы задать id элементу.

Например, создаю блок <div id ="obj"> Object </div>

Но js отказывается с ним работать почему-то

Загадочно. Можешь весь код элемента и функции запостить?

 

Цитата: Einharr от 23.02.21, 12:01

Загадочно. Можешь весь код элемента и функции запостить?

\ <div id ='myobj'> OBJ </div>
myobj = document.getElementById('myobj');
myobj.style.opacity = 0;

В итоге: "Произошла ошибка кода: Cannot read property 'style' of null"

Со стандартными элементами всё работает:
PrefsButton.style.opacity = 0;

Понял, в чем была проблема. Нужно скрывать элемент с небольшой задержкой, иначе js код выполняется раньше, чем создается элемент страницы.

Вот так работает:
\ <div id ='myobj'> OBJ </div>
setTimeout(()=>document.getElementById('myobj').style.opacity = 0,1);

Цитата: SIZZZ от 23.02.21, 12:40

Понял, в чем была проблема. Нужно скрывать элемент с небольшой задержкой, иначе js код выполняется раньше, чем создается элемент страницы.

Вот так работает:
\ <div id ='myobj'> OBJ </div>
setTimeout(()=>document.getElementById('myobj').style.opacity = 0,1);

Ну да, причина в этом. Аксма рисует элементы, которые за \ в последнюю очередь. Почему - это к автору аксмы вопрос.

Таймаут не лучший вариант, костыль. По-хорошему нужно скрипт просто грузить отдельно, чтобы он после загрузки страницы срабатывал, но onload и DOMContentLoaded у меня сходу работать отказались. В теории можно пойти путем "заворачивания" в див уже после отрисовки, вот на такой манер:
org_html = document.getElementById("slidesContainer").innerHTML;
new_html = "<div id='slidesInner'>" + org_html + "</div>";
document.getElementById("slidesContainer").innerHTML = new_html;

Или "рисовать" див с помощью JS:

var mainDiv = document.getElementById("spritesDiv"); //Находим материнский элемент и сохраняем в переменную, чтобы легче было обращаться к нему

var myObj=document.createElement("div"); //Создаем DIV-обертку, сохраняем в переменную
myObj.id = "someElem"; //Назначаем ID, чтобы можно было менять отображение через таблицу стилей
myObj.innerHTML = "СОДЕРЖИМОЕ"; //Внутренности DIV';
mainDiv.appendChild(myObj); //Прицепляем свежесозданный DIV к материнскому элементу

Но через таймер да, проще.