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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

JavaScript

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

1030閲覧

javascript IEで表示されない

MF_19

総合スコア27

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

JavaScript

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2018/04/24 10:36

編集2018/05/01 01:55

前提・実現したいこと

フロントエンドの知識があまりないため質問させて頂きます。

webサービスなのですが、
ブラウザの違いにより画面の表示が上手くいかない部分があります。

具体的には、chromeだと問題なく表示されるのですが、IE10(9,8)だと表示されなくなってしまいます。
(ubuntuなのでvirtualboxにIE10を入れています)
*windowsOS上のIEでも表示がされないため、virtualboxの問題は無さそうです。

下記のコードは長くなので一部を抜粋したものです。

###表示されない部分

<div class='columns'>以下の部分がまるまる表示がされていません。

chromeでは問題なく表示されていることから、文法等の間違いではなく、
IE仕様に適用出来ていない点に問題があると感じています。

###開発者画面について
下記の開発者画面(chrome)で確認

<td>{{request.status_name}}</td>の部分など値[test01]が取得できており、画面に表示もされています。

開発者画面(IE)で確認

最下段で値[test01]は取得できていますが、
その後にText-Empty Text Nodeと表示があり、画面には反映されていません。
この部分が問題点かと思います。

###エラー
SCRIPT5007: Unable to get property 'style' of undefined or null reference
jquery.min.js, line 2 character 31689

よろしくお願いします。

該当ソースコード 一部抜粋

html

1<div id="table_area"> 2 <table class="table" id="table" style="width: 100%;"> 3 ... 4 5 {% for group in group_list %} 6  {% for status_id, status_name in status_display.items() %} 7  <tbody class="table-body" id="table-g{{ group.id }}-s{{ status_id }}" style="display: none"> 8   {% for request in request_list %} 9      <thead> 10      ・・・ 11 12 <div class='columns'> 13  <div id='div_link_{{request.id}}' class='column'> 14  <a href="/check_model?page=requests&model={{request.model_id}}&request={{request.id}}" 15    onClick='document.getElementById("div_link_{{request.id}}").style="display: none"; 16  document.getElementById("div_dummy_{{request.id}}").style="";'{{request.request_name}}</a> 17   {% if request.status_id == 0 %} 18 <button id="btn_add" class="animatebutton" 19 onclick="document.getElementById('overlay_update_{{request.id}}').style.visibility = 'visible';" 20 onmouseover='document.getElementById("icon_setting_{{request.id}}").className = "fa fa-cog has-text-dark";' 21 onmouseout='document.getElementById("icon_setting_{{request.id}}").className = "fa fa-cog has-text-info";'> 22         ・・・ 23     </thead> 24   <tbody> 25 ・・・ 26</div> 27 28<div id='div_dummy_{{request.id}}' class='column' style='display: none'> 29 {{request.request_name}} 30 <span class='icon' style="margin-left:10px"> 31 <i id="icon_load" class="fa fa-refresh fa-spin"></i> 32 </span> 33</div> 34 <td>{{request.status_name}}</td> 35 <td>{{request.model_name}}</td> 36 <td>{{request.arch_name}}</td> 37 <td>{{request.create_at}}</td> 38 <td>{{request.update_at}}</td> 39  </tbody> 40 </table> 41</div> 42 43<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 44<script language="javascript" type="text/javascript"> 45  var loading = false; 46  update_table(); 47   48  ・・・ 49 50 function update_table(){ 51 var ul = document.getElementById("ul_status"); 52 var items = ul.getElementsByTagName("li"); 53 54 var groups = document.getElementById("group_list"); 55 var selected_group_id = groups[groups.selectedIndex].value; 56 57 for (var i = 0; i < items.length; ++i) { 58 for (var j = 0; j < groups.length; ++j) { 59 if(items[i].className == "is-active" && groups[j].value == selected_group_id){ 60 var table = document.getElementById("table-g" + groups[j].value + "-s" + items[i].value); 61 table.style=""; 62 } else{ 63 var table = document.getElementById("table-g" + groups[j].value + "-s" + items[i].value); 64 table.style="display: none"; 65 } 66 } 67 } 68 }

