js 怎么把0开头的数字转换为字符串?

问题:
input type="number",输入的值为数字 0214 ,怎么把这个 0214 转换为字符串的 '0214' 呢?

调用toString(),还是toFixed(),方法默认会把以0开头的数字转换为8进制,转换的结果为 140 。

clipboard.png

阅读 9.7k
4 个回答

type=text不行吗?

const num = 0214
console.log(0${num.toString(8)});

一般数字没有0开头的 js会默认当做8进制转换

你要字符串就要求输入字符串就好了type=text,可以在onkeydown里面判断event.keycode都是数字.

document.querySelector("input").onkeydown= function (e){
console.log(e);
if(e.key>="0" &&e.key<="9"||e.code=="Backspace") return true;
else return false;

}

你在 console 里试的是 javascript 的 numeric literal,这个自然是按照 js 的 Numeric literal 的方式去解析的。

但是,你不能从 input 里拿到一个 numeric literal (除非你把它拼进一个 eval )。

<input type="number">value已经是一个 Number ,而从字符串生成这个 Number 的过程与 javascript 解析里面量是不同的。这个解析过程不会把开始的 0 当成八进制标志。

但是,这样的话,你再把它转成字符串,开始的 0 就丢掉了。需要保留的话,就不要用 type="number" 了,用 type="text" 吧,可以直接拿到一个字符串。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题