Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как получить доступ к найденному элементу? (https://javascript.ru/forum/misc/30650-kak-poluchit-dostup-k-najjdennomu-ehlementu.html)

Vampir3 10.08.2012 19:57

как получить доступ к найденному элементу?
 
var s = document.body.innerHTML.search("Element");

можно ли как-то добраться к найденному и изменить его цвет, например, или размер букв?

Deff 10.08.2012 20:01

Vampir3,
:) Приведите примерный кусок HTML кода страницы с искомым - ибо Ваша конструкция надуманная

melky 10.08.2012 21:03

Цитата:

Сообщение от Vampir3 (Сообщение 196357)
var s = document.body.innerHTML.search("Element");

можно ли как-то добраться к найденному и изменить его цвет, например, или размер букв?

нет, ибо код возвращает строку, а не элемент.

Aetae 10.08.2012 21:10

Что ещё за "Element" и чего вы от него хотите?
Есть стойкое ощущуение, что вы делаете что-то через задницу.

Цитата:

Сообщение от melky (Сообщение 196370)
нет, ибо код возвращает строку, а не элемент.

Почему-же, через анальное отверстие и с помощью кувалды:
Пример: никогда так не делайте
document.body.innerHTML = document.body.innerHTML.replace("Element",'<b>Element</b>');

vadim5june 10.08.2012 23:39

Цитата:

Сообщение от Vampir3 (Сообщение 196357)
var s = document.body.innerHTML.search("Element");
можно ли как-то добраться к найденному и изменить его цвет, например, или размер букв?

надо так
var elems=document.body.getElementsByTagName('Element');
elems[0].style.color='red';//поменяли цвет

melky 10.08.2012 23:41

Цитата:

Сообщение от Aetae
Почему-же, через анальное отверстие и с помощью кувалды:
Пример: никогда так не делайте
document.body.innerHTML = document.body.innerHTML.replace("Element",'<b>Elem ent</b>');

:lol: мэдскиллз'у все бредовые мысли покорны.

bes 11.08.2012 10:52

Цитата:

Сообщение от Aetae
Пример: никогда так не делайте
document.body.innerHTML = document.body.innerHTML.replace("Element",'<b>Elem ent</b>');

В чём причина?
Если потеря обработчиков не принципиальна (или их вообще нет), так можно подправить содержимое какого-нибудь элемента, или из-за скорости и быстрее так elem.innerHTML = '<b>' + elem.innerHTML;

Aetae 11.08.2012 10:57

Цитата:

Сообщение от bes (Сообщение 196573)
В чём причина?

Ты для меня умер как программист.

bes 11.08.2012 11:04

Цитата:

Сообщение от Aetae
Ты для меня умер как программист.

ха-ха, я для тебя и не рождался как программист (и вообще не рождался как программист)

bes 11.08.2012 11:13

Или из-за этого
http://javascript.ru/String/replace
Цитата:

Этот метод не меняет вызывающую строку, а возвращает новую, после замен.
я предполагаю сборщик справится, а метод работает

click
<script>
document.body.onclick = function () {
	document.body.innerHTML = document.body.innerHTML.replace("click",'<b>click</b>');
	alert(document.body.innerHTML);
}
</script>

Aetae 11.08.2012 11:24

Еслиб он не работал яб его не предлагал. Но это пиздец. Если вы не видите, что это пиздец, то пиздец - это также и уровень вашего понимания языка. Какие-то детальные объяснения тут не имеют смысла.

bes 11.08.2012 11:37

Цитата:

Сообщение от Aetae
Еслиб он не работал яб его не предлагал. Но это пиздец. Если вы не видите, что это пиздец, то пиздец - это также и уровень вашего понимания языка. Какие-то детальные объяснения тут не имеют смысла.

Ну для того здесь и находимся, чтобы понять и допонять (я и тот, кто преследует ту же цель), раз у тебя такой высокий уровень понимания языка, не поленись, доступно объясни нам глупеньким, что к чему, местами в официальной документации подтверди, а то твои эмоции так и зависнут в воздухе без особой пользы.

Aetae 11.08.2012 11:51

Цитата:

Какие-то детальные объяснения тут не имеют смысла.
dixi

melky 11.08.2012 12:00

Цитата:

Сообщение от bes
В чём причина?

все предыдущие дочерние элементы удаляются нафиг из дерева, и их место занимают те, что получились в итоге.

(цвет должен быть зелёным, по идее, но хрен там, т.к. то, что находится в el, уже не прикреплено ни к чему - через 500мс вставляется старый элемент на страницу)
<body>
    <div id="a">FOO</div>
</body>
<script>
var el = document.getElementById("a");
el.style.color = "red";
document.body.innerHTML = document.body.innerHTML.replace("FOO", "BAR"); // пуля в ноге
el.style.color = "green";

setTimeout(function () {
    document.body.appendChild(el);
}, 500);
</script>

vadim5june 11.08.2012 12:07

Цитата:

