проблема з типами
не подкажете где ошибка ?
есть подозрение что переменние month2,day2,year2-строчки.Я решил их умножить на 1 чтоби преоброзовать в число, но не получается.:blink: И да я знаю что ето неполноценний и неправильний таймер:yes: <HTML> <HEAD> </HEAD> <BODY onload="now();"> <br> <SCRIPT> nown = new Date(); var monthlessn = nown.getMonth() + 1; document.write("Сьогодні " + nown.getDate() + "-го " + monthlessn + " Місяць " + nown.getFullYear() + " рік " + nown.getHours() + " година ") function go() { now = new Date(); var day2 = 0; var day = 0; var dayless = now.getDate(); var month2 = 0; var month = 0; var monthless = monthlessn; var year2 = 0; var year = 0; var yearless = now.getFullYear(); month2 == (month*1)-monthless; day2 == (day*1)-dayless; year2 == (year*1)-yearless; alert(day2 + " днів " + month2 + " місяців " + year2 + "рокiв") } </SCRIPT> <br> <br> Введіть день : <select onChange="day=+this.value;alert(day)"> <option value="1" selected="selected">1 </option> <option value="2">2 </option> <option value="3">3 </option> <option value="4">4 </option> <option value="5">5 </option> <option value="6">6 </option> <option value="7">7 </option> <option value="8">8 </option> <option value="9">9 </option> <option value="10">10 </option> <option value="11">11 </option> <option value="12">12 </option> <option value="13">13 </option> <option value="14">14 </option> <option value="15">15 </option> <option value="16">16 </option> <option value="17">17 </option> <option value="18">18 </option> <option value="19">19 </option> <option value="20">20 </option> <option value="21">21 </option> <option value="22">22 </option> <option value="23">23 </option> <option value="24">24 </option> <option value="25">25 </option> <option value="26">26 </option> <option value="27">27 </option> <option value="28">28 </option> <option value="29">29 </option> <option value="30">30 </option> <option value="31">31 </option> </select> Введіть місяць : <select onChange="month=+this.value;alert(month)"> <option value="1" selected="selected">Січень </option> <option value="2">Лютий </option> <option value="3">Березень </option> <option value="4">Квітень </option> <option value="5">Травень </option> <option value="6">Червень </option> <option value="7">Липень </option> <option value="8">Серпень </option> <option value="9">Вересень </option> <option value="10">Жовтень </option> <option value="11">Листопад </option> <option value="12">Грудень </option> </select> Введіть рік : <select onChange="year=+this.value;alert(year)"> <option value="2013" selected="selected">2013 </option> <option value="2014">2014 </option> <option value="2015">2015 </option> <option value="2016">2016 </option> <option value="2017">2017 </option> <option value="2018">2018 </option> <option value="2019">2019 </option> <option value="2020">2020 </option> <option value="2021">2021 </option> <option value="2022">2022 </option> <option value="2023">2023 </option> <option value="2024">2024 </option> </select> <br> <INPUT TYPE="button" VALUE="Розрахунок" onClick="go()"> <br> </BODY> </HTML> |
Цитата:
|
Цитата:
|
Цитата:
var a = "12345"; alert([a, typeof a]); alert([~~a, typeof ~~a]); alert([+a, typeof +a]); alert([a >> 0, typeof (a >> 0)]); |
I_nub,
обьяви переменные которые меняешь вне функции -- будут они глобально видимы -- потом научишься внутря прятать. |
Цитата:
|
Цитата:
var a = "3.14159"; alert([a, typeof a]); alert([~~a, typeof ~~a]); alert([+a, typeof +a]); alert([a >> 0, typeof (a >> 0)]); хотя в данном конкретном случае это не существенно, числа и так целые. |
Я недавно узнал еще такой способ:
var a = "3.14159"; alert([a|0, typeof (a|0)]); |
Все битовые операции (&, |, ^, ~, сдвиги) делают следующее:
1. Преобразуют операнд (в нашем случае строка) в число. 2. У полученного числа отбрасывают дробную часть, а от целой части оставляют только 32 младших бита, старшие отбрасывают. 3. С полученным числом делают указанную операцию. 4. Результат трактуется как 32-битное целое со знаком. Желающие могут поэкспериментировать, для экспериментов взять числа два миллиарда (с ним все будет нормально), три миллиарда (а вот оно уже в 31 бит не помещается, а значит будет единичка в бите, который трактуется как знаковый), пять миллиардов (оно в 32 бита не влазит никак). Наверно, лучше все-же пользоваться плюсом, битовые операции не только теряют дробную часть, но и делают ненужные действия, даже если сами по себе битовые операции быстрые, то преобразование числа из плавающего формата в целый и затем обратно - дополнительная потеря времени. Хотя сам ничего не замерял, так что рассуждения чисто теоретические :-) |
Часовой пояс GMT +3, время: 18:18. |