質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Shopify

Shopifyとは、ECサイト向けのプラットフォームを提供している企業。さらに、その企業が提供するオンラインストアやPOSシステムを指します。高いデザイン性とカスタマイズ性が評価され、世界各国のネットショップで使用されています。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1926閲覧

javascriptのエラーについて

zzziiii

総合スコア16

Shopify

Shopifyとは、ECサイト向けのプラットフォームを提供している企業。さらに、その企業が提供するオンラインストアやPOSシステムを指します。高いデザイン性とカスタマイズ性が評価され、世界各国のネットショップで使用されています。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/10/19 08:22

shopifyをDawnというテーマを元にカスタマイズしています。
カートに追加というボタンが動かないので、調べた所

Cannot read properties of null (reading 'setActiveElement')at HTMLElement.onSubmitHandler

というエラーが出ました。

この、「nullのプロパティを読み取ることができない」というのと、()にある「setActiveElementを読み取る」というのはどういうことなのでしょうか?
教えていただけると幸いです。

下記に、ファイル全体のコードを載せました。
ちなみにエラーと表示されているのは、onSubmitHandler(evt) のthis.cartNotification.setActiveElement(document.activeElement);
です。

if (!customElements.get('product-form')) { customElements.define('product-form', class ProductForm extends HTMLElement { constructor() { super(); this.form = this.querySelector('form'); this.form.addEventListener('submit', this.onSubmitHandler.bind(this)); this.cartNotification = document.querySelector('cart-notification'); } onSubmitHandler(evt) { evt.preventDefault(); const submitButton = this.querySelector('[type="submit"]'); if (submitButton.classList.contains('loading')) return; this.handleErrorMessage(); this.cartNotification.setActiveElement(document.activeElement); submitButton.setAttribute('aria-disabled', true); submitButton.classList.add('loading'); const config = fetchConfig('javascript'); config.headers['X-Requested-With'] = 'XMLHttpRequest'; config.body = JSON.stringify({ ...JSON.parse(serializeForm(this.form)), sections: this.cartNotification.getSectionsToRender().map((section) => section.id), sections_url: window.location.pathname }); fetch(`${routes.cart_add_url}`, config) .then((response) => response.json()) .then((response) => { if (response.status) { this.handleErrorMessage(response.description); return; } this.cartNotification.renderContents(response); }) .catch((e) => { console.error(e); }) .finally(() => { submitButton.classList.remove('loading'); submitButton.removeAttribute('aria-disabled'); }); } handleErrorMessage(errorMessage = false) { this.errorMessageWrapper = this.errorMessageWrapper || this.querySelector('.product-form__error-message-wrapper'); this.errorMessage = this.errorMessage || this.errorMessageWrapper.querySelector('.product-form__error-message'); this.errorMessageWrapper.toggleAttribute('hidden', !errorMessage); if (errorMessage) { this.errorMessage.textContent = errorMessage; } } }); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

this.cartNotification.setActiveElement(document.activeElement);

この行の this.cartNotificationnull なので、setActiveElement というプロパティが読めないよ、ということです。

this.cartNotification = document.querySelector('cart-notification');

ここで document.querySelector()null を返しているのでしょうね。'.cart-notification' の間違い、というのが典型的です。

投稿2021/10/19 08:28

int32_t

総合スコア21695

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zzziiii

2021/10/19 09:22

教えていだきありがとうございます。 '.cart-notification'で試してみましたが、うまくいきませんでした。(涙) 他にもファイルをコピペ等して差分がないか色々試しているのですが、エラー内容は変わらずです。 もう少し考えてみます。。。
zzziiii

2021/10/21 05:29

int32_tさん わかりやすく説明していただきありがとうございました。 結局どうしてnullが返されるかわからずでした.....。 document.querySelector()の中身を探したのですが、見当たらず.....。 この記述があるファイルの読み込みをやめると追加ボタンは動いたので、やめました。 shopifyはいろんなファイルが絡み合ってるぽいので原因を探すのには時間がかかると判断し、応急処置的な感じでとりあえずやめました...。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問