for(let i=0;i<2;i++)for(let i=0;i<2;i++)console.log(i); //покажет 4 раза
for(var i=0;i<2;i++)for(var i=0;i<2;i++)console.log(i); //покажет 2 раза
var iconN, iconU; //опа!
$( ".djeym__balloon__content-body .djeym_add_placemark" )
.on( "click", function( event ) {
event.stopPropagation();
var $this = $( this );
iconU = $this.data('icon_url'); //хоп
iconN = $this.data('icon_name'); //хоп
djeymContextMenuPlacemark( mapEvent, true, coords );
} );
let iconName = ( mode ) ? iconN :
objEvent.properties.get( "iconName" );
let imgSrc = ( mode ) ? iconU :
objEvent.options.get( "iconImageHref" );
<script>
var all = document.getElementsByClassName('main-menu__link');
for (let i=0; i<all.length; i++) {
all[i].onclick = function() {
setTimeout(function() {
window.location = 'http://site.com/checkout';
}, 500);
}
};
</script>
<script>
[...document.getElementsByClassName('main-menu__link')].forEach(e=>e.onclick = function() {
setTimeout(function() {
window.location = 'http://site.com/checkout';
}, 500);
});
</script>
//Классика
var blockEl = document.querySelector('.block');
if (blockEl) {
// .....
}
//Внутри функции
var blockEl = document.querySelector('.block');
if (!blockEl) return;
//Обёртка
try {
var blockEl = document.querySelector('.block');
// .....
} catch(e) {}
//Обманка
var blockEl = document.querySelector('.block') || {};
//Хитрые обманки
var blockEl = document.querySelector('.block') || { querySelector: e=>{} };
// и т.д.
function first(){
return new Promise(next=>{
setTimeout( function(){
console.log(1);
next('привет');
}, 1000 );
});
}
function second(txt){
console.log('После first получили:', txt);
console.log(2);
}
first().then(second); //Сначала first, затем second
function first(e){
console.log('start',e);
return new Promise(next=>{
console.log('promise');
setTimeout( function(){
console.log('main code... ' + Math.random());
next(e);
}, 2000 );
});
}
function second(e){
console.log('end '+e);
}
var arr = ['element_0', 'element_1', 'element_2', 'element_3', 'element_4'];
arr.forEach(e=>first(e).then(second));
Обратите внимание, что вся суть и работа в итоге записывается в одну строчку в конце. И получается очень красиво и логично. А весь код до этого - чисто подготовка и объявления.x = x * 0.9 //оставить 90%, то есть по сути отнять 10%
x = x - 0.1 * x //от х отнять 10%
//В лоб проще и короче. Ещё и умную валидацию можно прикрутить при желании
function anyFunc(options){
// тут что то делаем обращаясь к параметрам через options.keyName.
// например:
const text = anyFormat(options.data, options.format || {});
anySave((options.path||"./temp") + "/" + (options.file||"plt_temp_data.txt"), text);
}
//Аналогично
function anyFormat(data, format) {
// ...... (format.fixed || 2) ........ (format.space || " ") ...... и т.п.
}
var validateName = /^\s*[a-zA-Zа-яА-ЯёЁ]+\s+[a-zA-Zа-яА-ЯёЁ]+\s*$/;
value = value.trim().replace(/\s+/g, ' '); //перед отправкой
let selectAllButton = document.querySelector('.btn_done');
if (!selectAllButton) {
alert('Реально fuck');
alert('Подождём чуть');
setTimeout(e=>{
let selectAllButton = document.querySelector('.btn_done');
if (!selectAllButton) alert('Не, ну я так не играю. Что за нах?');
else alert('А щас норм. Странно.');
}, 1000);
} else {
selectAllButton.onclick = function(){
alert('Норм');
};
}