炫意html5
最早CSS3和HTML5移动技术网站之一

前端:简单计算器,把substr换成splice,为什么实现不了?代码如下

我把run.innerHTML.substr(0,run.innerHTML.length-1);换成run.innerHTML.splice(length-1,1);为什么不能实现

<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
<title>Document</title>
<meta name=”viewport” content=”width=device-width,initial-scale:1.0″>
<style>
html,body{
height: 100%;
overflow: hidden;
}
div{
box-sizing: border-box;
font: 26px/30px ‘微软雅黑’,’sans-serif’;
}
#main{
height: 100%;
}
#run{
height: 20%;
}
.c3{
float: left;
width: 25%;
height: 16%;
border: 1px solid gray;
line-height: 100px;
text-align: center;
height: 3em;
line-height: 3em;
}
.c6{
width: 50%;
height: 16%;
float: left;
border: 1px solid gray;
line-height: 100px;
text-align: center;
height: 3em;
line-height: 3em;
}
</style>
</head>
<body>
<div>
<div></div>
<div>AC</div>
<div>+/-</div>
<div>back</div>
<div>/</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>-</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>+</div>
<div>1</div>
<div>2</div>
<div>3</div>
<div>*</div>
<div>0</div>
<div>.</div>
<div>=</div>
</div>
</body>
<script>
var main = document.getElementById(‘main’);
var run = document.getElementById(‘run’);

main.onclick = function (ev) {
var el = ev.target;
//如果点击的不是类名以 c3 c6 开头的直接return
if(el.className.indexOf('c')!=0){
return;
}
if(el.innerHTML=='AC'){
run.innerHTML='';//清除全部
}else if(el.innerHTML=='back'){

run.innerHTML=run.innerHTML.substr(0,run.innerHTML.length-1);

        //保留下来的长度,前删一位
}else if(el.innerHTML=='='){
run.innerHTML=eval(run.innerHTML);//eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
}else{
run.innerHTML += el.innerHTML;
}
}

</script>

</html>

回答

运行了你的代码,大概是back回退功能,代码改为:
run.innerHTML=run.innerHTML.slice(0,run.innerHTML.length-1);
运行效果一样。
array.slice(start,end)用法为:该方法是对数组进行部分截取,并返回一个数组副本;参数start是截取的开始数组索引,end参数等于你要取的最后一个字符的位置值加上1。
splice的话是对数组的操作无法直接对字符串进行修改,你需要进行分割转换成数组格式。如下:
run.innerHTML=run.innerHTML.split(”).splice(0,run.innerHTML.length-1,).join(”);

炫意HTML5 » 前端:简单计算器,把substr换成splice,为什么实现不了?代码如下

Java基础教程Android基础教程