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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

Q&A

解決済

1回答

4428閲覧

Cannot read property 'undefined' of undefined というエラー

wa.shi

総合スコア7

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

0グッド

0クリップ

投稿2018/04/03 05:42

編集2018/04/03 06:04

前提・実現したいこと

通販サイトの
検索機能に「サイズ」等の規格を追加するカスタマイズを行っており、
開発環境で実装実現いたしましたが、
本番環境にアップするとなぜかうまくいきません。

GooglechromeDevで調査すると
以下のようなエラーメッセージが発生したことが判明いたしました。

開発環境で再度動作の確認、
及びGooglechromeDevで視ても
問題なく動くのですが、
本番環境だとやはりどうにもこうにもという感じです。

もう1点不明なことが、
本番環境にアップして間もない時は、本番環境でも問題なく動作しました。
※1.しかしながら、本番環境にて商品を一旦一括削除し
再度商品をアップしたら、上記のような事象が発生しました。

ご回答ありがとうございます。
エラー検知該当箇所は以下でございます。

 var num = document.form1.search_classcategory_id.selectedIndex;

特に開発環境では同様の箇所に値が入るのですが、
本番環境では「undefined」となってしまいます。

原因がわからなく、1日以上悩んでいる状態です。
どなた様か、アドバイスをいただけたら非常に幸いです。

発生している問題・エラーメッセージ

TypeError: Cannot read property 'undefined' of undefined

該当のソースコード

javascript

1<script type="text/javascript"> 2 function func_submit_class( id, class_name ){ 3 var fm = window.opener.document.form1; 4 var num = document.form1.search_classcategory_id.selectedIndex; 5 var classcategory_val = document.form1.search_classcategory_id.options[num].value; 6 var err_text = ''; 7 8 fm.mode.value = 'select_product'; 9 fm.select_classcategory_id.value = classcategory_val; 10 fm.select_product_id.value = id; 11 fm.select_rank.value = '119'; 12 if(fm.select_pos){ 13 fm.select_pos.value = ''; 14 } 15 if (classcategory_val == '__unselected') { 16 err_text = class_name + "を選択してください。\n"; 17 } 18 if (err_text != '') { 19 alert(err_text); 20 return false; 21 } 22 23 fm.submit(); 24 window.close(); 25 return false; 26 } 27</script> 28 29<form name="form1" id="form1" method="post" action="#"> 30 <table class="list"> 31 <col width="15%" /> 32 <col width="12.5%" /> 33 <col width="60%" /> 34 <col width="12.5%" /> 35 <tr> 36 <th>商品画像</th> 37 <th>商品コード</th> 38 <th>商品名</th> 39 <th>決定</th> 40 </tr> 41 42 <!--{foreach name=loop from=$arrProducts item=arr}--> 43 <!--▼商品<!--{$smarty.foreach.loop.iteration}-->--> 44 <tr> 45 <td class="center"> 46 <img src="<!--{$smarty.const.ROOT_URLPATH}-->resize_image.php?image=<!--{$arr.main_list_image|sfNoImageMainList|h}-->&width=65&height=65" alt="" /> 47 </td> 48 <td> 49 <!--{assign var=codemin value=`$arr.product_code_min`}--> 50 <!--{assign var=codemax value=`$arr.product_code_max`}--> 51 <!--{* 商品コード *}--> 52 <!--{if $codemin != $codemax}--> 53 <!--{$codemin|h}--><!--{$codemax|h}--> 54 <!--{else}--> 55 <!--{$codemin|h}--> 56 <!--{/if}--> 57 </td> 58 <td> 59 <!--{$arr.name|h}--> 60 61 <!--{assign var=class1 value=classcategory_id`$arr.product_id`_1}--> 62 <!--{assign var=classlist value=`$arrClassCat1List`}--> 63 <!--{if $tpl_classcat_find1[$arr.product_id]|h}--> 64 65 <dt><!--{$tpl_class_name1[$arr.product_id]|h}--></dt> 66 <dd> 67 <select name="search_classcategory_id" id="<!--{$class1}-->" style="<!--{$arrErr[$class1]|sfGetErrorColor}-->"> 68 <!--{foreach from=$arrClassCat1[$arr.product_id] key=key item=item}--> 69 <option value="<!--{$key|h}-->"> 70 <!--{$item|h}--> 71 </option> 72 <!--{/foreach}--> 73 </select> 74 </dd> 75 <!--{else}--> 76 <input type="hidden" name="<!--{$class1}-->" id="<!--{$class1}-->" value="" /> 77 <!--{/if}--> 78 </td> 79 <!--{if $tpl_classcat_find1[$arr.product_id] == 'true'}--> 80 <td class="center"><a href="" onClick="return func_submit_class('<!--{$arr.product_id}-->','<!--{$tpl_class_name1[$arr.product_id]|h}-->');">決定</a></td> 81 <!--{else}--> 82 <td class="center"><a href="" onClick="return func_submit(<!--{$arr.product_id}-->)">決定</a></td> 83 <!--{/if}--> 84 </tr> 85 <!--▲商品<!--{$smarty.foreach.loop.iteration}-->--> 86 <!--{/foreach}--> 87 <!--{if !$tpl_linemax>0}--> 88 <tr> 89 <td colspan="4">商品が登録されていません</td> 90 </tr> 91 <!--{/if}--> 92 93 </table> 94 <!--{/if}--> 95 <!--{* ▲検索結果表示 *}--> 96 97</form>

