I want to convert a binary value to a decimal value, but it seems to lengthy for me as I written the below ugly code, which is frusrating and constraining, any one with a short and nice code.

<html>
<head>
<script type="text/javascript">
function displayDate()
{
var a=document.getElementById("text").value
//alert(a);
var b=a.charAt(0);
var q=a.charAt(1);
var bq=a.charAt(2);
var xy= a.charAt(3);
//alert(xy);
//alert(b);
var c=a.indexOf(1);
//alert(c);
var g=a.length;
//alert(g);
//var d= b*Math.pow(2,0);
//var e=d+0;
//alert(e);
if(b==1&& g==1)
{
var d= b*Math.pow(2,0);
var e=d+0;
alert(e);
}
else  if(b==0 && g==1)
{
var m= b*Math.pow(2,0);
var n=d+0;
alert(n);
}
else if (b==1 && q==0 && g==2)
{
var o= b*Math.pow(2,1);
var p= q*Math.pow(2,0);
var u=o+p
alert(o);
}
else if (b==0 && q==1 && g==2)
{
var m= b*Math.pow(2,1);
var r= q*Math.pow(2,0);
var s=r+m;
alert(s);
}
else if (b==0 && q==0 && g==2)
{
var m= b*Math.pow(2,1);
var r= q*Math.pow(2,0);
var s=r+m;
alert(s);
}
else if (b==1 && q==1 && g==2)
{
var m= b*Math.pow(2,1);
var r= q*Math.pow(2,0);
var s=r+m;
alert(s);
}
else if (b==0 && q==0 && bq==1 && g==3)
{
var mr=bq*Math.pow(2,0);
var r= q*Math.pow(2,1);
var m= b*Math.pow(2,2);

var s=r+m+ mr;
alert(s);
}
else if (b==0 && q==0 && bq==0 && g==3)
{
var mr=bq*Math.pow(2,0);
var r= q*Math.pow(2,1);
var m= b*Math.pow(2,2);

var s=r+m+ mr;
alert(s);
}
else if (b==0 && q==1 && bq==1 && g==3)
{
var mr=bq*Math.pow(2,0);
var r= q*Math.pow(2,1);
var m= b*Math.pow(2,2);

var s=r+m+ mr;
alert(s);
}
else if (b==0 && q==0 && bq==0 && g==3)
{
var mr=bq*Math.pow(2,0);
var r= q*Math.pow(2,1);
var m= b*Math.pow(2,2);

var s=r+m+ mr;
alert(s);
}
else if (b==1 && q==1 && bq==1 && g==3)
{
var mr=bq*Math.pow(2,0);
var r= q*Math.pow(2,1);
var m= b*Math.pow(2,2);

var s=r+m+ mr;
alert(s);
}
else if (b==1 && q==0 && bq==0 && g==3)
{
var mr=bq*Math.pow(2,0);
var r= q*Math.pow(2,1);
var m= b*Math.pow(2,2);

var s=r+m+ mr;
alert(s);
}
else if (b==1 && q==1 && bq==0 && g==3)
{
var mr=bq*Math.pow(2,0);
var r= q*Math.pow(2,1);
var m= b*Math.pow(2,2);

var s=r+m+ mr;
alert(s);
}
else if (b==1 && q==0 && bq==1 && g==3)
{
var mr=bq*Math.pow(2,0);
var r= q*Math.pow(2,1);
var m= b*Math.pow(2,2);

var s=r+m+ mr;
alert(s);
}
else if (b==0 && q==1 && bq==0 && g==3)
{
var mr=bq*Math.pow(2,0);
var r= q*Math.pow(2,1);
var m= b*Math.pow(2,2);

var s=r+m+ mr;
alert(s);
}

else if (b==0 && q==0 && bq==1 && xy==1 && g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==1 && q==1 && bq==1 && xy==1 && g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==0 && q==1 && bq==1 && xy==1 && g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==0 && q==0 && bq==0 && xy==1 && g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==0 && q==0 && bq==0 && xy==0 && g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}

else if (b==0 && q==0 && bq==1 && xy==1 && g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==1 && q==1 && bq==0 && xy==0 && g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==1 && q==1 && bq==0 && xy==0 && g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==1 && q==0 && bq==0 && xy==0 && g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}

else if (b==0 && q==0 && bq==1 && xy==0 && g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==0 && q==0 && bq==1 && xy==1 && g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==0 && q==1 && bq==0 && xy==0 && g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==0 && q==0 && bq==1 && xy==0 && g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==0 && q==1&& bq==0 && xy==1&& g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==1 && q==1&& bq==1 && xy==0&& g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==0 && q==1&& bq==1 && xy==0&& g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==0 && q==1&& bq==0 && xy==1&& g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}else if (b==1 && q==0&& bq==0 && xy==1&& g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}else if (b==1 && q==1&& bq==0 && xy==1&& g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==1 && q==0&& bq==1 && xy==1&& g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
else if (b==1 && q==0&& bq==1 && xy==0&& g==4)
{

var mr=bq*Math.pow(2,1);
var r= q*Math.pow(2,2);
var m= b*Math.pow(2,3);
var zy=xy*Math.pow(2,0);

var s=r+m+ mr+ zy;
alert(s);
}
}
</script>
</head>
<body>
<h1>My First Web Page</h1>

<button type="button" onclick="displayDate()">Display Date</button><br /><br />
<input type="text" id="text"></input>
</body>
</html>

wow, this code looks like someone obfuscated it, to make it unreadable.
I'd advice you to use variable names that clearly say what they do, so

var a=document.getElementById("text").value
var b=a.charAt(0);
var q=a.charAt(1);
var bq=a.charAt(2);
var xy= a.charAt(3);

would be

var text=document.getElementById("text").value
var firstletter  =text.charAt(0);
var secondletter =text.charAt(1);
var thirdletter  =text.charAt(2);
var fourthletter =text.charAt(3);

(placing the equals signs underneath each other isn't necessary; im being perfectionistic :) )

Also, while going through your code to correct those variables, it might be a good idea to check what you need or not. for example, the commented alerts can be removed.

shorter code looks less depressing when having to hunt for bugs etc.

Finally, it might be usefull to put comments at certain points, telling you what you expect to have on the screen, or atleast in the memory.
This wil also make it easier for others to understand if you ever have to code in a group.

The script is way too many hard-coded. As a result, it is very lengthy and redundant. How about an easier approach? Using the same HTML input field you have...

<script type="text/javascript">
function bin2dec() {
  var elem = document.getElementById("text")
  if (elem) {  // ensure the element exists
    var a = elem.value
    if (a.length>0 && a.match(/^[01]+$/)) {  // not empty & consists of only 0 & 1
      alert("Decimal value of '"+a+"' is equal to "+parseInt(a, 2))
    }
    else {
      alert("Invalid binary number input: "+a)
    }
  }
}  // end function
</script>
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.