Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 02.06.2017, 09:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

ksa,
Ответить с цитированием
  #12 (permalink)  
Старый 04.06.2017, 01:51
Новичок на форуме
Отправить личное сообщение для cartgen Посмотреть профиль Найти все сообщения от cartgen
 
Регистрация: 02.06.2017
Сообщений: 2

Спасибо большое!

Только какой вариант выбрать?
<div class="pdf" style="width: 100px;"></div>
<div class="pdf" style="width: 200px;"></div>
<div class="pdf" style="width: 300px;"></div>
<div class="pdf" style="width: 400px;"></div>
<div class="pdf" style="width: 5px;"></div>

<script>
var o = document.getElementsByClassName('pdf');
var max=0;
for (var i = 0; i < o.length; ++i) {
  var val = +o[i].style.width.replace('px', ''); 
  if (val>max) max=val;
}
alert(max);

</script>


Или

<div class="pdf" style="width: 100px;"></div>
<div class="pdf" style="width: 200px;"></div>
<div class="pdf" style="width: 300px;"></div>
<div class="pdf" style="width: 400px;"></div>
<div class="pdf" style="width: 5px;"></div>

<script>
var o = document.getElementsByClassName('pdf');
var max=[].reduce.call(o,function(a,b) {
   return Math.max(a, b.scrollWidth)
},0);
alert(max);

</script>


Наверно там, где буковок меньше?
Ответить с цитированием
  #13 (permalink)  
Старый 04.06.2017, 02:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

cartgen,
самый оптимальный скорее всего будет этот
<div class="pdf" style="width: 100px;"></div>
<div class="pdf" style="width: 200px;"></div>
<div class="pdf" style="width: 300px;"></div>
<div class="pdf" style="width: 400px;"></div>
<div class="pdf" style="width: 5px;"></div>

<script>
var o = document.getElementsByClassName('pdf');
var max=0;
for (var i = 0; i < o.length; ++i) {
  var val = o[i].scrollWidth;
  if (val>max) max=val;
}
alert(max);

</script>
Ответить с цитированием
  #14 (permalink)  
Старый 04.06.2017, 10:15
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от рони
самый оптимальный скорее всего будет этот
Если объектов много, можно в цикле по срезу половины первого массива проверять сразу два.
Ответить с цитированием
  #15 (permalink)  
Старый 04.06.2017, 10:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

laimas,
а можно код?
Ответить с цитированием
  #16 (permalink)  
Старый 04.06.2017, 10:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Типа такого:

var max = i = n = 0,
    a = document.getElementsByClassName("pdf"),
    b = [].slice.call(a, Math.floor(a.length/2)); 

for(; i < b.length; i++) (n = Math.max(a[i].scrollWidth, b[i].scrollWidth)) > max && (max = n);
Ответить с цитированием
  #17 (permalink)  
Старый 04.06.2017, 10:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

laimas,
спасибо
Ответить с цитированием
  #18 (permalink)  
Старый 04.06.2017, 10:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А можно просто обходить массив с двух сторон в цикле с итерацией Math.round(array.length/2). Но массивы хранятся в памяти в последовательных ячейках, а значит последовательный обход самый быстрый. В тоже время и ссылка на память с постоянным смешением -1 тоже по идее быстро будет.

В общем фиг его знает, надо тестировать.
Ответить с цитированием
  #19 (permalink)  
Старый 04.06.2017, 12:06
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Цитата:
Наверно там, где буковок меньше
<div class="pdf" style="width: 100px;"></div>
  <div class="pdf" style="width: 200px;"></div>
  <div class="pdf" style="width: 300px;"></div>
  <div class="pdf" style="width: 400px;"></div>
  <div class="pdf" style="width: 5px;"></div>
  <script>
const max = Math.max(...Array.from(document.querySelectorAll('.pdf'), el => el.scrollWidth));
alert(max);
  </script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выводить значение раньше переменных Гробовщик Общие вопросы Javascript 11 10.09.2013 08:42
как определить значение css transition (jquery) BelkinV Общие вопросы Javascript 3 03.01.2013 18:15
Как определить картинки в div. jeysmook jQuery 2 14.06.2012 11:28
Установить максимальное значение скролбара, как? ацкий Общие вопросы Javascript 5 25.08.2011 00:44
Как получить значение атрибута width в теге img, находящемся в скрытом диве? kolyan1983 Internet Explorer 4 21.03.2011 15:14