+ JavaScript の質問用スレッド vol.67 +

このエントリーをはてなブックマークに追加
952Name_Not_Found:2008/12/27(土) 13:20:42 ID:???
htmlに埋め込まれたswfがあってさ
swfにはテキストボックスと、それにリンクする再生ボタンがあるんだけど、
htmlに書かれた開始を押すと、swfのテキストボックスに特定の文字入れて再生ボタンを押す、
みたいなことをjavascriptで、したいんだけど簡単?
何でぐぐったらいいかワード教えてくれ
953Name_Not_Found:2008/12/27(土) 15:46:35 ID:???
他人が作ったswfなんだろ?
無理
954Name_Not_Found:2008/12/27(土) 17:52:28 ID:???
仕様によるけど公開オプションあるなら
955Name_Not_Found:2008/12/27(土) 18:01:09 ID:???
JW Player http://www.longtailvideo.com/players/
を調べてるのですが、単純にローカルでflvを再生する事すら出来ません
同じフォルダにindex..htmlとswfobject.jsとplayer.swfとtest.flvを置いて
htmlの中身は
<div id="container">あ</div>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
var s1 = new SWFObject("player.swf","ply","500","500","9");
s1.addParam("allowscriptaccess","always");
s1.addParam("flashvars","file=test.flv");
s1.write("container");
</script>
です。この状態でもプレーヤーが表示され、再生ボタンをクリックすると再生が始まります
この再生をjavascriptから実行したいのですが、出来ません
var player = document.getElementById('ply');
player.sendEvent("PLAY");
とすれば出来るよ!と http://developer.longtailvideo.com/trac/wiki/FlashAPI に書いてありますが
「オブジェクトはそんなプロパティやメソッドサポートしてねーよ」と弾かれます

JW Playerを使いこなしている方、是非Javascriptからプレーヤーを操作する方法を教えて下さい
956Name_Not_Found:2008/12/27(土) 18:18:15 ID:???
Flashのセキュリティの問題だったみたいです
>>955は無かったことに
957Name_Not_Found:2008/12/27(土) 18:28:18 ID:???
function addSelect(){
 select = document.createElement('select');
 select.setAttribute('name', 'select1');
  for(var i=0; i<10; i++){
   opt = document.createElement('option');
   opt.innerHTML = i;
   opt.setAttribute('value', i)
   select.appendChild(opt)
 }
 document.body.appendChild(select);
}

IE7でname属性が反映されなくて困っています。

createElementメソッドでform要素を作成すると、
name属性の設定ができないバグがあることは知っています。
何か回避方法はあるでしょうか?

ちなみに、追加したselect要素に対してすぐに他の処理(共通で使う関数を使用)を加える必要がある為、
DOMに反映されるタイミング保障されないinnerHTMLメソッドは使用したくありません。
958Name_Not_Found:2008/12/27(土) 18:31:24 ID:???
>>957
>>4 Q.13

テンプレも読めないやつは質問するな
959Name_Not_Found:2008/12/27(土) 18:45:06 ID:m4W2RrNt
>>958

Q13 とはまったく関係ない質問をしているのですが・・・。

setAttributeメソッドでなくとも、
element.name = 'xxx' としてもJavascriptでname属性の参照が出来ない、
ということについての回避策が無いかを聞いているのですが。
960Name_Not_Found:2008/12/27(土) 19:00:46 ID:m4W2RrNt
>>959

補足になりますが、name属性の参照は document.getElementsByNameメソッドを
使用するケースです。
firefox等では、createElementメソッドで追加を行うと、追加した要素の数が、lengthプロパティーで参照できますが、
IE6,7では常に0が返ってきます。

ちなみに、Q13 ですが、classに関する記述は間違いではないでしょうか?
以下のように記述すればsetAttributeメソッドでIE6,7でも反映できます。
(IE以外は'class'で指定する必要があるので、
element.className で記述を統一できるという意味ではあっているともいえますが)

element.setAttribute('className', 'aaa')

961Name_Not_Found:2008/12/27(土) 19:07:45 ID:???
バグだって知ってるなら回避策も知ってていいと思うんだが
962Name_Not_Found:2008/12/27(土) 19:34:16 ID:m4W2RrNt
>>961

