Cannot read property 'replaceChild' of null
console.log(document.parentNode) // выведет null
Каждая веб-страница, которая загружается в браузер, имеет свой собственный объект document. Интерфейс документа служит точкой входа для получения содержимого веб-страницы (всего DOM - дерева...)
// функция разбирает телефонный номер на части и возвращает их для проверки
function parsePhoneNumber(phoneNumberAsText){
// через парамерт phoneNumberAsText функция получает текст содержащий номер телефона
// предположим что обрабатываемое текстовое представление номера телефона
// может принимать следующий вид (и имеет принадлежность к РФ):
// "+7 (999) 888-77-55"
// "8 (999) 888-77-55"
// "+7 999 888-77-55"
// "+7999888-77-55"
// "+799988-777-55"
// "+799988-77-555"
// "+79998887755"
// "89998887755"
// и т.д.
// убираем из него все лишнее
var phone = "+"+phoneNumberAsText.replace(/^8/,"+7").replace(/[^0-9]/,"");
// составляем регулярку на основе международного формата телефонных номеров
var re = /^(\+\d)(\d{3})(\d{7})$/;
// получаем составные части нашего телефонного номера
var [phone, country, code, number] = phoneNumber.match(re);
// где:
// phone - номер телефона в формате "+79998887766"
// country - код страны (фикция, данный код будет работать для РФ и еще пары стран, поэтому считаем что тут всегда "+7")
// code - трехзначный код региона/оператора
// number - семизначный номер телефона в регионе/у оператора
// возвращаем полученный результат разбора номера
return {
phone: phone,
country: country,
code: code,
number: number
};
}
// парсим номер "8 (999) 888-77-66"
var result = parsePhoneNumber("8 (999) 888-77-66");
// на выходе в result получим объект вида
// { phone: "+79998887766", country: "+7", code: "999", number: "8887766" }
// предположим что у вас есть массив с нужными вам кодами регионов/операторов
// allowCodes = ["999", "998" и т.д];
// смотрим совпадает ли код региона/оператора с одним из кодов в allowCodes
if( allowCodes.indexOf(result.code) ){
console.log("Номер "+result.phone+" принадлежит искомой группе/региону/оператору")
}else{
console.log("Номер "+result.phone+" НЕ принадлежит искомой группе/региону/оператору")
}
The first argument must be one of type string ...
ws.send( JSON.stringify({'connected':25,"room":1000}));
не могу понять почему в данной задаче второй цикл проходит до n/i.
// можно обойтись и без этого массива, но для демки делаю с ним
var hexchar = [0,1,2,3,4,5,6,7,8,9,"A","B","C","D","E","F"].map(v=>v.toString());
function decToHex(num){
let out = num&15;
num = num>>>4;
return num?decToHex(num)+hexchar[out]:hexchar[out];
}
/* тестируем */
for(var i=0; i<100; i++){
console.log(i,"=",decToHex(i));
}
0 = 0
1 = 1
2 = 2
3 = 3
4 = 4
5 = 5
6 = 6
7 = 7
8 = 8
9 = 9
10 = A
11 = B
12 = C
13 = D
14 = E
15 = F
16 = 10
17 = 11
18 = 12
19 = 13
20 = 14
21 = 15
22 = 16
23 = 17
24 = 18
25 = 19
26 = 1A
27 = 1B
28 = 1C
29 = 1D
30 = 1E
31 = 1F
32 = 20
33 = 21
34 = 22
35 = 23
36 = 24
37 = 25
38 = 26
39 = 27
40 = 28
41 = 29
42 = 2A
43 = 2B
44 = 2C
45 = 2D
46 = 2E
47 = 2F
48 = 30
49 = 31
50 = 32
51 = 33
52 = 34
53 = 35
54 = 36
55 = 37
56 = 38
57 = 39
58 = 3A
59 = 3B
60 = 3C
61 = 3D
62 = 3E
63 = 3F
64 = 40
65 = 41
66 = 42
67 = 43
68 = 44
69 = 45
70 = 46
71 = 47
72 = 48
73 = 49
74 = 4A
75 = 4B
76 = 4C
77 = 4D
78 = 4E
79 = 4F
80 = 50
81 = 51
82 = 52
83 = 53
84 = 54
85 = 55
86 = 56
87 = 57
88 = 58
89 = 59
90 = 5A
91 = 5B
92 = 5C
93 = 5D
94 = 5E
95 = 5F
96 = 60
97 = 61
98 = 62
99 = 63
fs.writeFile(fullPath, base64Image, { encoding: 'base64' }, err => {
if (err) return res.status(500).send(`Ошибка сохранения файла: ${err}`)
else return
});
const promise = new Promise(resolve, reject)=>{
fs.writeFile(fullPath, base64Image, { encoding: 'base64' }, err => {
if (!err) return resolve(true);
res.status(500).send(`Ошибка сохранения файла: ${err}`)
return reject(false);
});
});
const isWrite = await promise;
if(!isWrite) return;
slideIndex = (slideIndex + slides.length + n) % slides.length;
slideIndex = (slideIndex + n) % slides.length;
slideIndex = n % slides.length;
// Create global object class
let Obj = function ( name, power ) {
this.name = name;
this.power = this._power = power;
};
// Create character class
let Char = function ( name, power, weapon ) {
Obj.apply(this, arguments);
this.weapon = weapon;
this.x_power = power + weapon._power;
Object.defineProperty(this, "power", {
set: function(value) {
/* console.log("!!!!!") */
this._power = value;
this.x_power = this._power + this.weapon._power;
},
get: function(){
return this._power;
}
});
}
// Create weapon
let Club = new Obj("Дубина", 2 ); //
// Create character
//
let Player = new Char("Char", 1, Club);
console.log(Player.power); // Ожидаю получить 1 - Получаю!
console.log(Player.x_power); // Ожидаю получить 3 - Получаю!
Player.power = 5; // Изменяю power
console.log(Player.power); // Ожидаю получить 5 - Получаю!
console.log(Player.x_power); // Ожидаю получить 7 (как power + weapon.power), но мои ожидания не оправдываются: Получаю 3.
function saveFileSync(path, data){
let list = path.split(/[\\\/]/);
let filename = list.pop();
let filepath = list.join('/');
fs.mkdirSync(filepath, { recursive: true }, (err) => {
if (err) throw err;
});
fs.writeFileSync(path, data);
}
let date = new Date();
let filename = SSN + '_' + date.getFullYear() + '/' + date.getMonth() + '/' + date.getDay() + '_' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds() + '.txt';
let text = ecg.join('');
try{
saveFileSync(filename, text);
} catch (e) {
console.log(e);
}
var text = "(text) Lorem Ipsum is simply dummy, (text, simply) and (text, simply, qwerty) typesetting industry. Lorem Ipsum has been the[/m]";
let result = text.match(/\([^)]+?(,[^)]+)+\)/g);
console.log(result); // [ "(text, simply)", "(text, simply, qwerty)" ]