|
04.04.2012, 21:46
|
Интересующийся
|
|
Регистрация: 03.04.2012
Сообщений: 14
|
|
Системы счисления
Преобразование представления числа в заданную систему счисления. В первом текстовом поле вводится целое десятичное число. При нажатии одной из кнопок: "Hex", "Oct" или "Bin" число переводится соответственно в шестнадцатеричное, восьмеричное или двоичное представление и результат выводится во втором текстовом поле. Если введенный операнд не является целым десятичным числом, во втором текстовом поле выводится сообщение "Ошибка".
|
|
04.04.2012, 23:04
|
|
''
|
|
Регистрация: 11.12.2011
Сообщений: 636
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<script>
window.onload = function() {
document.MMM = document.getElementsByName('MMM')[0];
document.MMM2 = document.getElementsByName('MMM')[1]
}
Number.prototype.sys = String.prototype.sys = function(s) {
var x = Number(this);
if (!x) return 'Ошибка'
x = x.toString(s);
return x;
}
</script>
</head><body>
<input type="text" name="MMM"><br>
<input type="button" value="hex" onclick="document.MMM2.value = document.MMM.value.sys(16)"><input type="button" value="oct" onclick="document.MMM2.value = document.MMM.value.sys(8)"><input type="button" value="bin" onclick="document.MMM2.value = document.MMM.value.sys(2)">
<input type="text" name="MMM">
</body></html>
|
|
04.04.2012, 23:09
|
Интересующийся
|
|
Регистрация: 03.04.2012
Сообщений: 14
|
|
Огромное спасибо!
|
|
04.04.2012, 23:45
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Раед, попробуйте конвертировать 0 (нуль)
|
|
05.04.2012, 01:26
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Раед,
Представьте что за каждое бессмысленное, ненужное и неуместное изменение стандартных прототипов, а равно любых не своих прототипов отрубали бы по одной руке.
У меня для вас плохие новости.
|
|
05.04.2012, 03:02
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Agness, лучше так:
<html>
<head>
<script>
function convert(n) {
var inp= document.getElementById("in");
var out= document.getElementById("out");
if (isNaN(parseFloat(inp.value))) {
out.value= "Введите число"
} else {
out.value= parseFloat(inp.value).toString(n)
}
}
</script>
</head>
<body>
<input id="in" />
<input id="out" readonly /><br />
<button onclick="convert(2)">Bin</button><br />
<button onclick="convert(8)">Oct</button><br />
<button onclick="convert(16)">Hex</button><br />
</body>
</html>
|
|
06.04.2012, 23:34
|
|
''
|
|
Регистрация: 11.12.2011
Сообщений: 636
|
|
Сообщение от Gvozd
|
Представьте что за каждое бессмысленное, ненужное и неуместное изменение стандартных прототипов, а равно любых не своих прототипов отрубали бы по одной руке.
|
За что? Чем плохо изменять прототипы? По-моему весьма удобно...
|
|
07.04.2012, 02:02
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Раед, расширение стандартных свойств должно быть оправданно. А в вашем решении оправданностью и не пахнет. Изменять прототипы нужно ну крайне аккуратно - минус утечки памяти, неизвестные ошибки и прочие радости. Чем локальнее работает каждый кусок программы - тем устойчивее система в целом.
|
|
07.04.2012, 23:56
|
|
''
|
|
Регистрация: 11.12.2011
Сообщений: 636
|
|
Сообщение от trikadin
|
А в вашем решении оправданностью и не пахнет
|
Я понимаю, что в моём решении вообще говнокод полнейший: поэкспериментировал с именами, зачем то расширил Number, установил свойства document и некорректно работает с нулём.
Ещё вопрос: чем
isNaN(num)
отличается от
num===NaN
и что лучше юзать?
|
|
08.04.2012, 00:11
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от Раед
|
Ещё вопрос: чем
isNaN(num)
отличается от
num===NaN
|
Тем, что NaN никогда ничего не равно, даже самому себе.
|
|
|
|