まず、問題を理解しやすくするために、問題の理解に役立つ機能のみを残しておきます。このコードにより、配列内に NFT を作成できます。最初の NFT の idToken は 0 です。 [コントラクトからデータを取得] ボタンをクリックすると、パラメーター 0 を readContract(tokenid) JavaScript 関数に渡して、Power 値、uint8 (ランダムに生成、0 ~ 100 の値) HTML ファイルを表示したいと考えています。残念ながら、バグが発生し、それを解決するためにさまざまな方法を試しましたが成功しませんでした。コントラクトと JavaScript は正しく接続されているため (これを検証する connectContract() 関数で証明されています)、ABI とアドレスは問題の一部ではありません。 readContract() 関数は、Solidity コントラクトに記述された getNFTPower メソッドを使用することになっていますが、何かが間違っているようです。戻り値が無効です。でも私にとっては、彼らは「ははは」です… また、コードの最初の行の前後に readContract() 関数にいくつかの console.log ステートメントを挿入してみました。 const power = wait window.contract.methods.getNFTPower(tokenId).call(); このステートメントの後に console.log 出力が表示されないため、問題はそこで発生しているようです。
誰かが私にヒントを与えてくれることを願っています..ありがとう。
次のエラーのスクリーンショット
コードの次の部分。
SOLIDITY コード
リーリーHTML/JS
リーリー関数 readContract() をさまざまな方法で書き直そうとしましたが、役に立ちませんでした。私の目標は、「コントラクトからデータを取得」ボタンをクリックし、パラメーターとして渡している NFT の tokenId の POWER 値を表示することです (上記のコードでは、最初の NFT、tokenId = 0)。
最も一般的な理由は 2 つあります: