1. ホーム
  2. javascript

[解決済み] Javascript Uncaught TypeError : .splitは関数ではありません。

2022-02-28 04:05:01

質問

1日に1回しかコインを請求できない機能を作りたいのですが、どうすればいいですか? 私は以下のような機能を作りました。 .split から日付だけを比較するようにしました。 Date() は日付と時刻の両方を比較するだけです。しかし、このようなjavascriptのエラーが発生しました。

<ブロッククオート

Uncaught TypeError (中間値).splitは関数ではありません。

どなたかこの問題を解決する方法をご存じですか?いろいろな方法を試しましたが エラーはまだ残っています。

以下は私のコードです。

$(document).ready(function () {
  if (new Date(model[0].lastClaimedDate).split(' ')[0] < new Date().split(' ')[0]) {
    document.getElementById('btnAddCoins').disabled = false;
  }
  else {
    document.getElementById('btnAddCoins').disabled = true;
  }   
})

解決方法は?

課題

var date = new Date();

var claimedDate = new Date(date.setDate(date.getDate()-1)) ;
var todaysDate = new Date()


// converting toString and splitting up

claimedDate = claimedDate.toDateString().split(" ");

todaysDate = new Date().toDateString().split(" ");

// result date with array of Day, MonthName, Date and Year

console.log("claimed date", claimedDate)
console.log("todays date", todaysDate)

`var d = new Date();` // Todays date

をすると d.split(" ") :: はエラーになる d.split は関数ではない

で分割することができます。 d.toDateString().split(" ") // の配列が得られます。 ["金", "9", "28", "2018"] となります。 `

上記を使用すると、前の日付で確認することができます。

を確認することができます。 toDateString メソッド この配列は、日、月、日付、年で構成されています。したがって、前の日付をチェックしたり、ボタンを無効にしたり有効にしたりすることができます。

より良い解決策

文字列に変換して分割する必要がなく、直接2つの日付をチェックすることができます。

解決方法

$(document).ready(function () {
  var date = new Date();

  var lastClaimedDate = new Date(date.setDate(date.getDate() -  1 )); 
  
  var currentDate = new Date();
  

  if(lastClaimedDate < currentDate){
    $("#btnAddCoins").prop("disabled", true)
  }else{
    $("#btnAddCoins").prop("disabled", false)
  }
  
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnAddCoins">Add Coins</button>