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

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

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

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

HTML

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

Q&A

0回答

1195閲覧

Javascriptファイルをインクルードすると動作しない

hatsuzo

総合スコア56

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2021/03/15 01:30

いつもお世話になっております。

Javascriptで配列の値をCSVに出力する処理があり、うまく動作しないということで調べてみたところ、
FFやChromeでは正常に動作しているにも関わらず、IE11だと動作しないということが判りました。

スクリプトの部分は、外部ファイルとしてインクルードしているせいなのか、コンソールにも何も表示されません。
インクルード部分を展開して、元のソースに貼り付けたところ、配列上で文字を検索する時の、findメソッドが効いていないことが判り、
下記のように、forループで検索する方法に書き換えました。このソース自体はあまり関係ないかもしれませんがいちおう記載します。

javascript

1 keyOrder.forEach(function( key ) { 2 // 2021/02/22 列属性の取得 3 //const col = col_list.find((p) => { 4 // return (p.name === key); 5 //}); 6 //let intatr = false; 7 //if (col.sorttype){ 8 // if (col.sorttype === "int"){ 9 // intatr = true; 10 // } 11 //} 12 // 2021/03/15 findはIE11で使えないため上記をforループで検索する方法に変更 13 let intatr = false; 14 for(var i=0;i<col_list.length;i++){ 15 if( key === col_list[i].name ){ 16 if (col_list[i].sorttype){ 17 if (col_list[i].sorttype === "int"){ 18 intatr = true; 19 } 20 } 21 } 22 } 23 // 24 } 25

この結果、IE11上でも正常に動くようになり、コンソール上でもエラーは出なくなりました。FFやChromeでも動きました。
ところが、この変更内容を元のインクルードファイル(ListToCsv9.js)に反映させたところ、また動作しなくなりました。

Javascript

1<script type="text/javascript" src="myjs/ListToCsv9.js"></script> 2<script> 3// ここに記述したところ動作した 4</script> 5<script type="text/javascript"> 6var keyOrder = [ 7 "sudshcd", 8 "suhurno", 9 "sudurgn", 10 "suhurdt", 11 "zqty", 12 "ztn", 13 "qty", 14 "tn", 15 "tan", 16 "kin", 17 "suhbiko" 18]; 19</script>

変数keyOrderの部分はフォーム毎に内容が異なるため、各html内に記述してあります。
インクルードの順序をkeyOrderの後ろに替えてみても結果は同じでした。

未だにIE11でしか動かないアプリがあり、まだ標準ブラウザをIE11にしているため、なんとか解決したいのですが、エラー内容がコンソールにも出てこないので、原因が判らず、対処方法が見つからないため困っています。

また、実行環境は、フレームワーク上で動いており、主要な処理はサーバーサイドのJavascriptで作成しているのですが、CSVにダウンロードする処理が実装しにくいため、この部分だけ、クライアントサイドのJavascriptで書いています。
このため、keyOrder以外の変数はサーバーサイドから受け取った変数でもあります。
したがって、全文をお見せすることが困難でこれだけでは情報が足りないかもしれません。

インクルードすると動かない、考えられる理由がありましたら、ご教授頂けたら有難いです。
また、IE11でこうした状況をデバッグする方法はないでしょうか?

よろしくお願い致します。

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

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

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

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

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

maisumakun

2021/03/15 01:38

> また、実行環境は、フレームワーク上で動いており、主要な処理はサーバーサイドのJavascriptで作成しているのですが、 どのようなフレームワークを使っていますか?
hatsuzo

2021/03/15 02:09

maisumakunさん コメントありがとうございます。 汎用的なものではなく、イントラマート(NTTデータイントラマート)です。 e-Builderという開発支援ツールがあるようですが、そこまでの本格的な用途が無いので入れていません。 こうしたものを使う必要がある、のでしょうか?
退会済みユーザー

退会済みユーザー

2021/03/15 03:17 編集

元のコードのままpolyfillを当てるのは試されましたか? 「IE11 find polyfill」で検索すると情報が出てくるかと。 以下蛇足です。 昔、scriptを別ファイルにしたときに動かなくて、変数のスコープが原因ということがありました。 const colを他の場所で使っている可能性とか…あるのかなぁ。
hatsuzo

2021/03/15 08:36

amiya-seさん コメントありがとうございました。 polyfillというのは初めて知りました。 検索し、紹介されていたソースを見てみましたが、内容が何度みても理解できません(-_-;) これはそのまま追加貼付けすればよいようですね。 試してみようとしたところ、 その前に、ご指摘の通り、変数のスコープの問題で変数を書き換えていたことに気づき、修正を加えたところ、その見直しをした影響なのか、原因不明のAPサーバーのエラーが出てきて動かなくなってしまいました。これが解決したら、試してみます。 どうも有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問