как написать условие?
как написать условие?
если значение любого из селектов > 0 |
ES5 пример:
<select>
<option value=0>Value 0</option>
<option value=1>Value 1</option>
</select>
<select>
<option value=0>Value 0</option>
<option value=1>Value 1</option>
</select>
<button>Проверить</button>
<script>
Array.some || (Array.some = Function.prototype.call.bind(Array.prototype.some));
var selects = document.querySelectorAll('select');
function check() {
var someIsPositive = Array.some(selects, function(select) {
return select.value > 0;
});
if (someIsPositive) {
alert('Есть положительные');
} else {
alert('Все нулевые');
}
}
document.querySelector('button').onclick = check;
</script>
|
test=function(arr){
try{arr.forEach(function(el){if(el<1) throw false})}catch(e){return e}
return true
}
alert(test([1,2,3,4,5]))
alert(test([1,2,0,4,5]))
// true
// false
|
krutoy, предлагаю тебе мигрировать на другой портал: http://govnokod.ru/
Тебе там будет комфортно :) Но подход, да, интересный. В нескольких случаях его использовал. |
<!DOCTYPE HTML>
<html>
<head><meta charset="windows-1251" /> </head>
<body>
<select>
<option value=0>Value 0</option>
<option value=1>Value 1</option>
</select>
<select>
<option value=0>Value 0</option>
<option value=1>Value 1</option>
</select>
<button>Проверить</button>
<script>
test=function(){
var sels = document.getElementsByTagName('select'), arr=[]
for(var i=0; i<sels.length; i++) arr.push(sels[i].value)
try{arr.forEach(function(el){if(el<1) throw false})}catch(e){return e}
return true
}
document.querySelector('button').onclick = function(){alert(test())};
</script>
</script>
</body>
</html>
|
Цитата:
|
рони,
А почему нет? Вообще, я где то слышал, что windows-1251 быстрей. |
Цитата:
var someIsPositive = false;
for (var i = 0; i < selects.length; i++) {
if (+[i].value > 0)
someIsPositive = true;
}
|
Erolast,
forEach - более высокоуровневая конструкция, с ней проще, уровень абстракции другой, проще комбинировать. |
Цитата:
Я то не про forEach говорю. А krutoy, просто не в курсе про some() вот и пишет, как обычно, говнокод ) А может намеренно это делает. Хотя нет, не буду его переоценивать ) |
Erolast, кстати break забыл. Или вынести в функцию и делать return
|
Цитата:
|
:write:
for (var i = 0; i < selects.length; i++) {
if (!selects[i].value)
return false;
}
return true
|
Цитата:
Цитата:
|
Цитата:
|
Erolast,
Там нет никаких танцев с ошибками. |
danik.js,
Ты, значит употребил в коде новую свистоперделку, и он стал от этого лучше? Минималистичней, компактней, выразительней? Да вроде нет, наоборот, все длинней и мутней, в плане совместимости -- хуже. Тогда почему ты раскраснелся от счастья? Смотри не лопни. |
Цитата:
|
Erolast,
Отвали со своим тупняком, тебе выше объяснили, читай, блять |
Ты о себе уже во вмножественном числе говоришь :D
|
krutoy,
тоже непонимаю использования везде try , for in и 1251 |
Erolast,
Тебе другие объясняли не я, даник тебе объяснял. Он хоть и клоун, но хоть что-то в голове есть в отличии от. |
рони,
try используется для нелокального выхода, считай, что это goto. for in мне нравится, потому что JS -- это не сишка, это высокоуровневый язык. Впадлу числодрочевом мне заниматься. win-1251 я использую, потому что у меня венда щас стоит, и мне лень перекодировать. |
рони,
А я, кстати, вот этого не понял
for (var i = 0; i < selects.length; i++) {
if (![i].value)
return false;
}
return true
На что указывает [i]? |
Цитата:
|
danik.js,
И вот еще что, кстати, зачем ты используешь вот эту Array.some || (Array.some = Function.prototype.call.bind(Array.prototype.some)); еб*тую конструкцию, смысла которой сам не понимаешь, если [].some.call должен работать везде точно также? |
Цитата:
Цитата:
Твое дерьмо: Цитата:
var test = function(array){
return array.some(function(element) { return element > 0 });
};
alert(test([0,0,3,0,5]))
alert(test([0,0,0,0,0]))
// true
// false
Ты кстати затупил. Перечитай вопрос тс. Если ты про дженерик Array.*, то это всего лишь вариант. Мне он нравится, я показал как его кроссбраузерно использовать. Можно и без него прожить. |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Хули там объяснять. Чтоб не писать some.call, привязали контекст (some) намертво, через bind. Вот и все.
|
Вообще, F# изменил мое сознание. Всем советую.
|
Цитата:
|
Цитата:
Цитата:
PS. krutoy, danik.js, Вы оба немного напрягаете. Ваши оскорбления, цензура и т.д. напрягают. danik.js, будь проще не обращай внимание на него. Ты же знаешь, он по выкобенивается, по понтуется, а спустя время осознает что был не прав. Как собственно и многие здесь проходили через это. Пусть колотит себя в груди доказывая что он крут, его право. Но время всегда всех меняет. |
Цитата:
Цитата:
|
Цитата:
Вот чего я не знаю - так это судьбу Array.some и прочих "статических" методов. Они хоть есть в каком-нибудь стандарте? |
Цитата:
|
Цитата:
|
Цитата:
На заметку. JavaScript'у более предпочтительно все же работать с UTF-8 так как это его родная кодировка. |
| Часовой пояс GMT +3, время: 11:32. |