нет судьбы
С нами с 27.03.03
Сообщения: 4427
Рейтинг: 4204
|
Добавлено: 03/07/11 в 13:41 |
Как можно заменить у уже существующего в документе
<link rel="stylesheet" id="css1" type="text/css" href="styles/index.css" media="all">
href, например на href="styles/index_xxx.css"?
Интересует именно при наличии дефолтного пути. Так как
Код: | if (...) document.write ('<link rel="stylesheet" id="css1" type="text/css" href="styles/index.css" media="all">')
else
document.write ('<link rel="stylesheet" id="css1" type="text/css" href="styles/index_xxx.css" media="all">'); |
и так понятно.
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 03/07/11 в 14:03 |
document.getElementById('css1').href = 'styles/index_xxx.css';
|
|
|
|
нет судьбы
С нами с 27.03.03
Сообщения: 4427
Рейтинг: 4204
|
Добавлено: 03/07/11 в 14:13 |
Бля! Забыл убрать из кода id="css1 от старого эксперимента!
Не прокатывает с id. Стили накладываются друг на друга и срабатываю только те правила, которых нет в index.css
Может можно как-то регулярным выражением подменить?
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 03/07/11 в 14:32 |
Vyacheslav писал: | Не прокатывает с id. Стили накладываются друг на друга и срабатываю только те правила, которых нет в index.css |
Странно, попробуй добавить:
Код: | <meta http-equiv="PRAGMA" content="NO-CACHE" /> |
|
|
|
|
нет судьбы
С нами с 27.03.03
Сообщения: 4427
Рейтинг: 4204
|
Добавлено: 03/07/11 в 14:45 |
gimcnuk писал: | Странно, попробуй добавить:
Код: | <meta http-equiv="PRAGMA" content="NO-CACHE" /> | |
Не в этом смысле! Старые стили перебивают часть новых. Видны только небольшие изменения - это как раз несколько стилей из второго css файла.
Всёё же добавыли как ты сказал, не помогло.
Для этого варианта надо как-то обнулить сначала текущий \ дефолтный набор стилей, а затем применять document.getElementById('css1').href = 'styles/index_xxx.css';
|
|
|
|
нет судьбы
С нами с 27.03.03
Сообщения: 4427
Рейтинг: 4204
|
Добавлено: 03/07/11 в 15:45 |
Посмотрел дебаггером. Если уж быть точным, то этот код
document.getElementById('css1').href = 'styles/index_xxx.css';
делает следкющее:
Код: | <link rel="stylesheet" id="css1" type="text/css" href="styles/index.css" href="styles/index_xxx.css" media="all"> |
|
|
|
|
нет судьбы
С нами с 27.03.03
Сообщения: 4427
Рейтинг: 4204
|
Добавлено: 04/07/11 в 17:00 |
Короче грабли какие-то!
UP
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760
|
Добавлено: 04/07/11 в 20:19 |
полныйтпуть мей би?
|
|
|
|
С нами с 20.02.06
Сообщения: 248
Рейтинг: 366
|
Добавлено: 05/07/11 в 00:05 |
Браузер то какой? У меня всё работает
alert(document.getElementById('css1').href) что говорит?
|
|
|
|
нет судьбы
С нами с 27.03.03
Сообщения: 4427
Рейтинг: 4204
|
Добавлено: 05/07/11 в 00:11 |
Firefox.
Что именно работает? Я же говорю, что в дебагере видно, что накладываются как раз оба стиля. Т.е. оно то работает, но на половину. Старые стили получаются приоритетнее новых.
Т.е., если в стиле index.css есть A {color:#СС0000}, а в index_xxx.css - A {color:#00FF00; text-decoration:none;}, то в результате это скрипта d документе будет смесь A {color:#СС0000; text-decoration:none;}
|
|
|
|
С нами с 20.02.06
Сообщения: 248
Рейтинг: 366
|
Добавлено: 05/07/11 в 00:40 |
Vyacheslav писал: | Что именно работает? |
ВСЁ работает. FF3.6.18. В файрбаге видно, что стили заменяются, а не накладываются. Проверь в другом браузере
И всё-таки, alert что выводит? Элемент с id=css1 точно единственный на странице?
|
|
|
|
нет судьбы
С нами с 27.03.03
Сообщения: 4427
Рейтинг: 4204
|
Добавлено: 05/07/11 в 09:30 |
Firefox 5.0
Алерт показывает пустой в этом коде:
Код: | <html>
<head>
<link rel="stylesheet" id="css1" type="text/css" href="styles/index.css" media="all">
<script type="text/javascript">
alert(document.getElementById('css1').href);
document.write ('<link rel="stylesheet" id="css1" type="text/css" href="styles/index_xxx.css" media="all">');
</script>
</head>
<body>
</body>
</html>
|
|
|
|
|
С нами с 20.02.06
Сообщения: 248
Рейтинг: 366
|
Добавлено: 05/07/11 в 11:03 |
|
|
|
|
нет судьбы
С нами с 27.03.03
Сообщения: 4427
Рейтинг: 4204
|
Добавлено: 05/07/11 в 12:02 |
Всё верно, проблема была походу в том, что я запускал из дримвивера..
Алерт отображает в хроме: file:///C:\temp\styles\index.css
Вот результаты Firebug
Chrome 12:
Код: | <html><head>
<link rel="stylesheet" id="css1" type="text/css" href="styles/index.css" media="all">
<script type="text/javascript">
alert(document.getElementById('css1').href);
document.write ('<link rel="stylesheet" id="css1" type="text/css" href="styles/index_xxx.css" media="all">');
</script><link rel="stylesheet" id="css1" type="text/css" href="styles/index_xxx.css" media="all">
</head>
<body>
</body></html> |
Firefox 5.0
Код: | <html>
<head>
<link id="css1" media="all" href="styles/index.css" type="text/css" rel="stylesheet">
<script type="text/javascript">
alert(document.getElementById('css1').href);
document.write ('<link rel="stylesheet" id="css1" type="text/css" href="styles/index_xxx.css" media="all">');
</script>
<link id="css1" media="all" href="styles/index_xxx.css" type="text/css" rel="stylesheet">
</head>
<body> </body>
</html> |
Как я и говорил, вставляются оба стиля.
|
|
|
|
С нами с 20.02.06
Сообщения: 248
Рейтинг: 366
|
Добавлено: 05/07/11 в 12:14 |
Ну прально, второй через document.write вставляется. Или я что-то не понял?
|
|
|
|
нет судьбы
С нами с 27.03.03
Сообщения: 4427
Рейтинг: 4204
|
Добавлено: 05/07/11 в 12:21 |
Блин! Ты прав, туплю..
document.getElementById('css1').href = 'styles/index_xxx.css'; сработало!
|
|
|
|
С нами с 20.02.06
Сообщения: 248
Рейтинг: 366
|
Добавлено: 05/07/11 в 13:21 |
|
|
|
|