我在github上找到了一个javascript:https://gist.github.com/faisalman/4213592
(function(){
var convertBase = function (num) {
this.from = function (baseFrom) {
this.to = function (baseTo) {
return parseInt(num, baseFrom).toString(baseTo);
};
return this;
};
return this;
};
// binary to decimal
this.bin2dec = function (num) {
return convertBase(num).from(2).to(10);
};
// binary to hexadecimal
this.bin2hex = function (num) {
return convertBase(num).from(2).to(16);
};
// decimal to binary
this.dec2bin = function (num) {
return convertBase(num).from(10).to(2);
};
// decimal to hexadecimal
this.dec2hex = function (num) {
return convertBase(num).from(10).to(16);
};
// hexadecimal to binary
this.hex2bin = function (num) {
return convertBase(num).from(16).to(2);
};
// hexadecimal to decimal
this.hex2dec = function (num) {
return convertBase(num).from(16).to(10);
};
return this;
})();
并在html部分我试图通过使用bin2hex函数将给定二进制的输入转换为hexa。我希望如果用户在给定的textarea中输入二进制值文本,通过单击按钮将其转换为十六进制值。 / p> 似乎什么也没发生。我在这做什么错了?请原谅我,如果我似乎是新手。我已经花了好几个小时了。到目前为止,还有jsfiddle。 http://jsfiddle.net/7BRwL/
答案 0 :(得分:1)
您必须设置返回的值。
我将onclick-attribute复制到了一个函数中。这将读取当前输入,转换它并将结果写入textarea。
document.querySelector('input').onclick = function() {
var input = document.querySelector('textarea#ta1');
input.value = bin2hex(input.value);
};
因此二进制0101010
将正确转换为十六进制2A
。
答案 1 :(得分:0)
Github的片段是 IIFE(立即调用函数表达式),这意味着它立即执行。该函数返回自身,但由于您尚未将其分配给变量,因此它将自身返回到全局范围(window.bin2hex()
或仅bin2hex()
)。
因此,如果您愿意,可以简单地将函数分配给变量:
var convert = (function(){ ... })();
convert.bin2hex(100011101); // will return the hexadecimal equivalent
请参阅此处的小提琴:http://jsfiddle.net/7BRwL/5/
在你的情况下,textarea的id是唯一的错误,可以像这样纠正:
onclick="document.getElementById('ta1').value=bin2hex(document.getElementById('ta1').value)
答案 2 :(得分:0)
将小提琴中的按钮更改为:
<input onclick="convert.ta1.value=bin2hex(convert.ta1.value)" type="button" value="convert"/>
您使用的是textarea字段的错误名称。并且要转换的值必须作为参数传递给函数。
答案 3 :(得分:0)
如果您只是希望让用户将其文本转换并显示,以下是我的示例。
<body>
<script>
//http://stackoverflow.com/questions/2803145/is-there-0b-or-something-similar-to-represent-a-binary-number-in-javascript
function showConvert(){
var userText = document.getElementById('text1').value;
document.getElementById('text2').value = Number(userText).toString(2);
document.getElementById('text3').value = Number(userText).toString(16);
}
</script>
<form>
<center>
<input id="text1" type="text" value = "47"><br>
<input id="submit1" type="button" value="Convert" onClick="showConvert();"><br>
<input id="text2" type="text"><br>
<input id="text3" type="text"><br>
</form>
</body>