Добавить после каждого n элемента html код
Здравствуйте помогите пожалуйста в чем моя ошибка?
<script type="text/javascript"> var colst; function funonload() { if colst>3 { document.write('<div class="clr"></div>'); colst=0; }else{ colst=colst+1; } }); |
В том, что это не javascript. Увы компьютеры пока не дошли до такого уровня, чтобы исполнять любой бред вываленный пользователем. Но не отчаивайтесь, ещё лет 15-20 и всё будет.
|
))))
Может помножите сделать. Дело в том что мне нужно добавить <div class="clr"></div> после кажного элемента с классом к примеру newsgl |
что касается моего кода его и в правду можно назвать бредом))
|
MyaSniK093,
помедитируйте тут может чем поможет |
var newsgl = document.getElementsByClassName('newsgl'), i = newsgl.length, clr = document.createElement('clr'); clr.className = 'clr'; while(i--){ newsgl[i].parentNode.insertBefore(clr.cloneNode(true), newsgl[i].nextSibling || null); } |
:write: на всякий случай
можно без Цитата:
clr = document.createElement('div') <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> body{ background-color: #D2691E; } .newsgl{ background-color: #006400; height: 25px; } .clr{ background-color: #E0FFFF; height: 5px; } </style> <script> window.onload = function () { var newsgl = document.getElementsByClassName('newsgl'), i = newsgl.length, clr = document.createElement('div'); clr.className = 'clr'; while(i--){ newsgl[i].parentNode.insertBefore(clr.cloneNode(true), newsgl[i].nextSibling); } } </script> </head> <body> <div class="newsgl"></div> <div class="newsgl"></div> <div class="newsgl"></div> </body> </html> |
рони, помню что в каком-то браузере требует строго null. Может уже не актуально конечно, но мне проще лишнего написать.)
|
Спасибо большое за помощь всем вы очень помогли.
|
рони, проверил, актуально как минимум для IE<9.
|
Aetae,
а может всётаки неактуально ? может у вас ошибка на getElementsByClassName вылазит? как мог проверил даже емулятор ие6 проглотил без вопросов без null, естественно getElementsByClassName заменил для 6. |
Wat?! Хреновый эмулятор у вас.)
<!DOCTYPE html> <body> <script> try{ document.body.insertBefore(document.createTextNode('true'), undefined) }catch(e){ document.write(e.message) } </script> </body> <html> http://ajitae.ru/testinsert.html ie11 ie8 |
Странно сделал как мне надо но для второго класса не работает и только в мазиле.
<script> window.onload = function () { var shortstorynotfixed = document.getElementsByClassName('shortstorynotfixed'), i = shortstorynotfixed.length, clr = document.createElement('div'); clr.className = 'clr'; var j=1; while(j => i){ shortstorynotfixed[j].parentNode.insertBefore(clr.cloneNode(true), shortstorynotfixed[j].nextSibling || null); j=j+2;} var cussh = document.getElementsByClassName('cusshortstorynotfixed'), x = cussh.length, clr = document.createElement('div'); clr.className = 'clr'; var z=1; while(z => x){ cuss[z].parentNode.insertBefore(clr.cloneNode(true), cussh[z].nextSibling || null); z=z+2;} } </script> |
Aetae,
можно я всёравно поспорю ))) newsgl[i].nextSibling --- выдаст либо элемент либо null |
MyaSniK093, во-первых: не пишите в одну строчку, уже завтра сами глаза сломаете.
Во-вторых: в javascript "больше или равно" >= , а не =>. Может всё-таки стоит почитать хотябы про базовый синтаксис? В-третьих: в вашем случае нужно <=. рони, однако.) В данном случае да, вы таки правы. Но бывают всё-таки варианты с undefined(.childNodes[n] итд), оно видно у меня в памяти и засело. |
MyaSniK093,
вам показали нормальный обход -- от последнего элемента к первому -- иначе при каждой вставке индекс надо будет корректировать |
с оператором я не доглядел, но мне надо чтоб clr добавлялся после каждого второго.
Мне это нужно для отображения новостей в 2 колонки на главной странице и при этом на ней выводиться 2 категории поэтому пришлось прибегнуть к javascript. |
рони, да никуда не денутся, выбраны же по классу, а не по тегу.)
MyaSniK093, что надо поменять - я вам сказал. |
да это я поменял но почему то вторая часть функции не работает она даже не выполняться.
|
MyaSniK093, у вас опечатка cuss[z] вместо cussh[z].
Используйте редакторы с подсветкой, чтобы таких проблем не возникало. Используйте консоль(f12), чтобы видеть в чём проблема, коли она таки возникнет. |
Цитата:
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> body{ background-color: #D2691E; } div{ border: #000000 1px solid } .cusshortstorynotfixed{ background-color: #006400; height: 25px; } .clr{ background-color: #E0FFFF; height: 5px; } .shortstorynotfixed{ background-color: #FFFF00; height: 25px; } </style> <script> window.onload = function () { var newsgl = document.getElementsByClassName('cusshortstorynotfixed'), len = newsgl.length, i = 1, clr = document.createElement('div'); clr.className = 'clr'; while (i < len) { var el = newsgl[i]; el && el.parentNode.insertBefore(clr.cloneNode(true), el.nextSibling); i += 2; }; newsgl = document.getElementsByClassName('shortstorynotfixed'), len = newsgl.length, i = 1; while (i < len) { var el = newsgl[i]; el && el.parentNode.insertBefore(clr.cloneNode(true), el.nextSibling); i += 2; } }; </script> </head> <body> <div class="cusshortstorynotfixed"></div> <div class="cusshortstorynotfixed"></div> <div class="cusshortstorynotfixed"></div> <div class="cusshortstorynotfixed"></div> <div class="cusshortstorynotfixed"></div> <p></p> <div class="shortstorynotfixed"></div> <div class="shortstorynotfixed"></div> <div class="shortstorynotfixed"></div> <div class="shortstorynotfixed"></div> <div class="shortstorynotfixed"></div> </body> </html> |
Я опечатку исправил сразу же но все же вторая часть кода не выполнялась почему то Спасибо большое всем за помощь все работает как дано.
|
тема закрыта
|
Часовой пояс GMT +3, время: 05:48. |