Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   применить несколько стилей (https://javascript.ru/forum/misc/27774-primenit-neskolko-stilejj.html)

faraday 24.04.2012 15:48

применить несколько стилей
 
Здравствуйте, у меня на сайте есть textarea , в котором пишется css код .
при нажатии кнопки, нужно чтобы этот css код прмиенялся к странице в другом фрейме. Как это правильно сделать?
пытался добавлять текстовое содержимое в тег style фрейма - не работает. знаю что на jquery есть функция css, но для неё нужно будет вручную распарсить весь текст. и применить построчно - что сложно и неудобно.

faraday 24.04.2012 16:58

style тег? тег. тут помоему очевидно что имеется ввиду добавление в код фрейма.
Мне кажется, что такие вещи как применение стилей происходит во время построения страницы, и если их добавить после в тег стайл - работать не будет.
код
parent.frames[1].getElement('style'). - знаю что не правильно, но мысль развивать не стал по причине описанной выше.

Dim@ 24.04.2012 19:39

На самом деле все можно сделать :) как раз сам проверял свой код можно делать так:
<html>
<head>
<meta charset="utf-8">
</head><frameset rows='50%,50%'>
	<frame src='новый_файл.html' >
	<frame src='новый_файл2.html'>
	</frameset></html>

это самый первый html он содержит ссылки на фреймы :) :
<html><head><meta charset="utf-8"><title></title>
<script>
document.write('Yes');
function csstextv(){
style = parent.frames[1].document.getElementById('s1');
csstext=document.form.tex.value;
csstext=document.createTextNode(document.form.tex.value);
if(csstext!=''){
style.appendChild(csstext)
}
}

</script><form name='form'>
<textarea rows='4' cols='10' name='tex'></textarea><button onclick='csstextv()'>Сделать CSS</button></form>
</body></html>


это второй содержит скрипт влияющий на смежный фрейм точнее его тег style с атрибутом id равным 's1'
<html><head><style id='s1'></style><meta charset="utf-8"><title></title><body>
боди
</body></html>


ну и третий в нём как раз этот тег style с атрибутом id равным 's1' :)
я могу предложить такой принцип действия (не забудьте что эти фреймы оба должны принадлежать окну верхнего уровня или одному и тому же фрейму, если они вложенные вот и всё :) )

melky 24.04.2012 20:45

чтобы добавить css текстом, надо делать это не через textNode, а через свойство тега <style> - innerHTML
(или через добавление правил по одному)

Dim@ 24.04.2012 21:27

Впрочем если вы имеете всмысле что-бы код не вставлялся отрывками изменялся полностью тогда да надо использовать свойство innerhtml :)

melky 25.04.2012 00:47

Цитата:

Сообщение от melky (Сообщение 171058)
чтобы добавить css текстом, надо делать это не через textNode, а через свойство тега <style> - innerHTML
(или через добавление правил по одному)

EQEQEQ TO
Цитата:

Сообщение от Maxmaxmахimus (Сообщение 171103)
var style = document.createElement('style');
style.innerHTML = "a{color: #000}"

LOL

faraday 26.04.2012 02:15

Всем спасибо за помощь, код Dim@ помог, разобрался.


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