アプリ版:「スタンプのみでお礼する」機能のリリースについて

皆様、こんにちは。
csv形式を用いての事でお聞きしたい事がありまして。

外部テキストファイル(データバインド)でcsv形式ファイルを呼び出した時の、
文字(文章)を点滅させたいのですが、方法が分かりません。

<BLINK>タグを使えるのはNetscapeですし、
JavaScriptを用いる場合はjsファイルに点滅させたい文字を記述するか、或いは外部テキスト扱いをさせて点滅させたい文字にIDを置く形になりますが、
csv形式で点滅(BLINK)させる場合の構成が分からないので、
何方様かご存じでいらっしゃいましたら、教えて下さい。

どういった記述をすれば、csv形式ファイルの文字を点滅させられますでしょうか?
もし、可能でないのであれば仕方がないのですが、やり方があれば知りたい知りたい次第でして…。

アドバイス・ご回答の程、宜しくお願い致します。

A 回答 (8件)

すみません、私の説明不足と、ソースミスでした。


まず、説明不足というのは、文字色を背景色にどうかさせる例は、その前の、innerHTMLやinnerTextを使ったものの差分しか書いておらず、変更があった分を追加してほしかったのです。

それからソースミスですが、
BUF2[i] = csvTable.rows(i).cells(L-1)style.color;
の部分で、cells(L-1).styleのピリオドが抜けていました。

修正したソースは以下になります。

今回、あらかじめ最初から指定場所、或いは指定列又は指定行にしたいとありましたので、最初から点滅させる場所は決まっていると仮定して、
<body onLoad="Blink(3,4), Blink_Lows(2), Blink_Cols(5)">
とロード時にいきなりJavaScriptを呼び出すようにしています。

点滅させる関数は、
3行4列のセルを点滅させたい場合
Blink(3,4);
3行を点滅させたい場合
Blink_Lows(3);
4列を点滅させたい場合
Blink_Cols(4);
のように使いますので、点滅させたいときに呼び出すようにしてください。


---以下サンプルソースです---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<script language="JavaScript">
<!--
//行、列指定
var BUF1;
function Blink(L,C) {
  BUF1 = csvTable.rows(L-1).cells(C-1).style.color;
  setInterval("DoBlink(" + (L-1) + "," + (C-1) + ")", 1000);
}
function DoBlink(L, C) {
  if (csvTable.rows(L).cells(C).style.color == "white") {
    csvTable.rows(L).cells(C).style.color = BUF1;
  } else {
    csvTable.rows(L).cells(C).style.color = "white";
  }
}

//行指定
var BUF2 = new Array();
function Blink_Lows(L) {
  LEN = csvTable.rows.length;
  for (i = 0; i < LEN; i++) {
    BUF2[i] = csvTable.rows(i).cells(L-1).style.color;
  }
  setInterval("DoBlink_Lows(" + (L-1) + ")", 1000);
}
function DoBlink_Lows(L) {
  LEN = csvTable.rows.length;
  if (csvTable.rows(0).cells(L).style.color == "white") {
    for (i = 0; i < LEN; i++) {
      csvTable.rows(i).cells(L).style.color = BUF2[i];
    }
  } else {
    for (i = 0; i < LEN; i++) {
      csvTable.rows(i).cells(L).style.color = "white";
    }
  }
}

//列指定
var BUF3 = new Array();
function Blink_Cols(C) {
  LEN = 7;
  for (i = 0; i < LEN; i++) {
    BUF3[i] = csvTable.rows(C-1).cells(i).style.color;
  }
  setInterval("DoBlink_Cols(" + (C-1) + ")", 1000);
}
function DoBlink_Cols(C) {
  LEN = 7;
  if (csvTable.rows(C).cells(0).style.color == "white") {
    for (i = 0; i < LEN; i++) {
      csvTable.rows(C).cells(i).style.color = BUF3[i];
    }
  } else {
    for (i = 0; i < LEN; i++) {
      csvTable.rows(C).cells(i).style.color = "white";
    }
  }
}
-->
</script>
<META http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">
<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 9.0.0.0 for Windows">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE></TITLE></head>
<body onLoad="Blink(3,4), Blink_Lows(2), Blink_Cols(5)">
<object ID="ex" classid="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83">
<param name="DataURL" value="C:\MyFolder\HomePage\サンプル03\試験02.txt">
<param name="UseHeader" value="true">
</object>
<TABLE DATASRC="#ex" id="csvTable">
<TR>
<TD><SPAN DATAFLD="No."></SPAN></TD>
<TD><SPAN DATAFLD="Name"></SPAN></TD>
<TD><SPAN DATAFLD="test1"></SPAN></TD>
<TD><SPAN DATAFLD="test2"></SPAN></TD>
<TD><SPAN DATAFLD="test3"></SPAN></TD>
<TD><SPAN DATAFLD="test4"></SPAN></TD>
<TD><SPAN DATAFLD="test5"></SPAN></TD>
</TR>
</TABLE>
</body></html>
    • good
    • 0
