|
15.04.2011, 18:37
|
Аспирант
|
|
Регистрация: 15.04.2011
Сообщений: 47
|
|
Вставка тега
Скажите пожалуйста, возможно ли такое сделать на js, чтобы через каждые пять тегов, например
<div id="name">бла-бла</div>
<div id="name">бла-бла</div>
<div id="name">бла-бла</div>
<div id="name">бла-бла</div>
<div id="name">бла-бла</div>
вставлялся <div id="foo"> ?
|
|
15.04.2011, 18:44
|
Профессор
|
|
Регистрация: 07.01.2011
Сообщений: 582
|
|
(function () {
var elems = document.getElementsByTagName("*");
for (var i = 0, j = 0; i < elems.length; i++) {
if (elems[i].id == "name") {
if (++j % 5 === 4) {
var div = document.createElement("DIV");
div.id = "foo";
elems[i].parentNode.insertBefore(elems[i], elems[i].nextSibling);
}
}
}
})();
|
|
15.04.2011, 20:28
|
Аспирант
|
|
Регистрация: 15.04.2011
Сообщений: 47
|
|
Сообщение от Matre
|
(function () {
var elems = document.getElementsByTagName("*");
for (var i = 0, j = 0; i < elems.length; i++) {
if (elems[i].id == "name") {
if (++j % 5 === 4) {
var div = document.createElement("DIV");
div.id = "foo";
elems[i].parentNode.insertBefore(elems[i], elems[i].nextSibling);
}
}
}
})();
|
Сообщение от Matre
|
(function () {
var elems = document.getElementsByTagName("*");
for (var i = 0, j = 0; i < elems.length; i++) {
if (elems[i].id == "name") {
if (++j % 5 === 4) {
var div = document.createElement("DIV");
div.id = "foo";
elems[i].parentNode.insertBefore(elems[i], elems[i].nextSibling);
}
}
}
})();
|
Не работает
|
|
15.04.2011, 21:02
|
|
Люмус, Емаксос Developer!
|
|
Регистрация: 06.05.2010
Сообщений: 677
|
|
Идентификатор (id="name") в коде документа должен быть в единственном экземпляре, иными словами, встречаться только один раз.
|
|
15.04.2011, 21:41
|
Аспирант
|
|
Регистрация: 15.04.2011
Сообщений: 47
|
|
Можете дать пожалуйста пример как это полностью должно работать с js и html, а то я по разному пробовал, и никак!
|
|
15.04.2011, 23:43
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
faforty,
Рабочий вариант ...
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
.foo{
background-color: Red;
height: 25px;
}
</style>
<script type="text/javascript">
window.onload=function () {
var elems = document.getElementsByTagName("*");
for (var i = 0, j = 0; i < elems.length; i++) {
if (elems[i].className == "test") {
if (++j % 5==0) {
var div = document.createElement("DIV");
div.className = "foo";
elems[i].parentNode.insertBefore(div,elems[i].nextSibling);
}
}
}
};
</script>
</head>
<body>
<div class="test">бла-бла</div>
<div class="test">бла-бла</div>
<div class="test">бла-бла</div>
<div class="test">бла-бла</div>
<div class="test">бла-бла</div>
<div class="test">бла-бла</div>
<div class="test">бла-бла</div>
<div class="test">бла-бла</div>
<div class="test">бла-бла</div>
<div class="test">бла-бла</div>
</body>
</html>
|
|
16.04.2011, 06:53
|
Аспирант
|
|
Регистрация: 15.04.2011
Сообщений: 47
|
|
О спс, все работает!
|
|
16.04.2011, 08:04
|
Аспирант
|
|
Регистрация: 15.04.2011
Сообщений: 47
|
|
А можно еще вот так реализовать? У меня допустим:
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
и надо из этого сделать так, чтобы получились такие блоки:
<div class="inner-matrix">
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="clr"></div>
</div>
<div class="inner-matrix">
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="clr"></div>
</div>
|
|
16.04.2011, 10:45
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от faforty
|
А можно еще вот так реализовать?
|
можно
|
|
16.04.2011, 10:50
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
faforty,
А самому попробовать научиться ?
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
.clr{background:#FFD700;border:SaddleBrown 2px dashed;height:12px;margin:4px;}
.inner-matrix{background:#0F0;border:SaddleBrown 2px dashed;margin:4px;}
.video-box{background:#FFA500;border:SaddleBrown 2px dashed;margin:4px;}
</style>
<script type="text/javascript">
window.onload = function () {
for (var b = document.getElementsByTagName("*"), a = 0, e = 0; a < b.length; a++) {
var c = b[a];
if (c.className == "video-box") {
e++;
if (e % 6 == 1) {
var d = document.createElement("DIV");
d.className = "inner-matrix";
b[a].parentNode.insertBefore(d, c)
}
d.appendChild(c);
if (e % 6 == 0) c = document.createElement("DIV"), c.className = "clr", d.appendChild(c)
}
}
};
</script>
</head>
<body>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
<div class="video-box">бла-бла</div>
</body>
</html>
Последний раз редактировалось рони, 16.04.2011 в 11:05.
|
|
|
|