W
, а вторая кнопка мыши - пробел
с автоповтором:const buttonChars = {
1: 'W', // левая (основная) кнопка мыши
2: ' ', // правая (второстепенная) кнопка
};
/* коды кнопок см. в https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons
0 : No button or un-initialized
1 : Primary button (usually the left button)
2 : Secondary button (usually the right button)
4 : Auxilary button (usually the mouse wheel button or middle button)
8 : 4th button (typically the "Browser Back" button)
16 : 5th button (typically the "Browser Forward" button)
Могут быть нажаты одновременно несколько кнопок мыши - их коды суммируются.
*/
let timer;
const clearTimer = () => {if (timer) clearInterval(timer);}
const root = window;
root.addEventListener("mousedown", e => {
if (buttonChars.hasOwnProperty(e.buttons)) {
const func = () => e.target.dispatchEvent(
new KeyboardEvent('keydown',{
'key': buttonChars[e.buttons],
'bubbles': true,
'cancellable': true,
})
);
func();
clearTimer();
timer = setInterval(func, 80);
};
});
root.addEventListener("mouseup", clearTimer);
var a = 9007199254740991 + 1;
var b = 9007199254740991 + 2;
a === b; // true
- Не понимаю, как оставить класс first у первого item?
.attr('id',new_id)
Вообще достаточно один раз при запуске приложения сохранить где-то узел образца, убрав его из DOM. И дальше работать с той константой.- Почему массив item: undefined?
querySelector()
возвращает первый найденный DOM-узел.- Почему в массиве first 1 элемент (так-то оно и должно быть по идее, но он же удаляется у первого item)
first
определяется только один раз в начале скрипта, когда такой только один. И более не переопределяется.- Почему кнопка "удалить" которая должна окрасить в желтый цвет item в котором она находится, не окрашивает его
deleteThis
у вас это коллекция узлов. У неё нет метода addEventListener()
. Он есть у каждого её элемента. Надо пройтись циклом и навесить слушателя на каждого.console.log()
, чтобы посмотреть, когда что срабатывает и какие там значения у переменных. ((w) => {
function superpooper(secret) {
const pass = encodeURIComponent(secret);
return function onHashChange(){
var hash = w.location.hash.replace(/^#/,"");
if (!hash.length) return;
const xor = s => s.split('').map((c,i)=>String.fromCharCode(c.charCodeAt(0)^pass.charCodeAt(i%pass.length))).join('');
if (hash[0]==='!') {
hash = hash.substring(1);
const decoded = decodeURIComponent(xor(atob(hash)));
history.replaceState(null, null, document.location.pathname + '#' + decoded);
} else {
const encoded = btoa(xor(encodeURIComponent(hash)));
history.replaceState(null, null, document.location.pathname + '#!' + encoded);
}
}
}
w.addEventListener("hashchange", superpooper("abrakadabra"), false);
})(window)
#Моё секретное сообщение
оно тут же заменяется на!RFBHJVtEVlRbMURTVzZRTlNRIydXU1QmQ0RZVF1QR0BUU1JXU14lVURQR1lQR0BUL1FBU1cwVERQRyVbRFZUIDNEU1c2UE5TUVlSV1NUJkJEWVQmVEdAVCVTV1NeWVZEUEclUUdAVCklQVNXNlFEUEcjLkRWVCZCRFNXMFROU1FTUldTVCZDRFlUXFBHQFQlUldTXiMhRFBHJVFHQFQpJEFTVzZRRFBHI1pEVlQmQ0RTV0pYTlNRJVJXU1QgR0RZVCBRR0BUIyZXU14lVERQRyNZR0BUL1FBU1cwVA==
abrakadabra
encodeURIComponent()
, чтобы нормально работало с кириллицей, смайликами и emoji. btoa('youtext') // "eW91dGV4dA=="
– тут никаких ключей не требуется.atob("eW91dGV4dA==") // "youtext"
$('#two_categor_mess').click( function() {
var feedback = 'hello';
addMessage(userTwoMsg('<div class="sender-text"><p>Please tell us about PatShop and PatStudio</p></div>'));
$('.delivered').addClass('old');
$('.patshop_bot').addClass('old');
addDelivered('Delivered');
setTimeout(function() {
setTimeout(function() {
addReceived(feedback);
$('.typing_block').hide();
}, 1000);
$('.delivered').addClass('old');
addDelivered('Read');
addTypingBlock();
}, 500);
});
// Helper functions
const addMessage = content => $('.message-screen').append(content);
const userTwoMsg = content => '<div class="user_two_message col-xs-12 col-sm-12">' + content + '</div>';
const addTypingBlock = () => addMessage(userTwoMsg('<div class="typing_block"></div>'));
const addDelivered = status => addMessage('<div class="delivered"><span>' + status + '</span></div>');
const addReceived = text => addMessage(userTwoMsg('<div class="received-text"><p>'+text+'</p></div>'));
function onSendClickDelayed() {
var divValue = $('.sender-text').last().text();
var test = 'hello';
var feedback = 'hello ';
var feedbackhowareyou = 'good ';
var feedbackalret = ' Im sorry Im in development and dont understand some of the messages. Here are the questions I can help you with: ';
var selectcategories = '<div class="swiper-container"><div class="swiper-wrapper"><div class="swiper-slide" id="first_categor_mess"><p>What is PatShop and PatStudio?</p></div><div class="swiper-slide" id="two_categor_mess"><p>How to add your project</p></div><div class="swiper-slide" id="last_categor_mess"><p>How to buy the project</p></div></div></div>';
var selectcategoriestext = 'Choose one of the categories';
if (divValue.indexOf(test) >= 0) {
setTimeout(function() {
addReceived(feedback);
$('.typing_block').hide();
}, 1000);
$('.delivered').addClass('old');
addDelivered('Read');
addTypingBlock();
} else {
setTimeout(function() {
addReceived(feedbackalret);
// addReceived(feedbackalrettwo);
addMessage(userTwoMsg(selectcategories));
addReceived(selectcategoriestext);
$('.typing_block').hide();
}, 1200)
$('.delivered').addClass('old');
addDelivered('Read');
addTypingBlock();
}
}
$('#send').on('click', () => setTimeout(onSendClickDelayed, 500));
const onClickTwo = () => {
var feedback = 'hello';
addMessage(userTwoMsg('<div class="sender-text"><p>Please tell us about PatShop and PatStudio</p></div>'));
$('.delivered').addClass('old');
$('.patshop_bot').addClass('old');
addDelivered('Delivered');
setTimeout(function() {
setTimeout(function() {
addReceived(feedback);
$('.typing_block').hide();
}, 1000);
$('.delivered').addClass('old');
addDelivered('Read');
addTypingBlock();
}, 500);
}
$('#two_categor_mess').click(onClickTwo);
// Helper functions
const addMessage = content => $('.message-screen').append(content);
const userTwoMsg = content => '<div class="user_two_message col-xs-12 col-sm-12">' + content + '</div>';
const addTypingBlock = () => addMessage(userTwoMsg('<div class="typing_block"></div>'));
const addDelivered = status => addMessage('<div class="delivered"><span>' + status + '</span></div>');
const addReceived = text => addMessage(userTwoMsg('<div class="received-text"><p>'+text+'</p></div>'));
function onSendClickDelayed() {
var divValue = $('.sender-text').last().text();
var test = 'hello';
var feedback = 'hello ';
var feedbackhowareyou = 'good ';
var feedbackalret = ' Im sorry Im in development and dont understand some of the messages. Here are the questions I can help you with: ';
var selectcategories = '<div class="swiper-container"><div class="swiper-wrapper"><div class="swiper-slide" id="first_categor_mess"><p>What is PatShop and PatStudio?</p></div><div class="swiper-slide" id="two_categor_mess"><p>How to add your project</p></div><div class="swiper-slide" id="last_categor_mess"><p>How to buy the project</p></div></div></div>';
var selectcategoriestext = 'Choose one of the categories';
if (divValue.indexOf(test) >= 0) {
setTimeout(function() {
addReceived(feedback);
$('.typing_block').hide();
}, 1000);
$('.delivered').addClass('old');
addDelivered('Read');
addTypingBlock();
} else {
setTimeout(function() {
addReceived(feedbackalret);
// addReceived(feedbackalrettwo);
addMessage(userTwoMsg(selectcategories));
addReceived(selectcategoriestext);
$('.typing_block').hide();
}, 1200)
$('.delivered').addClass('old');
addDelivered('Read');
addTypingBlock();
onClickTwo(); // добавили вызов ТОЙ функции
}
}
$('#send').on('click', () => setTimeout(onSendClickDelayed, 500));
===
(одинаково)&&
||
var root =
( typeof self == 'object' && self.self === self && self ) ||
( typeof global == 'object' && global.global === global && global ) ||
( this );
var root =
( (typeof self == 'object') && (self.self === self) && (self) ) ||
( (typeof global == 'object') && (global.global === global) && (global) ) ||
( this );
// <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
function submitData( formData, goalName, yandex, google) {
axios.post( '/submitform.php', formData)
.then( function(response) {
if (response.ok) {
yandex.reachGoal( goalName );
google(goalName, '...' );
} else {
// данные не прокатили
}
})
}
request()
всё, отыграл. for()
.wall.get()
годится сервисный токен или токен пользователя.// Функция получения случайного числа
const getRandomNumber = (() => {
return Math.floor(Math.random() * 1000);
});
// Функция получения случайного имени
const getRandomName = (() => {
const arr = ['Alex', 'Bob', 'Mark', 'Peter'];
let randomNumber = Math.floor(Math.random() * arr.length);
return arr[randomNumber];
});
// Начальный объект
const obj = {
name: getRandomName(),
id: getRandomNumber()
};
// 1.2 Добавление нового поля в объект
obj.number = getRandomNumber();
const randomArray = () => Array(6).fill().map(() => obj);
console.log(randomArray());
0..999
Чтобы значения не повторялись, можно создать массив с возможными значениями, и вынимать из него Array.splice(i, 1)
– так гарантируется отсутствие повторов.Array.push()
в цикле? const arr = ['banner-0', 'banner-1', 'banner-2']
Math.floor( Math.random( arr.length)))
alert([
"Красный цвет задаётся HEX-кодом "
,"#"
,"FF"
,"00"
,"00"
].join(''));