これ何て呼びますか

検索をして調べていたのですが、なかなか思うような答えが見つからなかったので投稿しました。

document.writeで、HTMLの書き出しを行っているのですが、タグ内で

class="xxx" としたいところを、ダブルクオテーションが使えなかったので、

class='xxx'と表記して動かしていました。

動作確認をIE7で動いていたのですが、IE6で動かした際に、シングルクオテーションで囲った中が全て動きませんでした。主にcssで使用しています。cssがIE6で反映されてない状態になっています。colspanなどは、括弧で囲わないようにしていました。

シングルクオテーションが原因かどうかもまだはっきりしていないのですが、ダブルクオテーションで試してみたいものの、ダブルクオテーションを入れるとjavascriptの一部になってしまい、うまく表示できません。ダブルクオテーションをhtml内に表記する方法がありましたら教えていただきたいです。よろしくお願いします。

ちなみに、下のような行がずーっと並んでいます。'の部分を"に変えたいです。
newwin.document.write("<tr><th class='shishutsu'>支出合計</th><td class='shishutsu'>"+SHISHUTSU+" 円</td></tr>\n");

A 回答 (3件)

IE6でも"で大丈夫なので、原因は他にあると思いますが、


まぁ、これはさておき、質問の内容に答えます。

JavaScriptの文字列の囲いは、'でも"でもOKですので、
文字列中に"を入れる簡単な方法は'で囲うことです。

newwin.document.write('<tr><th class="shishutsu">支出合計</th><td class="shishutsu">'+SHISHUTSU+' 円</td></tr>\n');


別の方法として、エスケープ文字を利用して、
\"と書く方法もあります。

newwin.document.write("<tr><th class=\"shishutsu\">支出合計</th><td class=\"shishutsu\">"+SHISHUTSU+" 円</td></tr>\n");

今回の件ではこちらの方が簡単かな。
エディタで'を\"に置換すればOKです。
    • good
    • 0
この回答へのお礼

遅くなりましたがご回答ありがとうございました。
実際行ってみて、きちんとダブルクオテーションは書き出せたのですが、やはりうまく動きませんでした。

慌てて計算式から表示からぐちゃぐちゃに表記していたのでその辺に問題があるかもしれません。

取り急ぎ動くものをということだったのでひとまずCSSの使用を中止して見た目整えて完成にしました。引き続き整理しながら原因を探したいと思います。

ありがとうございました。

お礼日時:2007/11/26 21:23

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "

http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<title>Q3422890 TestCase 1</title>
</head>
<body>

<table>
<caption>テスト</caption>
<script type="text/javascript">
var SHISHUTSU = 100;
/*
エスケープキャラクタ
http://www.c-point.com/javascript_tutorial/speci …
*/

/*
あくまでもtext/htmlとして配布される文書はHTMLなので
script要素の内容モデルはCDATA
ところで,このCDATAが終わるタイミングのため、ここでもエスケープしている
*/
document.write("<tr><th class=\"shishutsu\">支出合計<\/th><td class=\"shishutsu\">"+SHISHUTSU+" 円<\/td></tr>\n");
/*
はっきり言うと,俺はこういう風に文書途中にscriptを入れるのが嫌いだ。仕様上は許されているが。
head要素の子要素として,関数等を定義して,DOMを使って文書を変更すべきだろう。
document.writeのタイミングによってはDOMに反映されないブラウザがあったと思うから。

script要素の内容として<や>が含まれるため,XHTML文書としては不適合。
外部ファイルにまとめてXHTMLにすることを進める。
*/
</script>
</table>

</body>
</html>
    • good
    • 0
この回答へのお礼

遅くなりましたがご回答ありがとうございました。
書き忘れていたのですがjavascriptのみ外部ファイルで読み込ませて、
頭からずらーっと書き出した状態にしてしまったのですが
その辺にも問題があったのでしょうか…
(XHTMLを使う習慣もありませんでしたし…)
もっと勉強したいとおもいます><

ありがとうございました。

お礼日時:2007/11/26 21:18

普通に動くようにおもいますが・・・


なにか文法ミスでもしているのでは?

<style>
.shishutsu{
color:red
}
</style>
<script>
var SHISHUTSU=100;
document.write("<table>\n");
document.write("<tr>\n");
document.write("<th class='shishutsu'>支出合計</th>\n");
document.write("<td class='shishutsu'>"+SHISHUTSU+" 円</td>\n");
document.write("</tr>\n");
document.write("</table>\n");
</script>
    • good
    • 0
この回答へのお礼

遅くなりましたがご回答ありがとうございました。
ダブルクオテーションの問題では無かったようなので
ひとまずの対策をして、別の原因を探すことにしました。

ありがとうございました。

お礼日時:2007/11/26 21:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!