Сообщение от bes (Сообщение 196580)
Или из-за этого
http://javascript.ru/String/replace
я предполагаю сборщик справится, а метод работает

если пример слегка переделать навесив событие на элемент то событие пропадает после replace( при втором клике)
<span>click</span>
<script>
document.getElementsByTagName('span')[0].onclick = function () {document.body.innerHTML = document.body.innerHTML.replace("click",'<b>click</b>');
alert(document.body.innerHTML);
}
</script>

bes 11.08.2012 12:10

Цитата:

Сообщение от Aetae
dixi

ну хоть какая-то польза (http://ru.wikipedia.org/wiki/Dixi_(%...%D 0%B8%D0%B5)
я всё понял: в этих объяснениях просто нет смысла :D

bes 11.08.2012 12:12

melky, сейчас посмотрю твой пример

vadim5june, в недавней теме это вместе обсуждали, поэтому я написал
Цитата:

Сообщение от bes
Если потеря обработчиков не принципиальна (или их вообще нет)


vadim5june 11.08.2012 12:13

Цитата:

Сообщение от bes (Сообщение 196601)
vadim5june, в недавней теме это вместе обсуждали, поэтому я написал

да когда обсуждали document.body.innerHTML+
здесь аналогично

melky 11.08.2012 12:22

Цитата:

Сообщение от bes
melky, сейчас посмотрю твой пример

там только обьяснение, почему низя так делать, и пример, доказывающий написанное. почти нечего смотреть. жду ответа на мой ответ :)

Цитата:

Сообщение от bes
vadim5june, в недавней теме это вместе обсуждали, поэтому я написал

>< ёмаё, а почему они теряются, это ничего плохого?

т.е. если у Вас украдут телефон, разобьют его, Вы будете жалеть о том, что его разбили, а не о том, что его украли ?!

bes 11.08.2012 12:32

melky, всё понял, смысл такой же как и у vadim5june, innerHTML переписывается новыми элементами, а до этого полученные ссылки указывают на другие элементы (но пример хорош тем, что ещё и восстанавливает старый элемент).

Тем не менее, если есть понимание что к чему, не вижу ничего плохого пользоваться такими приёмами, что категорически запрещал Aetae.

bes 11.08.2012 12:36

Цитата:

Сообщение от melky
т.е. если у Вас украдут телефон, разобьют его, Вы будете жалеть о том, что его разбили, а не о том, что его украли ?!

:D если его украдут и не сообщат, что его разбили, то придётся сожалеть только о том, что его украли (возможно будет надежда его когда-нибудь вернуть), а так разбили - и всё - надежда - умерла
насколько я знаю, удаляя элементы из DOM они тоже никуда из памяти не исчезают

melky 11.08.2012 12:40

Цитата:

Сообщение от bes (Сообщение 196609)
удаляя элементы из DOM они тоже никуда из памяти не исчезают

... если на них остаётся хотя бы один указатель, как и у обычных переменных. в IE есть даже прикол с удалением элементов
кстати, по теме
и вот ещё.

рекомендую.:victory:

vadim5june 11.08.2012 12:42

Цитата:

Сообщение от bes
не вижу ничего плохого пользоваться такими приёмами

а сами будете пользоваться в своих проектах?

bes 11.08.2012 12:49

ну вот пример
http://javascript.ru/forum/misc/3062...tml#post196280
если для всех случаев мне придётся использовать только такую структуру, не вижу смысла городить что-то лишнее, понадобится несложно подработать

melky, хорошие ссылки, не добирался ещё этого

Aetae 11.08.2012 13:02

Цитата:

Сообщение от bes (Сообщение 196613)
ну вот пример
http://javascript.ru/forum/misc/3062...tml#post196280
если для всех случаев мне придётся использовать только такую структуру, не вижу смысла городить что-то лишнее, понадобится несложно подработать

Еб/ть! Не говоря об уродливости этого решения(если спешишь можно и наговонкодить), не говоря о том, что в <a> вообще не рекомендуется пихать блочные элементы, вы же даже не закрыли <div> оставив это на попечение парсера. Чуть отличные условия и море глюков обеспечено.

bes 11.08.2012 13:07

Ну это лишь пример того, что просил автор, далее не стоит смотреть.
Если есть какие-то некорректности в отсутствии явного указания '</div>', то я о них не слышал, в данном случае пример рабочий.

Aetae 11.08.2012 13:19

Я отпостил как должно быть.
bes, у вас не чувства языка. У вас нет понимания сути DOM. Даже не знаю зачем продолжаю с вами разговаривать...

bes 11.08.2012 13:53

Цитата:

Сообщение от Aetae
bes, у вас не чувства языка. У вас нет понимания сути DOM.

Суть DOM заключена в её назывании
Цитата:

Сообщение от Aetae
Даже не знаю зачем продолжаю с вами разговаривать...

Видимо потому, что я смогу переосмыслить свои представления, если приведена достойная причина их недостоверности.


Часовой пояс GMT +3, время: 00:00.