如何使用这个javascript函数?

时间:2014-07-13 12:56:42

标签: javascript html

我在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/

4 个答案:

答案 0 :(得分:1)

您必须设置返回的值。

我将onclick-attribute复制到了一个函数中。这将读取当前输入,转换它并将结果写入textarea。

document.querySelector('input').onclick = function() {
    var input = document.querySelector('textarea#ta1');
    input.value = bin2hex(input.value);
};

http://jsfiddle.net/7BRwL/6/

因此二进制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字段的错误名称。并且要转换的值必须作为参数传递给函数。

Updated fiddle

答案 3 :(得分:0)

如果您只是希望让用户将其文本转换并显示,以下是我的示例。

enter image description here

<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>