错误:
编译器报了
“num.indexOf is not a function; [Component] Event Handler Error @ pages/USgoodprice/USgoodprice#bound getTest
TypeError: num.indexOf is not a function”
很狗血 ,查了半天,
案例重现:
我首先先使用了一个简单版
.wxml
<view class="bg-g tr">
<view class="td">test</view>
<input class="td " placeholder='输入' bindinput='getNum'></input>
</view>
<view class="bg-g tr">
<view class="td">结果</view>
<view class="td">{{test}}</view>
</view>
<button bindtap='getTest' type="primary">计算</button>
.js
const util = require('../../utils/util.js');
Page({
/**
* 页面的初始数据
*/
data: {
test:''
},
getTest :function(e){
var n = util.accurate2hundredth(this.data.test);
this.setData({
test: n
});
},
getNum: function (e) {
var n = e.detail.value;
if (!isNaN(n)) {
this.setData({
test: n
});
}
},})
去测试我的工具类--精确数字到百分位不四舍五入版
很好没问题
但当我把它复杂化,问题就来了。
const util = require('../../utils/util.js');
Page({
/**
* 页面的初始数据
*/
data: {
test:''
},
getTest :function(e){
//在原来的基础上添加了运算
var num = this.data.test/3+35;
var n = util.accurate2hundredth(num);
this.setData({
test: n
});
},
getNum: function (e) {
var n = e.detail.value;
if (!isNaN(n)) {
this.setData({
test: n
});
}
},})
炸裂。
解决方案:
在工具类那里修改下
将原来的var p = num.indexOf('.'); 改为
var p = num.toString().indexOf('.');
或者
var p = ('' + num).indexOf('.')
由于加入了运算导致结果还是数字,所以需要将它字符串化。具体怎么用这个精确到百分位(不四舍五入版)工具看我另一篇文 https://blog.csdn.net/xchaha/article/details/103296971