試したこと

・開発環境にて※1と同様の操作を行っても
開発環境ではうまく動作してしまいます。

・現在の本番環境の該当するソースコードを
開発環境にコピペしても開発環境では正常動作してしまいます。

・データベースを確認致しましたが、
私が確認できる範囲ではデータの相違は見受けられませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

defghi1977

2018/04/03 05:56

エラー内容と共にエラーが発生した(ブラウザがエラーを検知した)箇所(スクリプト行)について追記願います.
defghi1977

2018/04/03 06:12

あと、PHPコードのではなくてPHPで処理した結果得られたHTMLを確認(できれば開発環境と本番環境とで出力されたものを比較)して下さい.
guest

回答1

0

ベストアンサー

TypeError: Cannot read property 'undefined' of undefined

TypeError: Cannot read property 'undefined' of undefined

エラーメッセージを解読して下さい。
日本語訳すれば「undefined 値の undefined プロパティを読み取れません」の意となり、次の疑似コードで再現可能です。

JavaScript

1var obj; 2obj.undefined; // TypeError: Cannot read property 'undefined' of undefined

一般に "undefined" という名前のプロパティを定義する状況は考えづらいですが、変数を利用しているならありえます。

JavaScript

1var obj, prop; 2obj[prop]; // TypeError: Cannot read property 'undefined' of undefined

当該エラー行の確認

エラー検知該当箇所は以下でございます。

JavaScript

1var num = document.form1.search_classcategory_id.selectedIndex;

このコードで当該エラーが発生するとは考えられません。
なぜなら、undefined プロパティを参照するコードが存在しないからです。

いずれにしてもこれはオブジェクトの構造上の問題ですので、コンソールデバッグやbreakpointを設定して該当オブジェクトの中身が期待通りのものかを確認して下さい。

defghi1977 さんが仰るようにPHPが出力しているHTMLを確認して下さい。JavaScriptからすれば「出力されたHTML」が全てです。

複数の <select name="search_classcategory_id">

あまり深く読んでいませんが、<select name="search_classcategory_id"> が複数存在していませんか?
複数存在するなら、下記コードでエラーになりそうですが…。

JavaScript

1var classcategory_val = document.form1.search_classcategory_id.options[num].value;

(2018/04/03 22:57追記)

疑似コードで再現出来ました。

HTML

1<form name="form1" id="form1" method="post" action="#"> 2 <select name="search_classcategory_id"> 3 <option value="1"></option> 4 <option value="2"></option> 5 <option value="3"></option> 6 </select> 7 <select name="search_classcategory_id"> 8 <option value="1"></option> 9 <option value="2"></option> 10 <option value="3"></option> 11 </select> 12 <select name="search_classcategory_id"> 13 <option value="1"></option> 14 <option value="2"></option> 15 <option value="3"></option> 16 </select> 17</form> 18 19<script> 20'use strict'; 21var num = document.form1.search_classcategory_id.selectedIndex; 22console.log(num); // undefined 23console.log(document.form1.search_classcategory_id.options); // undefined 24 25var classcategory_val = document.form1.search_classcategory_id.options[num].value; // TypeError: Cannot read property 'undefined' of undefined 26</script>

Re: wa.shi さん

投稿2018/04/03 13:05

編集2018/04/03 13:57
think49

総合スコア18162

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

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

wa.shi

2018/04/05 03:40

仰る通りでございました。 「class_category_id」が複数存在し、 「class_category_id」の中身のselectのoption値が読み取れず、 「undefined」となっているのが原因でした。 上記、selectのoption値を読み取るようにカスタマイズをしたら 解決致しました。 疑似コードまで明記頂き誠にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問