Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
JavaScript подменить дефолтный href у stylesheet
Новая тема
Ответить
цитата
03/07/11 в 13:41
Vyacheslav
Как можно заменить у уже существующего в документе
<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">');
и так понятно.
цитата
03/07/11 в 14:03
Alexandur
document.getElementById('css1').href = 'styles/index_xxx.css';
цитата
03/07/11 в 14:13
Vyacheslav
Бля! Забыл убрать из кода id="css1 от старого эксперимента!
Не прокатывает с id. Стили накладываются друг на друга и срабатываю только те правила, которых нет в index.css
Может можно как-то регулярным выражением подменить?
цитата
03/07/11 в 14:32
Alexandur
Vyacheslav писал:
Не прокатывает с id. Стили накладываются друг на друга и срабатываю только те правила, которых нет в index.css
Странно, попробуй добавить:
Код:
<meta http-equiv="PRAGMA" content="NO-CACHE" />
цитата
03/07/11 в 14:45
Vyacheslav
gimcnuk писал:
Странно, попробуй добавить:
Код:
<meta http-equiv="PRAGMA" content="NO-CACHE" />
Не в этом смысле! Старые стили перебивают часть новых. Видны только небольшие изменения - это как раз несколько стилей из второго css файла.
Всёё же добавыли как ты сказал, не помогло.
Для этого варианта надо как-то обнулить сначала текущий \ дефолтный набор стилей, а затем применять document.getElementById('css1').href = 'styles/index_xxx.css';
цитата
03/07/11 в 15:45
Vyacheslav
Посмотрел дебаггером. Если уж быть точным, то этот код
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">
цитата
04/07/11 в 17:00
Vyacheslav
Короче грабли какие-то!
UP
цитата
04/07/11 в 20:19
Sterx
полныйтпуть мей би?
цитата
05/07/11 в 00:05
CABMIT
Браузер то какой? У меня всё работает
alert(document.getElementById('css1').href) что говорит?
цитата
05/07/11 в 00:11
Vyacheslav
Firefox.
Что именно работает? Я же говорю, что в дебагере видно, что накладываются как раз оба стиля. Т.е. оно то работает, но на половину. Старые стили получаются приоритетнее новых.
Т.е., если в стиле index.css есть A {color:#СС0000}, а в index_xxx.css - A {color:#00FF00; text-decoration:none;}, то в результате это скрипта d документе будет смесь A {color:#
СС
0000; text-decoration:none;}
цитата
05/07/11 в 00:40
CABMIT
Vyacheslav писал:
Что именно работает?
ВСЁ работает. FF3.6.18. В файрбаге видно, что стили заменяются, а не накладываются. Проверь в другом браузере
И всё-таки, alert что выводит? Элемент с id=css1 точно единственный на странице?
цитата
05/07/11 в 09:30
Vyacheslav
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>
цитата
05/07/11 в 11:03
CABMIT
Вот что у меня показывает твой код:
http://clip2net.com/s/12n9U
Попробуй в другом браузере. С кодом всё в порядке
цитата
05/07/11 в 12:02
Vyacheslav
Всё верно, проблема была походу в том, что я запускал из дримвивера..
Алерт отображает в хроме:
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>
Как я и говорил, вставляются оба стиля.
цитата
05/07/11 в 12:14
CABMIT
Ну прально, второй через document.write вставляется. Или я что-то не понял?
цитата
05/07/11 в 12:21
Vyacheslav
Блин! Ты прав, туплю..
document.getElementById('css1').href = 'styles/index_xxx.css'; сработало!
цитата
05/07/11 в 13:21
CABMIT
Новая тема
Ответить
Эта страница в полной версии