TypeError: 未定義のプロパティ 'xxxx' を読み取ることができません。
2022-02-09 15:33:30
vueやjsで.lengthを使うと、ブラウザのコンソールによく報告されます。
TypeError: Cannot read property 'length' of undefined
といったエラーは他にもたくさんありますが、そのほとんどが
TypeError: Cannot read property 'xxx' of undefined
このエラーの理由は簡単で、メソッドや関数を呼び出している文字列や配列、オブジェクトなどがNULLなので、判定を追加すればいいのです。
例
次のコードで報告します。
TypeError: Cannot read property 'length' of undefined
エラー
let txtDom = this.$refs.textContainer;
for (let i = 0; i < txtDom.length; i++) {
let curHeight = txtDom[i].offsetHeight;
if (curHeight > twoHeight) {
this.$set(this.als, i, Object.assign({}, this.als[i], { status: true }))
} else {
this.$set(this.als, i, Object.assign({}, this.als[i], { status: true }))
}
}
この原因は、txtDomが空のように見えるので、長さを表す属性がないためです。解決策は、以下のようにtxtDomが空かどうかを判断することです。
let txtDom = this.$refs.textContainer;
if(txtDom){
for (let i = 0; i < txtDom.length; i++) {
let curHeight = txtDom[i].offsetHeight;
if (curHeight > twoHeight) {
this.$set(this.als, i, Object.assign({}, this.als[i], { status: true }))
} else {
this.$set(this.als, i, Object.assign({}, this.als[i], { status: true }))
}
}
}
上記は、jsでエラーを報告するためのコードですが、時には私たちもいくつかの関数やメソッドをhtmlで使用するだけでなく、次のような判断を行うために al.time データのバックエンドから読み込まれ、空のためかもしれない、報告されます。
TypeError: Cannot read property 'substring()' of undefined
というエラーが発生します。
<el-tag size="mini" v-if="al.time">post time</el-tag>{{ al.time.substring(0,10)}}
解決策としては、三項演算子を使って判定を行うことです。
<el-tag size="mini" v-if="al.time">post time</el-tag>{{ al.time ? al.time.substring(0,10):al.time}}
これで問題は完璧に解決しました。
関連
-
npm ERR!コード ENOENT npm ERR!システムコールオープンエラーが解決されました。
-
VueのVue.set()でCannot convert undefined or null to objectというエラーが報告される。
-
VueComponent で未定義のプロパティ '$el' を読み取ることができません。
-
require(src) は警告を報告するCritical dependency: 依存関係の要求は式である
-
error: 'lianxi/' does not have a commit checked out fatal: Add files failed Solution
-
TypeError: vueルートジャンプ時に未定義のプロパティ'_c'を読み取れない
-
Uncaught (in promise)の解決策、考えられる原因
-
vueコンソールがエラーUncaughtを報告する(promiseの場合)
-
vueの@のエイリアスがジャンプを認識しない
-
VUE ストリングスプライシング 各種スプライシング
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
「未定義のプロパティ'length'を読み取れない」エラー処理
-
vueがエラーを報告します。Cannot read property 'xxx' of undefined", but the page renders the data
-
Vue using seven cows cloud upload error o.upload.addEventListener is not function and other error reporting issues.
-
エラーを解決する。モジュール 'chalk' が見つかりません。
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory
-
vue リソースの読み込みに失敗しました:サーバーは404(Not Foun)のステータスで応答しました。
-
Vue-Routerのアップグレードによる捕捉されない(promiseにおける)問題
-
vue プロジェクトのエラーメッセージ Uncaught ReferenceError: Vueは定義されていません。
-
Vue+springboot+websocketベースのWeChatウェブチャットルーム(プライベートおよびグループチャット機能)の短い模造品(オンラインプレビュー可)
-
vue实现PC端分辨率适配