Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как получить максимальное значение и присвоить аттрибут? (https://javascript.ru/forum/misc/61924-kak-poluchit-maksimalnoe-znachenie-i-prisvoit-attribut.html)

repz 16.03.2016 00:46

Как получить максимальное значение и присвоить аттрибут?
 
Здравствуйте!
в цикле выводятся текстовые поля, где поле value у них число, например
value=100
value=150
value=110

как найти максимольное из них и присвоить атрибут id?

Vlasenko Fedor 16.03.2016 00:59

alert(Math.max.apply(null, [100,150,110]));

repz 16.03.2016 01:07

Это как получить максимальное число в массиве. Мы заранее не знаем числа.
Как его потом найти среди одинаковых инпутов? и присвоить атрибут?

repz 16.03.2016 01:15

есть:
<div>
<input type="text"  value=200>
<input type="text"  value=100>
</div>


хотелось бы:
<div>
<input type="text"  value=200 id="id">
<input type="text"  value=100>
</div>

рони 16.03.2016 01:19

repz,
циклом по инпутам и запоминать индекс если текущий value больше "'эталонного"

hhh 16.03.2016 01:23

<input type="text" value="100">
<input type="text" value="150">
<input type="text" value="110">

<script>
var max = 100;

for (var i = 0; i < document.querySelectorAll("input").length; i++) {
  var numb = Number(document.querySelectorAll("input")[i].value);

  if (numb > max) {
    max = numb;
   alert(max);
  }
  var selector = 'input[value="'+max+'"]';

}

document.querySelector(selector).id = "someid";
</script>

рони 16.03.2016 01:30

repz,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    #abracadabra  {
      background-color: #00FF00;
    }

  </style>

</head>

<body>
<div>
<input type="text"  value=200>
<input type="text"  value=100>
<input type="text"  value=500>
<input type="text"  value=100>
</div>
<script>
window.addEventListener("DOMContentLoaded", function() {
    var a = document.querySelectorAll("div input");
    [].reduce.call(a, function(a, b) {
        return 0 <= a.value - b.value ? a : b
    }, a[0]).id = "abracadabra"
});
</script>
</body>

</html>

repz 16.03.2016 21:23

Спасибо, большое все получилось.
Но на практике , как всегда, не все так просто, в некоторых случаях инпутов мб больше и они в разных дивах.
Решил указанием класса дива вот тут:
var a = document.querySelectorAll(".option input");

И присвоением класса диву, вот тут:
<div class="option" >
	<input type="text"  value=200>
	<input type="text"  value=100>
	<input type="text"  value=500>
	<input type="text"  value=100>
</div>

Проблема:
Мб такая ситуация
<div class="option" >
	<input type="text"  value=400>
	<input type="text"  value=340>
	<input type="text"  value=0>
	<input type="text"  value=560>
</div>
<div class="option" >
	<input type="text"  value=200>
	<input type="text"  value=100>
	<input type="text"  value=500>
	<input type="text"  value=100>
</div>

т.е. два одинаков дива с инпутами, максимум от рони выберет только в последнем, как можно выбрать максимальное значение в обоих дивах, но только одно на двоих? т.е. 560

Спасибо.

рони 16.03.2016 22:37

Цитата:

Сообщение от repz
максимум от рони выберет только в последнем

:blink:
Цитата:

Сообщение от repz
т.е. 560

что не так?
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    #abracadabra  {
      background-color: #00FF00;
    }

  </style>

</head>

<body>
<div class="option" >
	<input type="text"  value=400>
	<input type="text"  value=340>
	<input type="text"  value=0>
	<input type="text"  value=560>
</div>
<div class="option" >
	<input type="text"  value=200>
	<input type="text"  value=100>
	<input type="text"  value=500>
	<input type="text"  value=100>
</div>

<script>
window.addEventListener("DOMContentLoaded", function() {
    var a = document.querySelectorAll(".option input");
    [].reduce.call(a, function(a, b) {
        return 0 <= a.value - b.value ? a : b
    }, a[0]).id = "abracadabra"
});
</script>
</body>

</html>

repz 16.03.2016 22:42

рони, простите за бестактность, я был не прав(
пытаюсь адаптировать под rel
<input type="text"  value=100 rel=100>

никак не могу получить его вместо value(


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