Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Преобразование типов (https://javascript.ru/forum/misc/80416-preobrazovanie-tipov.html)

Сергей Ракипов 02.06.2020 12:09

Преобразование типов
 
Задача нужно создать что по нажатию происходило вычисление.
И как бы задача простая но не могу понять как типы правильно преобразовывать.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
body{
	font-family: Verdana, Geneva CY, Helvetica, DejaVu Sans, Arial, sans-serif;
	font-size: .8rem;
	line-height: 160%;
}
.main{
	max-width: 720px;
	margin: 0 auto;
}
.tsifry{
	display: inline-block;
	width: 100px;
	height: 40px;
	margin: 10px 10px 10px 10px;
	border-bottom: 1px solid #000;
	text-align: center;
}
.skidka{
	display: inline-block;
	width: 200px;
	height: 20px;
	padding: 20px 20px 20px 20px;
	border: 10px solid #4E82BE;
	text-align: center;
	cursor: pointer;
}
.skidka:hover{
	border: 10px solid #132E5A;
}
.tekst{
	margin: 20px 0px 20px 0px;
}
    </style>
</head>

<body>
<div class="main">
	<div class="tsifry">900</div>
	<div class="skidka">Получить скидку?</div>
	<div class="tekst">Для вывода текста</div>
</div>
    <script>
let tsifry = document.querySelector(".tsifry");
const skidka = document.querySelector(".skidka");

console.log(tsifry.innerHTML);

tsifry = Number.parseInt(tsifry);
console.log(typeof (tsifry));

function skidkaFun(){
    tsifry = Number.parseInt(tsifry);
    tsifry - 100;
    console.log(tsifry.innerHTML);
}
skidka.addEventListener("click", skidkaFun);
    </script>
</body>
</html>

laimas 02.06.2020 12:37

var n = 4, k = '2';

alert(
    (n + k) + '\n' +
    (n + parseInt(k) + '\n' +
    (n - k) + '\n' +
    (n * k) + '\n' +
    (n / k))
)


https://developer.mozilla.org/ru/doc...jects/parseInt

Сергей Ракипов 02.06.2020 12:44

Цитата:

Сообщение от laimas (Сообщение 525292)
var n = 4, k = '2';

alert(
    (n + k) + '\n' +
    (n + parseInt(k) + '\n' +
    (n - k) + '\n' +
    (n * k) + '\n' +
    (n / k))
)


https://developer.mozilla.org/ru/doc...jects/parseInt

из строки в число, в это нет сложности, у меня я беру число из дива, преобразую его в число, вычисляю и результат снова в строку нужно.

laimas 02.06.2020 12:57

Цитата:

Сообщение от Сергей Ракипов
преобразую его в число

Не всегда явно это и требуется, js это сделает и сам, а опять в строку - toString(), только зачем.

Сергей Ракипов 02.06.2020 13:07

Цитата:

Сообщение от laimas (Сообщение 525294)
Не всегда явно это и требуется, js это сделает и сам, а опять в строку - toString(), только зачем.

Я сейчас это метом проб понял

laimas 02.06.2020 13:08

Сергей Ракипов, для чего в строку, чтобы опять вставить в элемент на странице?

Сергей Ракипов 02.06.2020 13:19

Цитата:

Сообщение от laimas (Сообщение 525296)
Сергей Ракипов, для чего в строку, чтобы опять вставить в элемент на странице?

Это моя глупость я не думал что можно сделать без всего этого

laimas 02.06.2020 13:30

Создайте простой текстовый файл в котором пропишите 0123456789. Откройте его в онлайн hex-редакторе. В нем можно видеть, что ASCII коды цифр это от 30 до 39 (hex значения). То есть получить бинарное значение цифры, это отнять от строкового представления 30 (hex). Для много разрядных чисел потребуются еще и другие операции. В JS оператор +, это и операция суммирования, и конкатенация строк, поэтому без явного преобразования никак. Еще +"2" также вернет бинарное значение 2 - https://learn.javascript.ru/operators.

А при вставке бинарного значения числа на страницу оно будет преобразовано автоматически в строковое представление.

Сергей Ракипов 02.06.2020 13:42

laimas,
Спасибо почитаю


Часовой пояс GMT +3, время: 19:35.