この回答へのお礼

EUR様、本当に有り難う御座いました。
何度もお聞きしたのにも関わらず、親切丁寧に教えて下さり、本当に本当に有り難う御座いました。
大変、感謝しております。

これから、もっとJavaScriptの勉強をしようと思いますが、
また何かあった時には宜しくお願い致します。

本当に、有り難う御座いました。

お礼日時:2005/06/21 00:27

よこやりすみません。


#6のソースで「;」がないと怒られる原因は、
BUF2[i] = csvTable.rows(i).cells(L-1)style.color;
で、
styleの前にピリオド「.」がないことが原因です。
(というか、元の#5のソースにもありませんが・)

後の部分は、また説明があるだろうから、簡単に。
関数の呼び出しの部分は、
window.onload=init;
function init(){
//ここ
}
でやればいいんじゃないかな。
地の部分に書いちゃったら、その時には、テーブルがまだないから、まだ使えない。
    • good
    • 0
この回答へのお礼

BLUEPIXY様、以前も質問の際に助けて下さり、
有り難う御座いました。

今回も説明して下さり、有り難う御座いました。
エラーの原因と関数についての部分と、
勉強になりました。

有り難う御座いました。

お礼日時:2005/06/21 00:29

;がないというエラーは、よく文字列を操作したときに起こります。



ソースがないとちょっとデバックできないので、エラーが出ているところの前後数行でいいので、ソースを提示していただけないでしょうか?

よろしくお願いします。

この回答への補足

EUR様、何度も有り難う御座います。
EUR様のをそのまま使用して、色々やっているのですが、
下記の状態で、まずエラーが出てしまいます。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<script language="JavaScript">
<!--
/*下記の例では、行や列の指定を*/
L = parseInt(document.getElementById("siteiX").value) - 1;
C = parseInt(document.getElementById("siteiY").value) - 1;
/*で行っています。
このLやCを引数で渡してあげたらいいですよ。
例*/
function Blink(L,C) {
BUF1 = csvTable.rows(L-1).cells(C-1).style.color;
setInterval("DoBlink(" + (L-1) + "," + (C-1) + ")", 1000);
}
function Blink_Lows(L) {
LEN = csvTable.rows.length;
for (i = 0; i < LEN; i++) {
BUF2[i] = csvTable.rows(i).cells(L-1)style.color;
}
setInterval("DoBlink_Lows(" + (L-1) + ")", 1000);
}
function Blink_Cols(C) {
LEN = 7;
for (i = 0; i < LEN; i++) {
BUF3[i] = csvTable.rows(C-1).cells(i).style.color;
}
setInterval("DoBlink_Cols(" + (C-1) + ")", 1000);
}
/*呼び出すほう
3行4列のセルを点滅させたい場合
Blink(3,4);
3行を点滅させたい場合
Blink_Lows(3);
4列を点滅させたい場合
Blink_Cols(4); */
-->
</script>
<META http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">
<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 9.0.0.0 for Windows">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE></TITLE></head>
<body>
<object ID="ex" classid="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83">
<param name="DataURL" value="C:\MyFolder\HomePage\サンプル03\試験02.txt">
<param name="UseHeader" value="true">
</object>
<TABLE DATASRC="#ex" id="csvTable">
<TR>
<TD><SPAN DATAFLD="No."></SPAN></TD>
<TD><SPAN DATAFLD="Name"></SPAN></TD>
<TD><SPAN DATAFLD="test1"></SPAN></TD>
<TD><SPAN DATAFLD="test2"></SPAN></TD>
<TD><SPAN DATAFLD="test3"></SPAN></TD>
<TD><SPAN DATAFLD="test4"></SPAN></TD>
<TD><SPAN DATAFLD="test5"></SPAN></TD>
</TR>
</TABLE>
</body></html>


以前のJavaScriptも見つつ、手探りでやっているのですが、
「;」に対するエラー、又は識別子のエラーとなります。

友人に専門で勉強している者がいて、見て貰ったのですが、分からないとの事で、
そのままソースを見て貰った方が良いよと。
それで、そのままソースを出してみました。

EUR様のをそのまま使って、まだ何もしていない状態です。
下記で「3行4列目の文字点滅」や「3行目の文字点滅」「4列目の文字点滅」
をどのようにすれば、良いのか…。

急ぎではないのですが、分かりましたら宜しくお願い致します。
度々、本当に申し訳ありません。

補足日時:2005/06/19 23:11
    • good
    • 0

今回の例では、テストしやすいようにボタンで指定するようにしただけですんで、最初から点滅させる場所がわかっていれば、関数の引数として渡せばいいです。



下記の例では、行や列の指定を
L = parseInt(document.getElementById("siteiX").value) - 1;
C = parseInt(document.getElementById("siteiY").value) - 1;
で行っています。

このLやCを引数で渡してあげたらいいですよ。


function Blink(L, C) {
BUF1 = csvTable.rows(L-1).cells(C-1).style.color;
setInterval("DoBlink(" + (L-1) + "," + (C-1) + ")", 1000);
}

function Blink_Lows(L) {
LEN = csvTable.rows.length;
for (i = 0; i < LEN; i++) {
BUF2[i] = csvTable.rows(i).cells(L-1)style.color;
}
setInterval("DoBlink_Lows(" + (L-1) + ")", 1000);
}

function Blink_Cols(C) {
LEN = 7;
for (i = 0; i < LEN; i++) {
BUF3[i] = csvTable.rows(C-1).cells(i).style.color;
}
setInterval("DoBlink_Cols(" + (C-1) + ")", 1000);
}


呼び出すほう
3行4列のセルを点滅させたい場合
Blink(3,4);
3行を点滅させたい場合
Blink_Lows(3);
4列を点滅させたい場合
Blink_Cols(4);
    • good
    • 0
この回答へのお礼

EUR様、再び有り難う御座います。


早速、試そうとしたのですが
「ランタイムエラー デバッグしますか?
行○○";"がありません」とエラーになってしまいました。
エラーの直し方が、分からないものでして。
色々いじってみたのですが、ピンのこないままでして。
他にも色々やっていたら「識別子がありません」とのエラーも。
これらのエラーの原因の究明方法のアドバイスをお願い致します。


自分の方でも色々調べながら試しつつも、点滅方法が上手くいかないもので、
悪戦苦闘していました。

EUR様には、本当に感謝しております。
もう少し、自分で早く解決できる様心掛けたいです。


エラーの件につきましては、
申し訳ありませんが、宜しくお願い致します。

お礼日時:2005/06/18 16:55

消すを背景の色と同化させるに変更しました。


whiteはテーブルの背景色にあわせてください

<script language="JavaScript">
var BUF1;
function Blink() {
L = parseInt(document.getElementById("siteiX").value) - 1;
C = parseInt(document.getElementById("siteiY").value) - 1;
BUF1 = csvTable.rows(L).cells(C).style.color;
setInterval("DoBlink(" + L + "," + C + ")", 1000);
}
function DoBlink(L, C) {
if (csvTable.rows(L).cells(C).style.color == "white") {
csvTable.rows(L).cells(C).style.color = BUF1;
} else {
csvTable.rows(L).cells(C).style.color = "white";
}
}

var BUF2 = new Array();
function Blink_Lows() {
L = parseInt(document.getElementById("siteiX").value) - 1;
LEN = csvTable.rows.length;
for (i = 0; i < LEN; i++) {
BUF2[i] = csvTable.rows(i).style.color;
}
setInterval("DoBlink_Lows(" + L + ")", 1000);
}
function DoBlink_Lows(L) {
LEN = csvTable.rows.length;
if (csvTable.rows(0).cells(L).style.color == "white") {
for (i = 0; i < LEN; i++) {
csvTable.rows(i).cells(L).style.color = BUF2[i];
}
} else {
for (i = 0; i < LEN; i++) {
csvTable.rows(i).cells(L).style.color = "white";
}
}
}

var BUF3 = new Array();
function Blink_Cols() {
C = parseInt(document.getElementById("siteiY").value) - 1;
LEN = 7;
for (i = 0; i < LEN; i++) {
BUF3[i] = csvTable.rows(C).cells(i).style.color;
}
setInterval("DoBlink_Cols(" + C + ")", 1000);
}
function DoBlink_Cols(C) {
LEN = 7;
if (csvTable.rows(C).cells(0).style.color == "white") {
for (i = 0; i < LEN; i++) {
csvTable.rows(C).cells(i).style.color = BUF3[i];
}
} else {
for (i = 0; i < LEN; i++) {
csvTable.rows(C).cells(i).style.color = "white";
}
}
}
    • good
    • 0
この回答へのお礼

EUR様、大変分かりやすく教えて下さり有り難う御座います。

もし、あらかじめ最初から指定場所、或いは指定列又は指定行にするには、
ボタンを押す方法以外ありますでしょうか?
始めから、JavaScriptで指定列と指定行の値をおいておき、
ボタンを押さずにテーブルを出すだけで、例えば2列目の3行目が点滅している、
という方法も可能なのでしょうか?

折角、教えて下さったのに、再び質問して申し訳ありません。
ボタンを押して、指定された箇所を点滅させる方法もとても有り難いと思っておりますが、
ボタン無しであらかじめ最初から指定して点滅させる方法もあれば、
大変申し訳ありませんが分かりましたら教えて下さると助かります。

自分でも、色々と試そうと思っております。

JavaScriptも奥が深くて、難しいものですね。
読解するのが大変なのと、勉強不足だなと思いました。
自分でも色々と調べてみますね。

お礼日時:2005/06/17 23:39

面白そうと思い、ソースをいじくってみたんですが、どうもうまくいかない点がありました。



点滅をstyle.displayで行うと、行指定、列指定のときに行または列が削除されます。

そこでinnerTextで判定し、中身があったらinnerHTMLで<br>をはさみ、中身がなかったらバッファに格納している元のHTMLを挿入しようと考えました。
で、結果というと、列を消す場合がうまくいかないです。
もうちょっといじってみます。

現在のソースをおいておきます。汚いですが・・・

<html>
<head>
<script language="JavaScript">
var BUF1;
function Blink() {
L = parseInt(document.getElementById("siteiX").value) - 1;
C = parseInt(document.getElementById("siteiY").value) - 1;
BUF1 = csvTable.rows(L).cells(C).innerText;
setInterval("DoBlink(" + L + "," + C + ")", 1000);
}
function DoBlink(L, C) {
if (csvTable.rows(L).cells(C).innerText == "") {
csvTable.rows(L).cells(C).innerHTML = BUF1;
} else {
csvTable.rows(L).cells(C).innerText = "";
}
}

var BUF2 = new Array();
function Blink_Lows() {
L = parseInt(document.getElementById("siteiX").value) - 1;
LEN = csvTable.rows.length;
for (i = 0; i < LEN; i++) {
BUF2[i] = csvTable.rows(i).cells(L).innerText;
}
setInterval("DoBlink_Lows(" + L + ")", 1000);
}
function DoBlink_Lows(L) {
LEN = csvTable.rows.length;
if (csvTable.rows(0).cells(L).innerText == "") {
for (i = 0; i < LEN; i++) {
csvTable.rows(i).cells(L).innerHTML = BUF2[i];
}
} else {
for (i = 0; i < LEN; i++) {
csvTable.rows(i).cells(L).innerHTML = "<br>";
}
}
}

var BUF3 = new Array();
function Blink_Cols() {
C = parseInt(document.getElementById("siteiY").value) - 1;
LEN = 7;
for (i = 0; i < LEN; i++) {
BUF3[i] = csvTable.rows(C).cells(i).innerText;
}
setInterval("DoBlink_Cols(" + C + ")", 1000);
}
function DoBlink_Cols(C) {
LEN = 7;
if (csvTable.rows(C).cells(0).innerText == "") {
for (i = 0; i < LEN; i++) {
csvTable.rows(C).cells(i).innerHTML = BUF3[i];
}
} else {
for (i = 0; i < LEN; i++) {
csvTable.rows(C).cells(i).innerHTML = "<br>";
}
}
}

</script>
</head>
<body>
<object ID="ex" classid="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83">
<param name="DataURL" value="sample.csv">
<param name="UseHeader" value="true">
</object>
<TABLE DATASRC="#ex" id="csvTable">
<TR>
<TD><SPAN DATAFLD="No."></SPAN></TD>
<TD><SPAN DATAFLD="Name"></SPAN></TD>
<TD><SPAN DATAFLD="test1"></SPAN></TD>
<TD><SPAN DATAFLD="test2"></SPAN></TD>
<TD><SPAN DATAFLD="test3"></SPAN></TD>
<TD><SPAN DATAFLD="test4"></SPAN></TD>
<TD><SPAN DATAFLD="test5"></SPAN></TD>
</TR>
</TABLE>
<div>
何行目?<input type="text" value="" id="siteiX">
何列目?<input type="text" value="" id="siteiY">
</div>
<div>
<input type="button" value="指定場所" onClick="Blink()">
<input type="button" value="指定行" onClick="Blink_Lows()">
<input type="button" value="指定列" onClick="Blink_Cols()">
</div>
</body>
</html>
    • good
    • 0

<TABLE DATASRC="#ex">


にidをつけて
<TABLE id="csvTable" DATASRC="#ex">
とかしてやれば
for(var i=1;i<=recordSize;i++){
csvTable.rows(i).cells(3).style.backgroundColor="cyan";
}
としてやれば、
test2のデータの部分の背景に色をつけてやることができます。
また、
csvTable.rows(0).style.backgroundColor="pink";
とかしてやれば(タイトル)行の背景に色を付けてやることができます。
同じように
rows(x).cells(y)
で適当な位置のデータのスタイルを変更できます。
点滅させるということであれば、
setInterval等で交互に変更するというような形になると思います。
また、複数のスタイルを変更する場合は、
あらかじめスタイルを定義して置いて
classNameの変更でやるといいかもしれません。

※rows,cellsは、IEのみですが、
もともとデータバインド自体がIEのみだと思うので問題ないかと思います。
    • good
    • 0

どういう形式でデータをファイルから読み込んでいるかわかりませんが、たとえば以下の形式でデータを取得している場合、取得したデータが格納されるSPANのdisabled属性をsetInterval等でtrue,falseを交互に入れてやればいいのではないでしょうか。



<SPAN ID="GetData" DATASRC="#Data" DATAFLD="first"></SPAN>
<SPAN ID="GetData" DATASRC="#Data" DATAFLD="second"></SPAN>
<SPAN ID="GetData" DATASRC="#Data" DATAFLD="third"></SPAN>
<!-- データソースオブジェクトの指定 -->
<OBJECT ID=Data CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">
<PARAM NAME="DataURL" VALUE="hoge.csv">
<PARAM NAME="UseHeader" VALUE="true">
</OBJECT>
</BODY>
</HTML>

hoge.csv:
first,second,third
aaa,bbb,ccc

この回答への補足

EUR様、ご回答有り難う御座います。
補足にて、作っているサンプルを掲載します。


<object ID="ex" classid="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83">
<param name="DataURL" value="sample.csv">
<param name="UseHeader" value="true">
</object>
<TABLE DATASRC="#ex">
<TR>
<TD><SPAN DATAFLD="No."></SPAN></TD>
<TD><SPAN DATAFLD="Name"></SPAN></TD>
<TD><SPAN DATAFLD="test1"></SPAN></TD>
<TD><SPAN DATAFLD="test2"></SPAN></TD>
<TD><SPAN DATAFLD="test3"></SPAN></TD>
<TD><SPAN DATAFLD="test4"></SPAN></TD>
<TD><SPAN DATAFLD="test5"></SPAN></TD>
</TR></TABLE>

[sample.csv]
No.,Name,test1,test2,test3,test4,test5
001,jiro,10,82,64,67,23
002,akiko,95,15,28,35,57
003,syouta,47,14,91,98,99
004,taro,25,30,78,12,80
005,reiko,55,99,41,60,22

としてあります。
テーブルで表示を掛けた時に、文字を点滅させたいのですが、
よく分からないものでして。

例えば、「test1」だけを全て点滅させる、又は「002」の「test1」だけを点滅させる。
という全て或いは一ヶ所のみの方法を探しているのですが、
JavaScriptもまだまだ勉強不足でして。

何か分かりましたら、EUR様、
または何方様か宜しくお願い致します。

補足日時:2005/06/17 14:20
    • good
    • 0
この回答へのお礼

EUR様、ご回答有り難う御座います。

どういう形式でデータをファイルから…との事で、
補足の方に、サンプルとしてあるものを載せますね。
テーブルタグを使うのですが、上手く行かないものでして。

ご指摘など有りましたら、宜しくお願い致します。

お礼日時:2005/06/17 14:20

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