Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Рандомный вывод данных HTML


Автор: BSTtorm 2.7.2014, 14:53
Привет всем. Есть одностраничный сайт на html. На нем есть куча информации вида 

<div class="object">
информация1
</div> 
<div class="object">
информация2
</div> 
<div class="object">
информация3
</div> 


Нужно что бы при каждом обновлении страницы все <div class="object"> перемешивались между собой. нашел вот скрипт 
Код

<script language="javascript">
<!-- Random HTML

function RandomHTMLLong(args,delim)
{
/* si: start index 
** i: current index
** ei: end index
** cc: current count
*/
 htmlSet = new Array();
 si = 0; 
 cc=0;
 ei = args.length;
  for (i=1;i<ei;i++) {
    if (args.charAt(i) == delim) {
      htmlSet[cc] = args.substring(si,i);
      cc++;
      si=i+1;
      }
    }
  ind = Math.floor(Math.random() *cc);

  document.write(htmlSet[ind]);
}

function RandomHTML(args)
{
  RandomHTMLLong(args,',');
}

// End Script -->
</SCRIPT>

RandomHTMLLong('Доброго времени суток!, Как дела?,<a class="promo" href=http://web-mastery.info/>Все для создания сайта</a>,<img src=img.jpg width=100 height=100 alt="картинка">,<table border=1><tr><td>Это таблица</td></tr></table>,',',');



Просто слова, фразы выводит, а если меняю на свои <div class="object">
информация1
</div> 

не выводит вобще ничего.

Автор: Aliance 2.7.2014, 15:30
Видимо, скрипт бородатый. Сейчас мало кто использует document.write.
Вот накидал примерчик: http://jsfiddle.net/Aliance/C27CF/

Автор: AVA12 2.7.2014, 18:47
Скрипт действительно древний (либо писался по древнему учебнику) - это видно по атрибуту language="javascript" и HTML-комментариям. К тому же, писал явно новичок в HTML и яваскрипте (глобальные переменные, незнание функции String.split()), да и, похоже, в программировании. К тому же, подозреваю, код скопирован с ошибками - во всяком случае, функция выводит только один случайно выбранный блок. Так что лучше этот код выбросить.

Ничего не выводится потому, что функция требует наличие в переданной строке односимвольных разделителей записей, а в HTML-коде они отсутствуют.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)