2017-03-13 44 views
1

所以我有一些问题。我正在尝试做一个函数:人类用鼠标点击输入框,然后输入一些随机数字,这个数字应该被转换并显示在另外两个盒子里,比如MegaBytes和KiloBytes。所以我的问题是,使用Javascript显示我的错误:javaScript被卡住转换字节

无法设置属性为NULL转换
的 '价值'(的script.js:7)
在HTMLInputElement.onkeyup

这里是我的到目前为止的代码:

function convert(inputas) 
{ 
    var i; 
    if(inputas == "B") 
    { 
     i = document.getElementById("baitas").value/1000; 
     document.getElementById("kiloBaitas").value = i; 
    } 
    else if(inputas == "KB") 
    { 
     i = document.getElementById("kiloBaitas").value * 1024; 
     document.getElementById("baitas").value = i.toFixed(2); 
    } 
} 

HTML代码:

<input type="text" id="baitas" onkeyup="convert('B')placeholder="Bits"> 
<input type="text" id="kilobaitas"  
`onkeyup="convert('KB')"placeholder="Kilobits"> 
<input type="text" id="megabaitas" onkeyup="convert('MB')" 
placeholder="Mbits"> 
<script src="script.js"></script> 
+1

哪里是你的HTML代码? –

+0

当这个脚本运行时,在ID为'kiloBaitas'或'baitas'的文档中不存在任何元素(取决于'inputas'的值) – Phil

+0

@Kinduser我在上面添加了我的html代码,也许这会有所帮助 – Lucas

回答

1

当您的JavaScript与HTML比较。 kilobaitis元素不拼写一致的情况。

+0

耶稣,队友.....谢谢你:我怎么没有注意到...... – Lucas

1

JavaScript是区分大小写

function convert(inputas) { 
 
    var i; 
 
    if (inputas == "B") { 
 
    i = document.getElementById("baitas").value/1000; 
 
    document.getElementById("kilobaitas").value = i; 
 
    } else if (inputas == "KB") { 
 
    i = document.getElementById("kiloBaitas").value * 1024; 
 
    document.getElementById("baitas").value = i.toFixed(2); 
 
    } 
 
}
<input type="text" id="baitas" onkeyup="convert('B')" placeholder=" Bits "> 
 
<input type="text " id="kilobaitas" onkeyup="convert('KB')" placeholder="Kilobits "> 
 
<input type="text " id="megabaitas" onkeyup="convert('MB')" placeholder="Mbits ">

+0

是的,队友刚刚看到它,过了很长时间12h,我是这样一个睡美人,我没注意到我的拼写错误,谢谢你,伙计:) – Lucas

+0

cha ..你也是,哥们;) – Lucas

0

(function() { 
 

 
var elems = [], 
 
    elemsId = ['baitas','kilobaitas','megabaitas']; 
 

 
function fix(a){ return (a * 100 | 0)/100 } 
 

 
function convert(inputas) 
 
{ 
 
    var i; 
 
    switch(inputas) 
 
    { 
 
     case 0: 
 
      i = elems[0].value; 
 
      elems[1].value = fix(i/1024); 
 
      elems[2].value = fix(i/1048576); 
 
      break; 
 
     case 1: 
 
      i = elems[1].value; 
 
      elems[0].value = i * 1024; 
 
      elems[2].value = fix(i/1024); 
 
      break; 
 
     case 2: 
 
      i = elems[2].value; 
 
      elems[0].value = i * 1048576; 
 
      elems[1].value = i * 1024; 
 
      break; 
 
    } 
 
} 
 

 
for (var i=0; i < elemsId.length; i++) 
 
{ 
 
    elems[i] = document.getElementById(elemsId[i]); 
 
    elems[i].addEventListener('keyup', convert.bind(null, i)) 
 
} 
 

 
}());
<input type="text" id="baitas" placeholder=" Bits"> 
 
<input type="text" id="kilobaitas" placeholder=" Kilobits"> 
 
<input type="text" id="megabaitas" placeholder=" Mbits">