開発者 検証画面

開発者画面 chrome

html

1<div id="table_area"> 2<table class="table" id="table" style="width: 100%;"> 3 <thead>・・・</thead> 4 <tbody class="table-body" id="table-g1-s2" style="display: none;"> 5 6 <div class="columns"> 7  <div id="div_link_33" class="column"> 8  <a href="/check_model?page=requests&amp;model=1&amp;request=33" onclick="document.getElementById(&quot;div_link_33&quot;).style.display=&quot;none&quot;; 9document.getElementById(&quot;div_dummy_33&quot;).style=&quot;&quot;;">test01</a> 10 </div> 11 12<div id="div_dummy_33" class="column" style="display: none"> 13test01 14  <span class="icon" style="margin-left:10px"> 15    <i id="icon_load" class="fa fa-refresh fa-spin"></i> 16  </span> 17 18  <td></td> 19  <td>light</td> 20  <td>32</td> 21  <td>2018-04-30 01:04:19</td> 22  <td>2018-04-30 01:04:19</td> 23 </tbody> 24</table>

開発者画面 IE

html

1<div id="table_area"> 2 Text-Empty Text Node 3 ・・・ 4 <table class="table" id="table" style="width: 100%;"> 5 Text-Empty Text Node 6 ・・・ 7 <tbody class="table-body" id="table-g1-s2" style="display: none;"> 8 Text-Empty Text Node 9 ・・・ 10 <div class="columns"> 11 Text-Empty Text Node 12 ・・・ 13 <a onclick="document.getElementById("div_link_33").style.display="none";document.getElementById("div_link_33").style="";"href="/check_model?page=requests&amp;model=1&amp;request=33> 14 Text - test01 15 Text-Empty Text Node 16 ・・・  

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

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

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

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

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

maisumakun

2018/04/24 11:57

ふつうのHTMLには入らない{{...}}というような構文がありますが、これは何で処理していますでしょうか。
m.ts10806

2018/04/24 21:08

バックエンドはどの言語でしょうか?(RubyやPythonのように見えます)
MF_19

2018/04/25 07:54

mts10806さん はい、仰る通りpythonを使用しています。
m.ts10806

2018/04/25 07:55

タグに追加しておいてください。
MF_19

2018/04/25 10:24

maisumakunさん {{request.id}}等についてはflaskというpythonのweb application flame workを使っていまして動的に変わる値を取得しています。 例えばここのページのURLが[xxx?page=requests&request=1]だった場合、ここの値は[1]になります。
MF_19

2018/04/25 10:27

mts10806さん タグが最高5個まででしたので、chromeタグを削除してpythonタグを追加しました。
guest

回答3

0

ベストアンサー

htmlエスケープされていて&などとなってしまっているので、それをHTMLエスケープさせないようにする必要があると思います。
あと開発者画面IEのほうで気になるのが下記ですね。

html

1<a onclick="document.getElementById("div_link_33").style.display="none";document.getElementById("div_link_33").style="";"href="/check_model?page=requests&amp;model=1&amp;request=33>

javascriptのコードがそのまま入り込んでしまっていますが、大丈夫でしょうか?
外だしされたほうが良いかと思いますし、もしそのままonclick=""内で利用するのであれば、"がかぶっていますので正しく処理が読みこれませんね。
'に変えるなど正しく認識させる対応が必要です。

外だしサンプル

html

1<a href="/check_model?page=requests&model={{request.model_id}}&request={{request.id}}" 2    onClick='test("{{request.id}}")'>{{request.request_name}}</a> 3

js

1 2function test(requestid){ 3 document.getElementById("div_link_"+requestid).style="display: none"; 4 document.getElementById("div_dummy_"+requestid).style=""; 5}

※実際はtestではなく処理名や機能名をきちんとつけてください。

というか組んでて気づいたんですが、

html

