// tagName - Имя тега
// props - объект с свойствами DOM элемента
// children - массив с DOM элементами
function createElement (tagName, props = {}, children = []) {
const newDOMElement = document.createElement(tagName);
if (props) {
for (const prop in props) {
if (Object.prototype.hasOwnProperty.call(props, prop)) {
newDOMElement[prop] = props[prop];
}
}
}
if (children.length) {
children.forEach(child => {
newDOMElement.append(child);
});
}
return newDOMElement;
}
const body = document.body;
// Создаём новый DOM узел
const newDOM = createElement('div', null, [
createElement('h1', null, [
'Заголовок страницы'
]),
createElement('p', null, [
'Привет, Мир!'
]),
createElement('button', {
onclick: () => {
alert('бабах');
}
}, [
'Кликни меня'
])
]);
// Вставляем в body новый DOM узел
body.append(newDOM);
let previousTimer;
const startTimer = (word, delay, callback) => {
const timer = setInterval(
() => {
if (previousTimer !== timer) {
clearInterval(previousTimer);
previousTimer = timer;
}
callback();
},
delay
);
};
startTimer('t1', 280, () => console.log('cb t1'));
startTimer('t2', 1200, () => console.log('cb t2'));
startTimer('t3', 910, () => console.log('cb t3'));
// t1, t1, t1, t3, t2, t2, t2...
onClick(event) {
let action = event.target.dataset.action;
if (action) {
this[action]();
}
}
_elem
кладётся elem это загадка. #itemInner {
counter-reset: bullshit-counter;
}
.row {
counter-increment: bullshit-counter;
}
.row::before {
content: counter(bullshit-counter) "!!!";
}
itemInner.find('.item-num').text(i => i + 1);
.evaluate()
можно только через .then()
, то есть: .evaluate().then((data => nightmare.click(''))
..evaluate()
на нужном элементе..evaluate()
и делать клик уже без расчётов. Moscow:
91.243.188.184
91.243.188.114
91.243.188.30
91.243.188.137
SPB:
109.120.128.178
109.120.128.179
109.120.128.180
New IP Moscow:
83.166.240.184
83.166.241.9
83.166.241.120
port: 7951
login/pas: In the account https://www.oplata.info/info/delivery.asp
const filedata = fs.readFileSync('proxy.txt', 'utf-8');
const proxyData = filedata.split(/\s*?\n+\s*/).reduce(
(acc, line)=>{
if( /\w+:$/.test(line)){
acc.location = line;
}else if( /port:\s*\d+/.test(line)){
acc.port = line.replace(/\D+/g,'');
}else if( /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/.test(line)){
acc.list.push({
ip: line,
location: acc.location
});
}
return acc;
},
{
list:[],
location: undefined,
port: undefined
}
);
const targetProxy = proxyData.list.map(item => item.ip + ':' + proxyData.port);
console.log(targetProxy)
// 91.243.188.184:7951
// 91.243.188.114:7951
// 91.243.188.30:7951
// 91.243.188.137:7951
// 109.120.128.178:7951
// 109.120.128.179:7951
// 109.120.128.180:7951
// 83.166.240.184:7951
// 83.166.241.9:7951
// 83.166.241.120:7951
const handle = el => {
setItems(items => items.map(item => item === el
? {
...item,
show: !item.show
}
: item
));
};