Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.04.2011, 23:32
Кандидат Javascript-наук
Отправить личное сообщение для TicTac Посмотреть профиль Найти все сообщения от TicTac
 
Регистрация: 07.09.2010
Сообщений: 133

Как добавить код в head и body
Доброго времени!

Как добавить в head стили, а в body используя цикл дописать детей
function _columns(a)
{
	var style = document.createElement('style');
	style.type = 'text/css';
	style.innerHTML = '.column_ { position: fixed; z-index: 999; top: 0; display: block; height: 100%; border-right: 1px dashed #4affff; } * html .column_ {position: absolute; }';
	document.getElementsByTagName("head").appendChild(style);
	
    for (var i = 0, l = a.length; i < l; i++)
    		var line = document.createElement('span');
		line.class = 'column_';
		line.style = 'left:' +  a[i] + '%'
		document.getElementsByTagName("body").appendChild(line);	
	
}

пытаюсь сделать как то так, но выскакивает ошибка
Цитата:
Uncaught TypeError: Object #<NodeList> has no method 'appendChild'
что можно еще использовать кроме appendChild или можно как-то через appendChild сделать?

Последний раз редактировалось TicTac, 16.04.2011 в 23:35.
Ответить с цитированием
  #2 (permalink)  
Старый 17.04.2011, 00:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

TicTac,
Примерно так )))
<!DOCTYPE html>
<html>
<head>
  <title></title>
<script type="text/javascript">
window.onload = function () {
function _columns(d) {
    var a = document.createElement("style"),
        c = ".column_ { position: fixed; z-index: 999; top: 0; display: block; height: 100%; border-right: 1px dashed #4affff; } * html .column_ {position: absolute; }";
    a.setAttribute("type", "text/css");
    a.styleSheet ? a.styleSheet.cssText = c : (c = document.createTextNode(c), a.appendChild(c));
    document.getElementsByTagName("head")[0].appendChild(a);
    a = 0;
    for (b = d.length; a < b; a++) c = document.createElement("span"), c.className = "column_", c.style.left = d[a] + "%", document.body.appendChild(c)
};
_columns([10,20,30,40,50])
};
</script>
</head>
<body>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 17.04.2011, 02:52
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от TicTac Посмотреть сообщение
пытаюсь сделать как то так, но выскакивает ошибка

ясное дело, будет выскакивать

смотри внимательно на подчеркнутое


function _columns(a)
{
	var style = document.createElement('style');
	style.type = 'text/css';
	style.innerHTML = '.column_ { position: fixed; z-index: 999; top: 0; display: block; height: 100%; border-right: 1px dashed #4affff; } * html .column_ {position: absolute; }';
	document.getElementsByTagName("head").appendChild(style);
	
    for (var i = 0, l = a.length; i < l; i++)
    		var line = document.createElement('span');
		line.class = 'column_';
		line.style = 'left:' +  a[i] + '%'
	
// забыл [0]
	*!*document.getElementsByTagName("body")[0].appendChild(line);*/!*	
	
}
Ответить с цитированием
  #4 (permalink)  
Старый 17.04.2011, 20:58
Кандидат Javascript-наук
Отправить личное сообщение для TicTac Посмотреть профиль Найти все сообщения от TicTac
 
Регистрация: 07.09.2010
Сообщений: 133

рони,melky, спасибо, заработало
Ответить с цитированием
  #5 (permalink)  
Старый 17.04.2011, 21:03
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

или
document.body.appendChild(line);

это работает только для body, для head по прежнему нужно выбирать по TagName.
Ответить с цитированием
  #6 (permalink)  
Старый 17.04.2011, 22:01
Кандидат Javascript-наук
Отправить личное сообщение для TicTac Посмотреть профиль Найти все сообщения от TicTac
 
Регистрация: 07.09.2010
Сообщений: 133

Magneto, ага видел такой подход

можно еще такой вопросик, в массиве есть два параметра в данном случае мне нужен первый, который содержит название css декларации, код
line.style.pers_param[0] = a[i];

не работает, а если сделать так
var av = pers_param[0];
line.style.av = a[i];

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

хотя нет, тоже не работает , ошибок не выдает, но ожидаемого например left из массива line.style.left и выполнения line.style.left = ... ничего не происходит, не добавляется декларация left (

Последний раз редактировалось TicTac, 17.04.2011 в 22:20.
Ответить с цитированием
  #7 (permalink)  
Старый 17.04.2011, 22:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

TicTac,
line.style[pers_param[0]] = a[i];
Ответить с цитированием
  #8 (permalink)  
Старый 17.04.2011, 22:32
Кандидат Javascript-наук
Отправить личное сообщение для TicTac Посмотреть профиль Найти все сообщения от TicTac
 
Регистрация: 07.09.2010
Сообщений: 133

рони, уго) работает спасибо большое
Ответить с цитированием
  #9 (permalink)  
Старый 17.04.2011, 23:33
Кандидат Javascript-наук
Отправить личное сообщение для TicTac Посмотреть профиль Найти все сообщения от TicTac
 
Регистрация: 07.09.2010
Сообщений: 133

рони,
а зачем нужна эта проверка для кроссбраузерности?
a.styleSheet ? a.styleSheet.cssText = c : (c = document.createTextNode(c), a.appendChild(c));

я у себя использовал
style.innerHTML


как-то в хроме сработало так и оставил, а когда открыл в ие7,8 обломался - не работает, а если сделать с такой проверкой как у Вас все отлчно работает даже в ие спасибо
Ответить с цитированием
  #10 (permalink)  
Старый 17.04.2011, 23:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

TicTac,
немного покороче можно
a.styleSheet ? a.styleSheet.cssText = c : a.textContent = c;
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ссылка на JS в head и в body, Есть разница? rolph (X)HTML/CSS 9 03.11.2013 23:50
Как создать bodyclick код royksopp Общие вопросы Javascript 8 14.10.2011 16:39
Как убрать одну часть кода и добавить другую? hurricane Элементы интерфейса 2 30.12.2010 18:09
код между body и body ie7 не видит alexandr_poskrobka (X)HTML/CSS 2 09.03.2010 18:35
Изменение HEAD перед загрузкой BODY Temchik (X)HTML/CSS 41 15.11.2009 22:06