錯誤:
編譯器報了
“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