innerHTMLメソッド(DOMに反映されるタイミングが保障されないので使いたくない)か、
IE6でしか有効でない回避策しか知らないので、その他に回避策が無いかここで聞いてみてるのです。
963Name_Not_Found:2008/12/27(土) 20:44:48 ID:???
>>960
> 以下のように記述すればsetAttributeメソッドでIE6,7でも反映できます。
> element.setAttribute('className', 'aaa')
バグを回避するためにバグを利用するのはどうかな、と。
964Name_Not_Found:2008/12/27(土) 20:47:49 ID:???
まあMac版のIE5のCSSハックとかも、バグを回避するためにバグを使うんだが
MSはやくブラウザから撤退しないかなあw
965Name_Not_Found:2008/12/27(土) 21:34:39 ID:m4W2RrNt
>>963

なるほど。
その通りですね。失礼しました。
966Name_Not_Found:2008/12/27(土) 22:36:28 ID:???
>>963
しかしIE6,7でclass属性値を変更する方法がそれしかないのも事実

>>960
でも
>element.className で記述を統一できるという意味ではあっているともいえますが)
は完全に間違い

IE6,7だけ特別扱いするしかない、というのが現状かと
他のブラウザならclassで変更すればいい
IE8ではこの問題FIXされてるから
967Name_Not_Found:2008/12/27(土) 22:50:14 ID:???
ん、HTMLならclassNameプロパティでええやん。仕様通りでIEでも動く。
968966:2008/12/28(日) 12:14:29 ID:???
>>967
あ、そっちのプロパティ? ならいいや
カンチガイ スマソ
969Name_Not_Found:2008/12/30(火) 01:55:19 ID:JpQ8Ys2m
初めて書き込みします。
javascriptはライブラリを設置する程しかできませんので、
教えていただきたいのですが、

bodyの背景を3つくらい用意し、
それを一定時間でフェードイン・フェードアウトさせ、
自動的に切り替わるようにしたいのですが、
どういうスクリプトになるのでしょうか?
(3つの背景をループさせて表示したい)

本とか見てるのですが、
全くチンプンカンプンで・・・泣きそうです。。

すみません、どなたか教えていただけないでしょうか?
もしくはヒントだけでもお願いします・・・
970Name_Not_Found:2008/12/30(火) 02:00:20 ID:???
諦めたら?
971Name_Not_Found:2008/12/30(火) 05:43:24 ID:???
おい、<!--   //-->ってなによ?
ぐぐってもでてこねぇよ
初心者基本サイトいっても説明されてねぇし突拍子にでてくるんだけどさ。
この間に書かれたとこはスクリプトの重要な部分ですよ、的な感じでおk?
972Name_Not_Found:2008/12/30(火) 05:47:02 ID:???
あ、今適当にサイト巡回してたら書いてたわ すいませんでした
973Name_Not_Found:2008/12/30(火) 06:51:40 ID:???
「        」  ←画像を配置したい場所

○×□△■…  ←配置したい画像
 
 
・ ○×□△■…という画像をクリックすると、押した順番に画像を配置したい場所に左詰めで配置されていく。

・ 画像を2回押すと、その画像が、配置したい場所からなくなる。空いた部分は寄せて隙間をなくす。

・3回目に押すと一番右側に再配置する
 
というスクリプトをつくりたいのですが、”空いた部分は寄せて隙間をなくす。”の部分で困っています。

document.getElementById(imgy).src = document.getElementById(imgy2).src;
の部分で
document.getElementById(...)はnullまたはオブジェクトではありません
というエラーメッセージがでてきます。

ソースコードです。
http://w5.abcoroti.com/~trpg2maho/cgi-bin/up/source3/No_0383.txt
よろしければ原因と解決法をご教授ください。
 
974Name_Not_Found:2008/12/30(火) 07:30:25 ID:???
>>973
そのエラーが出る行の前で「i/y/imgy/imgy2」とった変数を、
alertやtextareaに出して確認するといい。恐らく存在しない
場所を参照してsrcを書き換えようとしている。