1<a href="/check_model?page=requests&model={{request.model_id}}&request={{request.id}}" 2    onClick='document.getElementById("div_link_{{request.id}}").style="display: none"; 3  document.getElementById("div_dummy_{{request.id}}").style="";'{{request.request_name}}</a>

<a>の > ←これ、ないですね。
そこが原因だったりして。

投稿2018/05/01 02:02

編集2018/05/01 08:47
m.ts10806

総合スコア80850

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

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

MF_19

2018/05/01 07:37

ご回答ありがとうございます。 現状取り急ぎ下記に修正しました。 test01の文字が画面に出れば良いのですが、反応していません。 ```html <a onclick='document.getElementById("div_link_33").style.display="none";document.getElementById("div_link_33").style="";' href="/check_model?page=requests&amp;model=1&amp;request=33">test01</a> ```
m.ts10806

2018/05/01 07:48

コメントではコードブロックが使えないのでコードブロックが使いたい場合は質問本文に追記してください。 取り急ぎでは枝葉のみとなってしまい解決まで遠のくばかりなので、着実に対応してください。 というか適当なfunctionを用意してそちらに記載する外だしの形の方が良いような。 htmlエスケープ部分がまだ大量に残ってそうなので、その部分は対応されたほうが良いです。
MF_19

2018/05/01 08:34

失礼しました。ご回答ありがとうございます。 あと、すいません。 js,htmlをほぼ触ったことがなかったので、調べながらですがあまり理解出来ていません。 もし可能でしたら、参考コードを見せて頂けると大変助かります。
m.ts10806

2018/05/01 08:40

それは良いのですが、申し訳ないのですが、 さすがにボリュームもあるため全てを提示することは出来ません。 まずは「<div class='columns'>以下の部分がまるまる表示がされていません。 」部分が今どうなっているかを教えてください。
m.ts10806

2018/05/01 08:42

htmlエスケープ部分がまだ大量に残ってる部分はjs,htmlとは関係ないところなので、ご自身で対応いただければと思います。(私の方にPython環境が手元にないですし、おそらく調べればすぐ出てきます)
guest

0

とりあえずこうしてみてください
onClick='document.getElementById("div_link_{{request.id}}").style.display="none"'

あとはテンプレ(?)をご利用であれば、処理後の生のHTMLを表示することは
可能でしょうか?

投稿2018/04/25 00:25

yambejp

総合スコア114839

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

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

MF_19

2018/04/30 02:07

yambejpさん ご回答ありがとうございます。また返信が遅くなってしまい申し訳ありません。 頂いたコードを実行しました。 {{request.id}}に値は入力されているのですが、画面(IE10)には表示がされませんでした。 実行後のソースコード ```html <div class='columns'> <div id='div_link_33' class='column'> <a href="/check_model?page=requests&model=1&request=33" onClick='document.getElementById("div_link_33").style.display="none"; document.getElementById("div_dummy_33").style="";'>test01</a> <button id="btn_add" class="animatebutton" onclick="document.getElementById('overlay_update_33').style.visibility = 'visible';" onmouseover='document.getElementById("icon_setting_33").className = "fa fa-cog has-text-dark";' onmouseout='document.getElementById("icon_setting_33").className = "fa fa-cog has-text-info";'> <span class="icon" style="margin-top:2px; margin-left:-10px"> <i id="icon_setting_33" class="fa fa-cog has-text-info"></i> </span> </button> <div id='overlay_update_33' class='overlay' style="visibility:hidden;"> <div class="middlediv">  ・  ・  ・ ```
guest

0

みなさん、ご回答ありがとうございました。
mts10806さんに色々ヒントを頂き、追加で変更を行いました。

chromeとIE10ではstyle.displayの挙動が違う点が主な原因でした。
style.visibilityなどを使い分けて対処したところ表示がされました。

まだ完璧な挙動ではないですが今回の表示に関しては行えたので、締めさせて頂きます。

投稿2018/05/07 10:54

MF_19

総合スコア27

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問