Как сделать разделение комой при вводе в инпут.
Всем доброго времени суток. Практикую разные задания по js. Есть такой скрипт:
var val = $('.inp'), //<input> с введёнными цифрами;
result = $('.res'); //<p> параграф с результатом;
$(val).on('focusout', total); //по потери фокуса выполняется функция по получению среднего арифметического введённых цифр;
function total() {
var sum = 0;
var str = val.val();
var arr = str.split('');
for (i = 0; i < arr.length; i++) {
sum += +arr[i];
var equal = sum/arr.length;
}
result.html(equal);
}
$(val).on('focusin', clear); //по получению фокуса очищается инпут и параграф;
function clear() {
val.val('');
result.html('=');
}
Всё по заданию сделал, кроме одного: надо сделать разделение вводимых цифр комой. Все задания и (естественно) решения сделаны на нативном js, а я делаю на jQuery. В решении в строке var arr = str.split('') в скобки просто добавили кому, но когда я так делаю в результат выводится введённые значения без изменений. Пожалуйста, подскажите почему так? |
Цитата:
|
Цитата:
Весь код выложил, HTML скинуть ещё? Или код на js? |
drakulawz,
что не так?
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
var val = $('.inp'), //<input> с введёнными цифрами;
result = $('.res'); //<p> параграф с результатом;
$(val).on('focusout', total); //по потери фокуса выполняется функция по получению среднего арифметического введённых цифр;
function total() {
var sum = 0;
var str = val.val();
var arr = str.split('');
for (i = 0; i < arr.length; i++) {
sum += +arr[i];
var equal = sum/arr.length;
}
result.html(equal);
}
$(val).on('focusin', clear); //по получению фокуса очищается инпут и параграф;
function clear() {
val.val('');
result.html('=');
}
});
</script>
</head>
<body>
<input type="text" class="inp">
<p class="res"></p>
</body>
</html>
|
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="style.css">
<script src="jquery-3.3.1.js"></script>
<script src="script.js"></script>
</head>
<body>
<div id="content">
<input class="inp" type="number" placeholder="number">
<p class="res">=</p>
</div>
</body>
</html>
body {
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
}
#content {
width: 200px;
height: 50px;
position: relative;
top: 100px;
left: 50%;
transform: translate(-50%, 50%);
background: #ccc;
border: 1px solid #000;
text-align: center;
padding: 10px;
}
.inp{
margin: 2px;
}
.res{
margin: 3px;
}
$(document).ready(function () {
var val = $('.inp'), //<input> с введёнными цифрами;
result = $('.res'); //<p> параграф с результатом;
$(val).on('focusout', total); //по потери фокуса выполняется функция по получению среднего арифметического введённых цифр;
function total() {
var sum = 0;
var str = val.val();
var arr = str.split('');
for (i = 0; i < arr.length; i++) {
sum += +arr[i];
var equal = sum/arr.length;
}
result.html(equal);
}
$(val).on('focusin', clear); //по получению фокуса очищается инпут и параграф;
function clear() {
val.val('');
result.html('=');
}
})
А вот кусок кода на JS - тот, что предлагает решение на сайте с задачей:
var elem = document.getElementById('num');
elem.addEventListener('blur', func);
function func() {
var sum = 0;
var str = elem.value;
var arr = str.split(',');
for (var i = 0; i < arr.length; i++) {
sum += +arr[i];
}
var newElem = document.getElementById('result');
newElem.innerHTML = sum/arr.length;
}
|
drakulawz,
в чём проблема? или что сделать, чтобы обнаружить проблему? |
drakulawz,
кроме того, что ваш код не рационален в трёх местах, но он рабочий, проблем не вижу. |
Цитата:
Цитата:
Само условие: "Дан инпут. В него вводятся числа через запятую. По потери фокуса найдите среднее арифметическое этих чисел (сумма делить на количество)." |
drakulawz,
что такое "кома"? |
Цитата:
ИЗВИНИТЕ!:D Кома - это запятая по украински. :lol: |
| Часовой пояс GMT +3, время: 22:57. |