код работет в фаерфокс, но не работает в хроме, только начала изучать язык:(
// работает в фаерфокс, не работает в хроме
let n = document.getElementById('input1').value;
function showPrimes(n) {
nextPrime:
for(let i=3; i<=n; i++) {
for(let j=2; j<i; j++) {
if(i%j==0) continue nextPrime;
}
document.getElementById('out').innerHTML += `${i}, `;
// хром не возвращает i, но он в принципе вообще очищает value
console.log(i);
}
// создаем массив из элементов ' i'
let arr = document.getElementById('out').innerHTML.split(',');
// в гугл хром получаем массив в 1 элемент == ['Все простые числа до вашего числа: ']
// в фаерфокс - добротный массив, как и надо
console.log(arr)
// возвращаем последний натуральный элемент массива (реально последний - пробел)
let lastEl = arr.findLast(function(i) {
return i > 0;
});
// убираем некрасивое ', undefined.' в конце
if(lastEl == undefined) {
document.getElementById('out').innerHTML = 'Введите число';
} else {
// удаляем пробел и последний натуральный элемент полученного массива
arr.pop();
arr.pop();
// выводим массив без последнего элемента
document.getElementById('out').innerHTML = `${arr}`;
// добавляем последний элемент массива в корректной форме
document.getElementById('out').innerHTML += `, ${lastEl}.`;
}
}
showPrimes(n);
document.querySelector('.btn').addEventListener('click', () => window.location.reload());
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Калькуляторик</title>
<link rel="stylesheet" href="css/culc.css" >
</head>
<body>
<!-- для функции простых чисел -->
<label for="input1" id="lab1">Введите число: </label>
<input type="text" id="input1" name="input"><br>
<button type="button" name="button" class="btn">Начать</button><br>
<div id="out">Все простые числа до вашего числа: </div>
<script type="text/javascript" src="js/culc.js"></script>
</body>
</html>
Ответы (1 шт):
Автор решения: nörbörnën
→ Ссылка
document.getElementById('button1').addEventListener(
'click', renderPrimeNumbers
);
function renderPrimeNumbers() {
const inpEl = document.getElementById('input1');
const outEl = document.getElementById('out');
outEl.innerHTML = '';
if (!/^\d+$/.test(`${inpEl.value}`)) {
return;
}
const inputNumber = +inpEl.value;
const primeNumbers = getPrimeNumbers(inputNumber);
outEl.innerHTML = primeNumbers.join(', ');
}
function getPrimeNumbers(n) {
const result = [];
nextPrime:
for (let i = 2; i < n; i++) {
for (let j = 2; j < i; j++) {
if (i%j === 0) continue nextPrime;
}
result.push(i);
}
return result;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Калькуляторик</title>
</head>
<body>
<p>
<label for="input1">Введите число:
<input type="number" id="input1" name="input" value="0">
</label>
<button type="button" name="button" class="btn" id="button1">Показать числа</button>
</p>
<div>Все простые числа до вашего числа: <span id="out"></span></div>
</body>
</html>