xmoonlight, var button = document.getElementById("binary");
var test = document.getElementById("test");
button.onclick = Fbinary;
function Fbinary() {
var num = document.getElementById("number").value;
var digits = num.toString().split('');
let sum = 0;
digits.forEach(function(item, s, arr) {
var n = item * Math.pow(2, s);
test.innerHTML += n + ";";
sum += n;
});
}
Neizvest, пожалуйста, не воспринимайте мои слова как обидные, настоятельно рекомендую Вам забросить на время попытки делать что либо на js. Вместо этого начните с азов. Возмите книгу по изученю js для новичков, желательно посвежее и пройдите ее от корки до корки.
Neizvest, опять же без обид. Даю перечень самых вопиющих недочетов Вашего подхода к программированию:
1. Вы используете innerHTML элементов для сохранения промежуточных результатов Ваших вычислений.
2. Там где проблема решается алгоритмически с использованием доп переменных, массивов и циклов, Вы для каждого варианта пишите свой блок if, повторяя по несколько раз один и тот же код, отличающийся только названием переменной, Вы гоняете данные из массива в строку, затем обратно в массив и так до нескольких раз подряд.
3. Когда опытные коллеги предлагают Вам решение, лишенное вышеперечисленных недостатков, но исползующее неизвестные Вам возможности языка, Вы говорите что это сложно и даже не попытавшись разобратся продолжаете городить огород, гоняя массивы через строку.
ПРУФ: Как сделать из строки в строку, а затем массив?
Все это происходит из-за элементарного незнания важных механизмов и возможностей языка программирования. И как итог, для того чтобы исправить ситуацию, необходимо заново начать с азов (типы данных включая масссивы и ассоциативные массивы, циклы, массив-перебирающие методы массивов, методы ассоциативных массивов(объектов), отрешать не менее сотни задачек по программированию для новичков с упором на алгоритмику, далее не плохо бы изучить регулярные выражения и т.д.)
var test = document.getElementById("test");
button.onclick = Fbinary;
function Fbinary() {
var num = document.getElementById("number").value;
var digits = num.toString().split('');
var sum=0;
digits.forEach(function(item, s, arr) {
var n = item * Math.pow(2, s);
sum+=n;
test.innerHTML += n + ";";
});
test.innerHTML += " SUM:"+sum;
}
Neizvest, искомая сумма в хранится в переменной sum, если вам ее нужно вывести, тогда в самом конце функции fBinary напишите test.innerHTML = sum, соответственно из форича эту строку уберите
Neizvest, мой сын (9 лет) сейчас учит js по этой книге, очень здорово продвигается, уже умеет решать достаточно сложные алгоритмические задачи. Книга изобилует большим объемом примеров, дающих понимание происходящего. Из минусов, начало книги уж слишком детское, но с 3-й главы уже идет нормальный материал.
И да, я писал все через массивы, т.к в книги есть данная тема и задание сделать что-то подобно, только с массивами, а какой алгоритм можете вы предложить, буду признателен