editableBlock.childNodes[0].textContent = editableBlock.textContent + "!"
editableBlock.innerHTML = editableBlock.innerHTML + "!";
startContainer = editableBlock.childNodes[0];
const editableBlock = document.getElementById("editable-block");
editableBlock.addEventListener("input", function (event) {
// Запоминаем текущую позицию курсора
const selection = window.getSelection();
const {startContainer, startOffset} = selection.getRangeAt(0);
// Обновляем содержимое элемента
startContainer.textContent = startContainer.textContent.substr(0, startOffset) + "!" + startContainer.textContent.substr(startOffset);
// Восстанавливаем позицию курсора
const newRange = document.createRange();
newRange.setStart(startContainer, startOffset + 1);
newRange.setEnd(startContainer, startOffset + 1);
selection.removeAllRanges();
selection.addRange(newRange);
});
CORS (Cross-Origin Resource Sharing) is a system, consisting of transmitting HTTP headers, that determines whether browsers block frontend JavaScript code from accessing responses for cross-origin requests.https://developer.mozilla.org/en-US/docs/Glossary/CORS
#auth-container #auth-card &>div #form-section
, под который ничего не подпадает. Не нужно играться с вложенностью, сделайте хотя бы так:#auth-container {
min-height: 100vh;
background-color: red;
}
#auth-card {
display: flex;
justify-content: center;
&>div {
display: flex;
flex-direction: row;
min-width: 500px;
margin-top: 2.5rem;
background-color: white;
border-radius: 20px;
}
}
#image-section {
background-color: green;
border-top-left-radius: 20px;
border-bottom-left-radius: 20px;
img {
max-height: 300px;
min-width: 100%;
}
}
#form-section {
min-width: 300px;
h2 {
text-align: center;
}
form {
padding: 20px;
.input-field {
input {
height: 40px;
width: 100%;
box-sizing: border-box;
}
}
button {
width: 100%;
height: 30px;
background-color: blue;
border: none;
color: white;
cursor: pointer;
font-weight: 600;
}
}
}
box.addEventListener('mousemove', move)
будет работать ровно так, как вам нужно. И удалить обработчик потом можно без проблем.const handler = (e) => {
e.preventDefault();
move(e)
};
const move = (e) => {
console.log(e);
box.removeEventListener('mousemove', handler)
}
box.addEventListener('mousemove', handler);
Через брейкпойнт не реально найти, скриптов слишком много, к тому же я думаю что меняет какой то внешний скрипт.
function getCaretPosition(ctrl) {
// IE < 9 Support
if (document.selection) {
ctrl.focus();
var range = document.selection.createRange();
var rangelen = range.text.length;
range.moveStart('character', -ctrl.value.length);
var start = range.text.length - rangelen;
return {
'start': start,
'end': start + rangelen
};
} // IE >=9 and other browsers
else if (ctrl.selectionStart || ctrl.selectionStart == '0') {
return {
'start': ctrl.selectionStart,
'end': ctrl.selectionEnd
};
} else {
return {
'start': 0,
'end': 0
};
}
}
function setCaretPosition(ctrl, start, end) {
// IE >= 9 and other browsers
if (ctrl.setSelectionRange) {
ctrl.focus();
ctrl.setSelectionRange(start, end);
}
// IE < 9
else if (ctrl.createTextRange) {
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', start);
range.select();
}
}
https://www.vishalon.net/blog/javascript-getting-a... [0-9]
или \d
. Соответственно, запрос "одна или более цифр" будет выглядеть так: \d+
. не сохраняются в countВы в свойство count один раз записываете значение из переменной numberOfFilms. Но эта переменная не становится таким образом магически связана с этим свойством и меняя её значение вы не меняете значение свойства объекта.
let personalMoviDB = {
count: NaN,
movies:{},
actors:{},
genres:[],
privat: true,
start: () => {
personalMoviDB.count = +prompt('Сколько фильмов вы уже посмотрели?','');
while (isNaN(personalMoviDB.count)) {
personalMoviDB.count = +prompt('Сколько фильмов вы уже посмотрели?','');
}
console.log(personalMoviDB)
},
};
personalMoviDB.start();
regex
содержится обычная строка, а не объект регулярного выражения.new RegExp('[' + v + ']', 'g');