我正在尝试使用js
将十进制值转换为十六进制值。我这里有两个输入文本字段。一个用于输入值,另一个用于输出值。我先尝试过这样的事情:
<html>
<body>
<input type="text" placeholder="input hexadecimal" id='mytxt' width="300" height="200">
<input type="button" value="click me" id='mybtn'>
<input type='text' id='here' >
<script>
function init(){
var field=document.getElementById('mybtn');
field.addEventListener('click',getvalue,false);
}
function getvalue(){
var input=document.getElementById('mytxt');
var x=input.value.toString(16).toUpperCase();
alert(x);
var here=document.getElementById('here');
here.value=x;
}
window.onload=init;
</script>
</body>
</html>
没用。我的意思是输出上的整数值保持不变,就像我尝试15000
时一样,它仍然是15000
。
然后我改变了我的代码。
我使用parseInt解析输入值,然后应用toString()
方法。现在它正如我预期的那样15000
,它以十六进制给我0x3A98
。
var y=parseInt(input.value);
var x=y.toString(16).toUpperCase();
关于这篇文章我有两个问题:
1。为什么整数值在文本字段中充当字符串值。这是默认情况吗?
2。我已尝试innerHTML
在输出文本字段中显示值。它没有用。为什么innerHTML
方法不适用于输入文本字段?
答案 0 :(得分:2)
html输入attrtibute值是字符串类型值。
因此,当在javascript上使用时,将它们解析为您想要的类型是最好的实践,比如parseInt告诉javascript这是一个整数值。
你能显示你正在使用的innerHTML的代码吗?
答案 1 :(得分:1)
是。这是由dedault。 JavaScript value
总是返回string
所以(就像Tiago Reis所写的那样)将它解析为我们需要的类型是一种好习惯。
innerHTML
显示开始和结束标记之间的内容(例如<div><p>test</p></div>
div的innerHTML是<p>test</p>
)。 <input>
的值不在此标记内,标记本身为空,因此使用它将返回空字符串。