2013-12-11 89 views
0

所以我想將二進制轉換在Javascript爲十進制:二進制在Java腳本十進制

function binToDec(){ 
     var binary = document.getElementById("binaryInput").value.split("").reverse(); 
     var toDecimal = function(binary) { 

      return parseInt(binary,2); 
     } 
    } 

但它不工作了,我...我是新來的JS所以我不確定這裏發生了什麼事。

而且,這裏是 「binaryInput」 參考:

<td colspan="2"><input id="binaryInput" type="text" name="First Number" onfocus='onFocusInput(this);'></td> 

感謝您的幫助!

+0

@Liam我看着那一個,並嘗試了代碼,但沒有奏效爲我... – user3013513

+2

1)爲什麼你分裂的價值 2)爲什麼你反轉輸入 3)'function binToDec(){return parseInt(document.getElementById(「binaryInput」)。value,2); }'應該這樣做,顯然我沒有在這裏檢查輸入的正確性,因爲你可以添加RegExp/[01] +/g或類似的東西。 –

回答

0

問題是您輸入的字符串爲split。看看parseInt documentation

如果string [該值]不是一個字符串,那麼它將被轉換爲一個。

然而,該陣列(因爲你split字符串被創建)迴轉換爲字符串結果'1,0,1,0,1,0,0,0',不'10101000''1,0,1,0,1,0,0,0'不是有效的二進制數,因此parseInt失敗。

如果你真的想扭轉輸入,你應該使用

document.getElementById("binaryInput").value.split("").reverse().join(""); 

產生正確的字符串。如果你不希望扭轉這種局面,用

document.getElementById("binaryInput").value; 
0

你的功能應該是這樣的:

function binToDec(){ 
    //get the string from the input element 
    var binString = document.getElementById("binaryInput").value; 

    //remove any non binary character 
    binString = binString.replace(/[^01]+/g,''); 

    if(binString>''){ 
    //if you want it to be reversed: binString = binString.split('').reverse().join('') 
    return parseInt(binString,2); 
    } 
    return 0; 
} 
相關問題