それと、img属性にvalue要素をつけて数字として参照する
方法は行儀悪いし、左に寄せる処理自体も怪しい。

複数のブラウザで確認したり、デバッグ機能を持った
アドオンを導入すると問題解決につながりやすいよ。
975Name_Not_Found:2008/12/30(火) 11:04:51 ID:???
>>973
押した回数で判断するより
表示したい場所に画像があるかないかで判断したほうがよくない?
あれば削除なければ挿入って感じにすれば
勝手に左詰めになるし簡単だと思うよ
976Name_Not_Found:2008/12/30(火) 12:34:55 ID:???
>>973
y に代入する値を間違えているんじゃない?
画像の id の番号を代入するべきだと思うけど、value の値を代入してる。
その為、for ループに入らないから変数 imgy2 は undefined のままで、
ループに続く最後の画像を消す為の行でエラーになる。
977Name_Not_Found:2008/12/30(火) 14:18:04 ID:???
おまいら親切だなぁ
978Name_Not_Found:2008/12/30(火) 15:33:51 ID:???
JavaScriptだと最高何年までの計算ができるのですか?たとえば、
西暦1256年の7月27日のことも求められますか。限界を教えてください。
979Name_Not_Found:2008/12/30(火) 16:13:03 ID:???
>>978
ここを読め。
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/15-9_Date_Objects.html
ただし、グレゴリオ暦が使われるようになる前の年代だと役に立たない
んじゃないか?そっから先は歴史の話なので洩れは知らん。
980Name_Not_Found:2008/12/30(火) 16:14:00 ID:???
981973:2008/12/30(火) 19:13:18 ID:???
>>974-6
お忙しい中ありがとうございます!
おかげ様でどうにか希望通りの動作をしてくれました。


>そのエラーが出る行の前で「i/y/imgy/imgy2」とった変数を、
>alertやtextareaに出して確認するといい。恐らく存在しない
>場所を参照してsrcを書き換えようとしている。

var imgy = "img"+ y + i;
の出力結果が「img(yi)」 //本当は「imag(y+i)がほしい」
var imgy2 = "img" + y+1+i;
の出力結果もどうようなミスが原因で参照できない値を書き換えようとしてました。


>それと、img属性にvalue要素をつけて数字として参照する
>方法は行儀悪いし、左に寄せる処理自体も怪しい。


行儀が悪い、とは具体的にはどういうことですか?


>押した回数で判断するより
>表示したい場所に画像があるかないかで判断したほうがよくない?
>あれば削除なければ挿入って感じにすれば
>勝手に左詰めになるし簡単だと思うよ

挿入する仕様より一番右側に新たに追加する仕様が希望だったので。

982Name_Not_Found:2008/12/30(火) 22:16:42 ID:???
なんだか分からんが、>>973 の仕様をもとに作ってみた。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function push(n) {
var d = document.getElementById('d0'), i = document.getElementById('i'+n)
if(i) { d.removeChild(i); return; }
i = document.createElement('img')
i.id = 'i'+n; i.src = 't'+n+'.png'; d.appendChild(i);
}
</script>
</head><body>
<div id="d0" style="height: 40px"></div><div>
<button type="button" onclick="push(0)"><img src="t0.png"></button>
<button type="button" onclick="push(1)"><img src="t1.png"></button>
<button type="button" onclick="push(2)"><img src="t2.png"></button>
<button type="button" onclick="push(3)"><img src="t3.png"></button>
</div></body></html>
983Name_Not_Found:2008/12/30(火) 22:18:13 ID:???
984Name_Not_Found:2008/12/30(火) 22:57:59 ID:???
>>973
おれもつくってみた。
http://www.smihica.com/souko/tes/t.html
http://www.smihica.com/souko/tes/t.js
>>982
それだと3回目に右にでないんじゃね?


