.row {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
margin-right: -15px;
margin-left: -15px;
margin-top: 20px;
}
margin-right: -15px;
margin-right: -15px;
var n = prompt('введите начальное число диапозона', '0');
var k = prompt('введите конечное число диапозона', '0' );
var n = parseInt(prompt('введите начальное число диапозона', '0'), 10);
var k = parseInt(prompt('введите конечное число диапозона', '0' ), 10);
9 < 10 // true
'9' < '10' // false
Во втором случае получается «ложь», потому что строки сравниваются по кодам символов, начиная с первого символа, те '9' < '1'. Смотрим коды символов:'9'.charCodeAt(0) // 57
'1'.charCodeAt(0) // 49
57 больше 49, поэтому сравнение заканчивается, выдавая значение false.@page {
size: 3in 3in;
margin: 0;
}
@media print {
html, body {
width: 3in;
height: 3in;
}
}
function getData(obj_form){
var hData = {};
$('input, textarea, select', obj_form).each(function(){
if(this.name && this.name!=='') {
var data;
if (this.type === 'checkbox') {
console.log('ветка true');
data = this.checked;
} else {
console.log('ветка false');
data = this.value;
}
hData[this.name] = data;
console.log('hData[' +this.name + '] = ' + hData[this.name]);
}
});
return hData;
};
fetch(url).then(function(response) {
return 42;
})
(42).then() // => TypeError: 42.then is not a function
Вторая причина, это то что промисы не выполняются сразу. В этом и смысл, верно? Мы создаём цепочку отложенных вычислений по принципу Если произошло это, тогда сделать То, а потом Вот это и т.д. Методу then просто нечего возвращать на тот момент, когда ты его запускаешь. Его запуск только создаёт план действий.'use strict';
let urls = [
'https://apiv2.bitcoinaverage.com/indices/global/ticker/ETHUSD',
'https://apiv2.bitcoinaverage.com/indices/global/ticker/LTCUSD',
'https://apiv2.bitcoinaverage.com/indices/global/ticker/BTCUSD'
];
let data = urls.map((item, index) => {
return fetch(item).then(function(response) {
return response.json();
}).then(function(data) {
console.log(data);
}).catch( alert );
})
console.log(data);
Сначала в консоли появится массив промисов, который ты уже видел. А уже через секунду три объекта, которых ты ждал.'use strict';
let urls = [
'https://apiv2.bitcoinaverage.com/indices/global/ticker/ETHUSD',
'https://apiv2.bitcoinaverage.com/indices/global/ticker/LTCUSD',
'https://apiv2.bitcoinaverage.com/indices/global/ticker/BTCUSD'
];
let array = urls.map((item, index) => {
return fetch(item).then(function(response) {
return response.json();
}).catch( alert );
});
Promise.all(array).then(console.log);
span
и примени к нему что-то типа border-bottom: 4px solid red;
function(event) {
event.preventDefault();
$('.device_model_btns a').removeClass('active');
$(this).addClass('active');
var id = $(this).attr('href');
$('.phone_tabs_item').hide();
$('.phone_tabs_item').removeClass('phone_tabs_item_active');
$(id).addClass('phone_tabs_item_active');
$(id).show();
resetMoreContentBtn();
}
var firstname, surname;
function User() {
this.setFirstName = function(name) {
if (name.replace) {
firstname = name;
}
else {
throw new Error('Введите имя');
}
}
this.setSurname = function(name) {
if (name.search) {
surname = name;
}
else {
throw new Error('Введите фамилию');
}
}
this.getFullName = function() {
return firstname + ' ' + surname;
}
}
var user = new User();
user.setFirstName("Петя");
user.setSurname("Иванов");
alert( user.getFullName() ); // Петя Иванов
var user2 = new User();
user2.setFirstName('Фёдор');
user2.setSurname("Марков");
alert( user2.getFullName() );
alert( user.getFullName() ); // Уже не Петя Иванов
function func(arr, parametres) {
for (let i = 0; i < parametres.length; i++) {
const param = parametres[i];
let condition;
if (param.type === 'type1') {
condition = true;
} else if (param.type === 'type2') {
condition = false;
} else {
// может ли быть 'type3' или что-то такое, тогда пропускаем этот шаг
continue;
}
// судя по телу второго цикла
// при каждой итерации founded переписывается
// значит в результате происходит сравнение только последней пары
// и цикл можно убрать
if (
(
arr[arr.length - 1].property1 === param.property1 &&
arr[arr.length - 1].property2 === param.property2
) === condition
) {
return false;
}
// но скорее всего это была бага, и цикл нужно переписать так
for (let j = 0; j < arr.length; j++) {
if (
(
arr[j].property1 === param.property1 &&
arr[j].property2 === param.property2
) === condition
) {
// при первом же совпадении функция будет завершена
// без бесполезных проходов по оставшимся элементам
return false;
}
}
}
return true;
};