小程序“TypeError: num.indexOf is not a function”解決

錯誤:

編譯器報了

“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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章