大晦日はひまだなー、、、あれ俺なにしてんだろ、
985Name_Not_Found:2008/12/31(水) 01:43:02 ID:???
>>984
大晦日は明日じゃね?
986Name_Not_Found:2008/12/31(水) 01:58:12 ID:???
>>985
大晦日は今日じゃね?
987Name_Not_Found:2008/12/31(水) 04:10:19 ID:???
あれ、今日か?まだあけおめじゃないのか?
でも一日ぐらいずれてもわかんなくね?普通。
988Name_Not_Found:2008/12/31(水) 07:56:16 ID:???
>>984
なんだか元質問者の仕様が曖昧でよく分からんね。直してみたが。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var st = {}
function push(n) {
var d = document.getElementById('d0'), i = document.getElementById('i'+n)
if(i) { d.removeChild(i); return; }
i = document.createElement('img')
i.id = 'i'+n; i.src = 't'+n+'.png';
if(d.firstChild == null || (st[i] = !st[i])) d.appendChild(i);
else d.insertBefore(i, d.firstChild);
}
</script>
</head><body>
<div id="d0" style="height: 40px"></div><div>
<button type="button" onclick="push(0)"><img src="t0.png"></button>
<button type="button" onclick="push(1)"><img src="t1.png"></button>
<button type="button" onclick="push(2)"><img src="t2.png"></button>
<button type="button" onclick="push(3)"><img src="t3.png"></button>
</div></body></html>
989Name_Not_Found:2008/12/31(水) 07:59:33 ID:???
990Name_Not_Found:2008/12/31(水) 09:23:56 ID:???
いつもと違ってみんな優しいな。こういう時のスレは後日見直しても
気分良いし、ためになるから大好きだ。

>>981
>img属性にvalue要素をつけて数字として参照する方法は行儀悪い

・普通はimgにvalueは使われない
・valueに設定された「文字列」を「数字」として扱ってる

あたりが行儀悪いって言いたいのでは?
991973:2008/12/31(水) 10:24:19 ID:???
うまく仕様が伝えられなく申し訳ないです。
○△×△△

「○×△」

○△×△△△△
でも
「○×△」
が返ってきてほしいので、
>>982の動作が考えてた仕様と同じです。
http://kissho.xii.jp/1/src/1jyou59747.zip.html

>>990
>普通はimgにvalueは使われない
そうなんですね。
サンプルのソース少しずついじりながら
とりあえず動くことを目標にしながらの独学なので
気づきにくいこと指摘していただけるのでうれしいです。
992Name_Not_Found:2008/12/31(水) 10:44:41 ID:???
当然の事ではありますが、WEBシステムを作る場合には、CGI(perl / php …)側でのチェック処理を
必ずやらなくてはならないですよね?

という事は、クライアント環境でいちいちJavaScriptなんかでチェックを行う必要ってあるんですか?
※唯一考えられるデメリットとしては、全くクライアント環境でチェックを行っていない場合には
サーバへのアクセスが頻繁に発生してしまいパフォーマンスに影響が出るのでは無いかとは思いますが。

あと、矛盾するかもしれませんがクライアント環境でチェック処理を行う場合には通常は、JavaScriptを使いますが
これをVBSにしVBS+PHPとかでWEBシステムを組む事は出来るんですか?
ASPならVBS + VBという組み合わせで既存システムにはありますが、VBS+PHP(perl)とか聞いた事が無いです。


993Name_Not_Found:2008/12/31(水) 10:47:39 ID:???
994Name_Not_Found:2008/12/31(水) 10:49:42 ID:???
>>992
VBScript でも当然同等のことはできるけど、動作するのは IE のみ。
995Name_Not_Found:2008/12/31(水) 10:51:47 ID:???
>>992
特定の企業向けシステムなら、VBSでもいいだけど、閲覧者を限定しない
システムでVBSを使ったりしたら、このへんに晒されるだけだ
http://pc11.2ch.net/test/read.cgi/hp/1214073928/
996Name_Not_Found:2008/12/31(水) 11:37:15 ID:???
>>994
あざーす。


>>995
、、、まさかVBS+phpとかの組み合わせだとまずいとは知りませんでしたw

勉強になりました。
997Name_Not_Found:2008/12/31(水) 12:47:04 ID:???
998Name_Not_Found:2008/12/31(水) 13:17:51 ID:???
乙梅
999Name_Not_Found:2008/12/31(水) 13:19:17 ID:5XVow6Nm
うめ
1000Name_Not_Found:2008/12/31(水) 13:20:01 ID:5XVow6Nm
うめ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。