Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Посчитать сумму ширины всех элементов в наборе без использования цикла (https://javascript.ru/forum/jquery/56322-poschitat-summu-shiriny-vsekh-ehlementov-v-nabore-bez-ispolzovaniya-cikla.html)

Alex_D181 10.06.2015 11:08

Посчитать сумму ширины всех элементов в наборе без использования цикла
 
Доброго времени суток, задался вот таким вопросом. Есть набор элементов, найденных с помощью jquery. Я хочу получить сумму ширины всех элементов.

Как сделать это через цикл я знаю, интересно можно ли это сделать другим образом.

ksa 10.06.2015 11:50

Цитата:

Сообщение от Alex_D181
Как сделать это через цикл я знаю, интересно можно ли это сделать другим образом.

Только цикл...

sogoodweather 10.06.2015 12:28

<html>
<head>
</head>
<body>

<div style="width: 10px; height: 20px; background: red"></div>
<div style="width: 10px; height: 20px; background: red"></div>
<div style="width: 10px; height: 20px; background: red"></div>


<script>

collection=[].map.call(document.querySelectorAll("div"), function(x){return x})

getIntWidth=function(x){return parseInt(x.style.width)}
sum=function(x, y){return x+y}

alert(
 collection.map(getIntWidth).reduce(sum)
)





</script>

</body>
</html>

ksa 10.06.2015 13:20

sogoodweather, это типа не цикл? :D

devote 10.06.2015 13:38

без цикла:
<div id="id1" style="width: 10px; height: 20px; background: red"></div>
<div id="id2" style="width: 10px; height: 20px; background: red"></div>
<div id="id3" style="width: 10px; height: 20px; background: red"></div>
<script>
 alert(
   document.getElementById('id1').offsetWidth + 
   document.getElementById('id2').offsetWidth + 
   document.getElementById('id3').offsetWidth
 );
</script>

ksa 10.06.2015 13:53

Цитата:

Сообщение от devote
без цикла

:lol:

рони 10.06.2015 15:04

:write:
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .test{
    display: inline-block;
  }
  .test div{
    float: left;
  }

  </style>
</head>

<body>
<html>
<head>
</head>
<body>

<div style="width: 10px; height: 20px; background: red"></div>
<div style="width: 10px; height: 20px; background: red"></div>
<div style="width: 10px; height: 20px; background: red"></div>



<script>
var b =  document.body;
b.classList.add('test')
alert(b.offsetWidth)
</script>

</body>
</html>

</body>

</html>

sogoodweather 10.06.2015 15:36

Цитата:

Сообщение от ksa
это типа не цикл?

нет.функция -- это не цикл. (независимо от внутренней реализации)


Часовой пояс GMT +3, время: 11:18.