+Javascriptの質問用スレッドvol.40+at HP
+Javascriptの質問用スレッドvol.40+ - 暇つぶし2ch2:vol37-663より 愛を込めて
05/08/12 14:34:52
【質問を書く上で】
1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。
 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。
 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。
2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。
 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!)
 長い(1レスに入らない)場合はアップロードしてURIを貼る。
3)初心者という言葉は危険なので使わない方がよい。
 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。
4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。
 ただ「動きません」「エラーです」は何も情報がないため嫌われる。
 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。
 OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。
5)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。
 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、
 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け!
6)質問はまっとうな(他人に理解できる)日本語で。
 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄


3:vol37-663より 愛を込めて
05/08/12 14:35:28
【FAQ】
Q1. 開いた別窓/フレームの内容にアクセスできないのですが…
A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。
Q2. JavaScriptでローカルファイルを読み/書きたいのですが…
A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに…
Q3. document.write(...)でページ内容を追加したいのですが…
A3. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。
 部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、
 (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。
 innerHTMLは非標準ですがIE、Opera、Gecko(N6/N7/Moz等)で対応済。
Q4. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが…
A4. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるしかない。
Q5. Aタグのonclickで動作指定してるのですが時々動きません…
A5. 「onclick="...;return false"」としないとページ移動しちゃうから。
Q6. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが…
A6. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。
Q7. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A7. 「document.forms.myform.elements[変数名].value」でどぞ。
 JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
 例:「obj.p0=obj.p1=...=obj.p8=0;」⇔「for(i=0;i<9;i++) obj['p'+i]=0;」。
Q8. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A8. IEではe.currentStyle、Geckoではwindow.getComputedStyle()を使います。
Q9. 100*1.15の結果が114.999…998となってしまうのですが…
A9. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。
Q10. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが…
A10. Geckoのnew XMLHttpRequest()、IEのnew ActiveXObject("Microsoft.XMLHTTP")
 を使えばできる。古いブラウザだと隠しフレームに読むなどのワザが必要。


4:vol37-663より 愛を込めて
05/08/12 14:36:14
【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】
・仕様を読む:回答者なら仕様の該当部分は読んでいるべき。質問者でも
 仕様を読まずうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。
・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、
 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。
・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと
 は無視」は不毛。質問者が分かって選択していれば尊重する。無知か
 らIE専なのは指摘してあげると親切。
・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される
 可能性大。非標準機能も損得を分かった上で使うならよい。
・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、
 そこだけ見ているとIE専になる。あとは上2件と同様。
・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当
 な理由があることも。尋ねて分かってないようなら煽っても可(w
・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選
 択するべき。一概にどちらは駄目、とは言えない。
・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性
 で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。


5:vol37-663より 愛を込めて
05/08/12 14:36:48
【標準規格・リファレンス】
規格を読まずにどうなってるか分からんとか質問しないこと!

まとめサイト
URLリンク(web2ch.s31.xrea.com:8080)

ECMA-262
URLリンク(www.ecma-international.org)
URLリンク(www2u.biglobe.ne.jp) (和訳)

W3C Document Object Model Technical Reports
URLリンク(www.w3.org)

MSDN Library JScript / DHTML (現在日本語版は古杉)
URLリンク(www.microsoft.com)
URLリンク(msdn.microsoft.com)

Mozilla Gecko DOM, Netscape devedge
URLリンク(www.mozilla.org)
URLリンク(www.mozilla-japan.org) (和訳)
URLリンク(web.archive.org)


6:vol37-663より 愛を込めて
05/08/12 14:37:21
【チュートリアルサイト・サンプルサイト】
規格が読めないならまずはチュートリアル。サンプルサイトも沢山ある。

ECMAScriptチュートリアル
URLリンク(www.axis.t.u-tokyo.ac.jp)

MetaGraphic Cell
URLリンク(www2u.biglobe.ne.jp)

どら猫本舗のリファレンスカウンター
URLリンク(www.doraneko.org)

はぎさんちのページ Mozilla's DOM Sample Project
URLリンク(cgi.din.or.jp)

JavaScript basic samples (ショボイとの説あり)
URLリンク(www.sumnet.ne.jp)

初めてのホームページ講座 JavaScript Dynamic HTML SAMPLES (同上)
URLリンク(www.hajimeteno.ne.jp)

Dynamic Scripting
URLリンク(www.interq.or.jp)

JavaScript深層
URLリンク(www.hawk.34sp.com)



7:vol37-663より 愛を込めて
05/08/12 14:43:10
【検索】
「キーワード『…』で検索しろ」「ぐぐれ」と言われた場合はこちらへ
URLリンク(www.google.co.jp)

【関連スレ】
板違い、スレ違いに注意!サーバ側での処理はWebProg板へどぞ!

Webサイト制作初心者用スレ vol.136
スレリンク(hp板)l50

/* CSS・スタイルシート質問スレッド【44】 */
スレリンク(hp板)l50

CSS/DHTMLバグ辞典スレッド 第4版
スレリンク(hp板)l50

役に立つ書籍は? 2冊目
スレリンク(hp板)l50



8:vol37-663より 愛を込めて
05/08/12 14:55:07
前スレ消化したら、>>1の禅宗サイトへdat揚げといてくれ。
あとはヨロシク。












大丈夫だよw
何もテンプレ触ってないからニヤリ

9:Name_Not_Found
05/08/12 15:50:27
>>8
ウゼー

10:Name_Not_Found
05/08/13 00:54:40
ヒトコト多いのがなければなー(笑

まあ、乙ー

11:Name_Not_Found
05/08/13 03:54:29

でも>>1のまとめサイトのアドレス変わってるよ
URLリンク(web2ch.s31.xrea.com)

12:Name_Not_Found
05/08/13 07:32:01
>>1 しっかり!

13:Name_Not_Found
05/08/13 12:24:36
前スレの968のように、携帯電話では基本的にJavaScript不可。

ただしフルブラウザ搭載機が今後は増えるだろうから、
auのPCサイトビューアやWillcomの京ぽんOpera、FOMAのN901iSのように
そちら専用と割り切るならJavaScriptでいろいろできるだろうね。

14:Name_Not_Found
05/08/13 13:43:24
event に関する質問

…<div><p>text</p>…</div>…、みたいな構造があるとして。

選択したbox領域(div領域)をスクリーン上で移動する処理を作ってるんだけど、
box内の text領域が選択されていると、ブラウザデフォのtext領域の移動動作が先に来て、
スクリプトでのbox移動と干渉して意図しない状況が生まれる事がある。

んで、なんとかしたいんですが…

質問1:textの移動より先にスクリプトを優先するには?
質問2:1が出来るとして、スクリプト内で、stopPropagationみたいにイベントを殺す事ができる?

15:Name_Not_Found
05/08/13 15:26:26
>ブラウザデフォのtext領域の移動動作

詳しく

16:Name_Not_Found
05/08/13 16:11:07
>>15
ブラウザで、テキストを選択(例えば文字をコピーするときに範囲を選択する操作)してから
その選択範囲を drag すると移動操作になる(普通移動できないからアイコンが操作禁止アイコンに変る)
って動作。

これが、自前のスクリプトでの boxエリアの移動処理とかち合って困ってます。

17:JavaScript勉強中
05/08/13 16:29:35 dEximCoo
こんにちは。
現在、JavaScriptを学んでいる途中の者です。

今、やろうとしていることは、
【1、TextBoxの選択している文字列を取得し、変数strTextに代入】
  var strText = new String;
  strText = external.menuArguments.document.selection.createRange().text + 'a';

【2、変数strTextに文字列'サンプル'を追加】
  strText = strText + 'サンプル';

【3、結果のstrTextを、TextBoxの選択されている場所に書き込む】

です。
三番のやり方がわかりません。
TextBoxの名前は分からないものとしてください。

そのまま、元の文字列と、変化させた文字列とを、TextBox内で入れ替える方法をご存知の方、ご教授お願いします。


18:JavaScript勉強中
05/08/13 16:38:20 dEximCoo
>そのまま、元の文字列と、変化させた文字列とを、TextBox内で入れ替える方法
・・・
ありがとうございました。
ひらめきました。自己解決です。
external.menuArguments.document.selection.createRange().text = strText;
でOKです。

19: ◆QeS8Rnamco
05/08/13 18:13:25
>>14
event.preventDefault();
IEならevent.returnValue = false;

似たようなことをやってるかも知れないので最近作ったデモを晒しときます。
URLリンク(psotools.s68.xrea.com)
URLリンク(psotools.s68.xrea.com)

20:14
05/08/13 18:43:32
>>19
すばらしい。研究させて頂きます。
とりあえず preventDefault() で当初の意図は達成できそうです。

21:Name_Not_Found
05/08/14 01:33:49 jlPqjudN
前スレがpart38だww

22:hello
05/08/14 02:50:44 Tqs79mkK
クライアントのPCでファイルの一意な値を取得したいとおもって、
JavaScriptでmd5値を取得しようと思いましたが、やり方がわかりません。
どなたか教えていただけないでしょうか?

宜しくお願い致します。

md5.jsなるライブラリを発見したのですが、
テキストのmd5値取得方法などのサンプルを発見しましたが、
ファイルのmd5値となると見つかりませんでした。



23:Name_Not_Found
05/08/14 14:17:06
>>19
NaN == NaN // false

var m = NaN
var n = NaN
m == n // false

m = parseInt( 'hoge' ) // NaN
n = parseInt( 'fuga' ) // NaN
m == n // false
m == NaN // false
n == NaN // false

isNaN( NaN ) // true
isNaN( m ) // true
isNaN( n ) // true

24:Name_Not_Found
05/08/14 14:59:08
DIV中のテキストを改行を残したまま取得したいのだが
FireFoxではそのまま取得できるけど、IEだと改行が消えてしまうんだが
何か方法ないですか?

PREにすれとかは無しで。

25: ◆QeS8Rnamco
05/08/14 15:34:25
>>23
素で知らなかった。undefinedと比較できるしNaNも同じだと思ってたよ。
ありがとう。

26:Name_Not_Found
05/08/14 19:00:52
>>24
どうやって取得したのかしら?

27:Name_Not_Found
05/08/14 19:52:33
innerTextと予想

28:素人です
05/08/14 20:53:37 CKgB0lbs
質問です。ツリーメニューのイメージで、題名をクリックしたらしたにスペースが広がってテーブルや写真が出るようにしたいのですが。サンプルページをかなり見てまわりましたが、イメージのようなのがないので教えてください。

29:Name_Not_Found
05/08/14 21:04:11 KmOW8M+6
>>26
最初にinnerHTMLで試して、FireFoxではうまくいった。
ほかに試してみたのは、
div.firstChild.data
div.firstChild.nodeValue
あたりだったかな?
innerTextも試したかも。

>>26
ということは改行も取得できるってことかな?

30:Name_Not_Found
05/08/14 21:34:49 CKgB0lbs
誰か教えてくださいよ

31:Name_Not_Found
05/08/14 21:44:04
>>29
¥n取りたいの?<br>取りたいの?

32:Name_Not_Found
05/08/14 21:48:22
>>28
insertBefore/appendChildあたりを調べろ。

貼りたいイメージタグを箇所を指定して代入する感じ。
それを消したいならremoveChild辺りを調べろ。
innerHTMLで書き換えてしまっても良いが好みの問題。

33:Name_Not_Found
05/08/14 21:50:16
>>31
もともとのテキストには改行(\n)が含まれているんですが、
IEだと改行が消えてしまうので、消えないように出来ますか?ってことです。

FireFoxでは、
innerHTML
firstChild.data
firstChild.nodeValue
いずれも改行がそのまま保持されているんですがー


34:Name_Not_Found
05/08/14 22:15:54
>>33
ソース上には存在するが表示の際には
ただの空白になっている改行を取得したいということか?
IEだと標準モードでwhite-space: preでない限り無理だろ。

35:Name_Not_Found
05/08/14 22:23:21
>>28
表示したり、消したりするだけなら style.display を切り替えればいい。
親が非表示なら子も表示されないからイメージでもテーブルでも適当に乗せたらいい。

次のサンプルだと <dt> の部分をクリックすると後続する <dd> が非表示になる。
離れた場所にある要素をいじりたければ id を振るとか工夫しろ。

<dl>
<dt onclick="this.nextSibling.style.display = this.nextSibling.style.display == 'none' ? 'block' : 'none';">切り替え</dt>
<dd><img src="~" alt="~"></dd>
</dl>

36:Name_Not_Found
05/08/14 22:58:20
>>33
>>標準モードでwhite-space: pre
ありがとう。それでいけそうです
で、これを戻すのはどうすればいいのでしょう?

div.style.whiteSpace = 'normal'
じゃだめなのかしら。

37:素人
05/08/14 23:41:37 CKgB0lbs
ありがとう。いろいろ試してみます

38:24
05/08/14 23:56:43
div.style.whiteSpace = 'normal'
戻す必要ありませんでした。

それからIEでは、whiteSapce ='pre'にすると改行が"\r"になっており
FireFoxでは"\r\n"になっているようです。

とりあえず解決しました
お付き合いありがとうございます

39:Name_Not_Found
05/08/15 01:18:20
>>38
改行コードの部分がどうなるかはWin/Mac/Unixで全部違うんでは。

40:Name_Not_Found
05/08/15 02:32:55
>>39
環境がないものでなんともいえません
とりあえず、replace(/\r\n|\r/g,'\n'); としています。

41:Name_Not_Found
05/08/15 02:46:42
/\r\n?/ でいけるよ

42:Name_Not_Found
05/08/15 02:49:48
>>41
なるほど。ありがとう

43:素人
05/08/15 06:11:23 fV9KsMai
>>32さんのいろいろ調べてみたんですが素人にはちんぷんかんぷんでした。


>>35さんのソースはすごくイメージ通りですが、最初は閉じていてほしいのです。

どなたか、貼ったら使えるサンプル下さい。お願いします!

44:Name_Not_Found
05/08/15 08:07:12
素人うぜ
二度とくんな

45:Name_Not_Found
05/08/15 08:09:45
>>43
自分で直せるように勉強する気がない奴は帰れ。

46:素人
05/08/15 09:51:44 fV9KsMai
素人なのにいきなしそんなことできねぇよまじで。
初心者スレで聞きゃスレ違いだの言われるし(>_<)

47:Name_Not_Found
05/08/15 10:25:04
検索という言葉を知らないなんて寺川磯巣

48:素人
05/08/15 10:39:17 fV9KsMai
32さんの単語でぐぐりましたけど、どこのページもお手上げだったのです(T_T)

49:Name_Not_Found
05/08/15 10:40:35
そもそも自分で素人って名乗るのが悪い。

50:Name_Not_Found
05/08/15 10:45:59
勉強しなきゃ、一生素人です
素人が手を出すと危険です

51:Name_Not_Found
05/08/15 10:48:08
プログラミング言語なんだからさ。勉強する気のない奴を
ずーっとおんぶにだっこさせてやる奴なんかいないって。
あきらめるか勉強するか2つに1つだよ。

イキナリつーならそれこそ参考サイトとか本で勉強するべき。

52:名無しさん@Vim%Chalice
05/08/15 15:53:13
「aが0以下だったら10足す、それ以外だったらそのまま」
ってのをifを使わないで、一行でかけませんか?

if ( a =< 0 ) a += 10;
これをもっとスマートに。

53:Name_Not_Found
05/08/15 16:35:40
>>52
ややトリッキーに
a += Number(a <= 0) * 10;

Number(true) == 1, Number(false) == 0ってECMAで定められてたっけ?

54:Name_Not_Found
05/08/15 16:43:03
a += (a=<0) ? 10 : 0 ;

後半なくてもいいけど。

55:Name_Not_Found
05/08/15 16:52:54
>>52
a <= 0 && (a += 10);

a <= 0 じゃないときに 0 を足すとコードの意味が変わってしまう。

56:名無しさん@Vim%Chalice
05/08/15 16:59:18
>>53-54 ありがとう。

後で誰かが修正する可能性を考えると、素直にifにしようと思いました。

aを一回しか書かない、なんて無理ですよね。

もしaを一回しか書かないで書けるなら、
見やすさを無視してでもそれにしたい。
(aの中身は複雑な演算なんです)

57:名無しさん@Vim%Chalice
05/08/15 17:01:41
>>55
ありがとう。
それ戴くかも!

58:Name_Not_Found
05/08/15 20:31:57
スタイルシートの質問かもしれないけど。。。
たとえばブラウザのウインドウ幅が600pxだとします。
<DIV STYLE = "posison:absolute;width:1500px;clip:rect(10px 100px 100px 10px);">
  abc
</DIV>
これでスクロールバーを出さない方法ありますか?
これ以外のコンテンツが原因で600pxを超える場合は、
スクロールバーが自動的に出てくるのが望ましいです。
IE限定でもなんでもいいです。

スクロールバーの有無はclip:rectに合わせて欲しいのです。

59:Name_Not_Found
05/08/15 20:39:53
>>58
overflow

60:Name_Not_Found
05/08/15 20:41:33
自己レス。
<DIV STYLE = "posison:absolute;width:150px;clip:rect(9px 101px 101px 9px);overflow:hidden;">
<DIV STYLE = "posison:absolute;width:1500px;clip:rect(10px 100px 100px 10px);">
  abc
</DIV>
</DIV>
全体をoverflow:hiddenで囲めばOK。
JavaScriptの質問じゃなかったね。すまん。

61:Name_Not_Found
05/08/15 23:21:58
空白をDOMで作成するのにはどうすればいいですか?


62:Name_Not_Found
05/08/15 23:39:05 egaa18Pv
>>61
「空白」の定義を詳しく

63:Name_Not_Found
05/08/15 23:50:46
obj.innerHTML=""

64:Name_Not_Found
05/08/16 00:18:58
>>62
 

>>63
DOMでお願いします。

65:Name_Not_Found
05/08/16 00:21:39 J6LE4WwI
>>64

>

言葉で

66:Name_Not_Found
05/08/16 00:50:03
>>65
日本語ってむつかしいでしね

空白 スペース " " &nbsp;

67:Name_Not_Found
05/08/16 01:30:22
>>62
<script type="text/javascript">
var ss = {'\\x20' : " ", '\\x09' : "\t", '\\x0A' : "\n", '\\x0D' : "\r", '\\x0C' : "\f"};
for (var s in ss) {
    if (ss[s].match(/^\s$/)) alert(s + ': space');
}
</script>

>>61
<p>abc<span id="space">.</span>def</p>
<script type="text/javascript">
var d = document;
var sp = d.getElementById('space');
for (var i = 0; i < 100; i++) {
    sp.appendChild( d.createTextNode(' ') );
}
</script>

↑IEだけ100個分のスペースがとられる。他は普通に1個分。

68:Name_Not_Found
05/08/16 02:21:27
>>56
> (aの中身は複雑な演算なんです)

なら
それこそ var a とかに入れればいいじゃん
トリッキーなことすると可読性が落ちるよ

69:Name_Not_Found
05/08/16 02:26:00
>>48
URLリンク(www.google.com)

70:Name_Not_Found
05/08/16 15:28:49 miOTHa8V
HTML上でアプレットのサイズを0にする方法を教えてください。

SCRIPTタグで~.jsを読み込む方法だとインタプリタになってしまうので
コンパイルしたclassファイルを読み込みたいのですが
OBJECTタグやEMBEDタグを使ってもうまくいかないので
APPLETタグを使い、そのアプレットを表示させないようにしたいです

71:Name_Not_Found
05/08/16 18:47:41
>>70
JavaScriptとJAVAの違いを勉強してください。

72:Name_Not_Found
05/08/16 20:12:53
Javascriptの(擬似)継承の仕方が良く分かりません。
いつもsuperクラスのインスタンスを作って参照させてますが、subクラスのコンストラクタが見難いです。
うまいやり方ないですか。

function SuperClass( val )
{
this.name = "SuperClass";
this.value = val;

this.ShowName = function()
{
return this.name;
}
}
function SubClass(val , name)
{
var superclass = new SuperClass(val);
for( var i in superclass ){this[i] = superclass[i];}
this.name = name;
}


73:Name_Not_Found
05/08/16 20:39:40
つ プロトタイプ

74:Name_Not_Found
05/08/16 22:13:58
はい、サンプルにはJavaScriptはJavaのサブセット
として定義されている、と書いてあるのでここに来ました。
詳しい事は何も書かれてないので、良くわかりませんが、
何か重大な違いがあるのでしょうか?

75:Name_Not_Found
05/08/16 22:29:03
だれがそんなこと言ってるんだ

76:Name_Not_Found
05/08/16 22:37:56
うp

77:Name_Not_Found
05/08/17 10:34:53
>73
Firefoxでも動く具体的なコードをお願い。


78:Name_Not_Found
05/08/17 11:02:49
>>77
URLリンク(www.interq.or.jp)

79:素人
05/08/17 15:09:27
あれ、折りたたみって言うんですか。はじめて知りました。何とか目的のものが探せそうです。いろいろと勉強してみます!

80:Name_Not_Found
05/08/17 15:17:24
>>78
参考になった。ありがとう。

81:Name_Not_Found
05/08/17 16:07:48
>>77
>>78 に加えてここも読むべし
URLリンク(www.tokumaru.org)

82:Name_Not_Found
05/08/17 18:07:33
ここのサイト強いです…。
URLリンク(music.j-total.net)

text(歌詞)を抜き出したいのですが、
ソースにも書いてないし
抜き出しは不可能でしょうか?

83:Name_Not_Found
05/08/17 18:27:38
>>82
可能です。
ただ、そういう内容(いかにハック・クラックするか)というのは
このスレとは趣旨が違うので、ここでは答えが得られないと思う。
ダウンロード板でも行ってください。

84:Name_Not_Found
05/08/17 18:36:55
>>82
Opera使え。
・・・って思ったけどOperaじゃ表示すらされねえw

っ ヒント : アドレス欄にjavascriptイレル

そいや前スレでもなんか暗号化したページがどーのとかでてたよーな。

85:82
05/08/17 18:37:24
>>83
大変失礼しました。



86:Name_Not_Found
05/08/17 19:09:34
似たような歌詞サイト達はだいたいソースからコピれるようになってるのに
ここだけは強いw

87:Name_Not_Found
05/08/17 20:31:21
この程度じゃ大して強くもないと思うけど。
くさったしたい程度のレベルじゃね

88:Name_Not_Found
05/08/17 23:19:25
スミスですか?

89:Name_Not_Found
05/08/17 23:22:26
丸投げスレへと誘導がないなぁ。
彼も、あのスレにやっと見切りをつけたのか?

90:Name_Not_Found
05/08/17 23:24:48
>>81
IWidthが宣言されてないそうだ(ライン136 IE6)。
バグつぶしてから出直せ。

91:Name_Not_Found
05/08/18 15:05:39
>>82
普通に全選択してコピれたYO

 世界はそれを愛と呼ぶんだぜ歌:サンボマスター/詞:山口隆/
曲:山口隆
 Original Key:A / Capo:0 / Play:A
A
涙の中にかすかな灯りがともったら
D       Bm7     E
君の目の前であたためてた事話すのさ


92:Name_Not_Found
05/08/18 17:06:30
>>52
トリッキー好きな俺がきましたよ

a += (a >>> 31) * 10;

a を一回とかいうなら関数でFAじゃね?

function foo(_a) { return _a + (((_a < 0) - 0) * 10) }
var bar = foo(a);

93:Name_Not_Found
05/08/18 18:06:18
>>83
逆にどうやったら保護できる?
やっぱ無理か?

94:Name_Not_Found
05/08/18 18:36:57
>>93
FLASHとか画像に文字書けば。

95:Name_Not_Found
05/08/18 19:38:42
画像なら歪んだ文字にしなきゃ

96:Name_Not_Found
05/08/18 21:49:18
ためしにそのサイトのある歌詞をキャプチャして歌詞部分をpng化したら371*1136で20kb
ソースのJavaScriptの部分だけを切り出したテキストのサイズは36kb

97:93
05/08/18 22:22:46
>>94
スレ違いかもしれんが、FLASHはDBやファイルを読んだりできるのか?
もしできるなら、クライアントは限られるが、それが一番かも。

画像は結構大変だと思われ。
多分、楽曲の登録はほぼ自動化されてるんじゃないか。
それだと歌詞の長さによってはgoogle mapみたいにする必要があるぞ。

98:Name_Not_Found
05/08/18 22:29:01
>>97
直接DBとは繋げられないと思うが・・・
XMLSocketで80番以外のポートに繋いで
そのサービスからDBへという間接的な使い方になる
ちなみにXMLSocketつってもXMLじゃなくてもよい

99:Name_Not_Found
05/08/18 22:31:05
画像が一番楽だと思う。頻繁に更新される内容でもないし。
JavaScriptとは関係ないけどね。

100:Name_Not_Found
05/08/19 00:32:33
でもflashなら抜き出しできるじゃん

101:Name_Not_Found
05/08/19 06:00:51 mFK+/PXk
動的に作ったiframeに、親と同じCSS設定を付けたくて、

var csso = document.styleSheets[0];
frames[frameName].document.createStyleSheet(csso);

とやったのですが適用されませんでした。
cssoにファイル名を書けば適用できるのですが
自動で適用させたいのです。
どうすればできますか?

102:101
05/08/19 06:04:07
var csso = document.styleSheets[0].href;
で出来ました
スレ汚しすみません。

103:Name_Not_Found
05/08/19 07:00:31 sOmwPdmF
全くの初心者で恐縮なのですが、一点質問させてください。

今、商品紹介ページのようなものを作成しています。
そのページで見せる画像についてなんですが、

ひとつの大きな画像(450*338pix)と、その下に複数のサムネイル画像(100*75pix)があり
サムネイル画像にマウスを乗せる、もしくはクリックすると上の大きな画像が切り替わるという
仕組みを作りたいと思っています。

幾つかのサンプルサイトを探しましたが、残念ながら該当するものが見つかりませんでした。
そこでこのような仕組みをご存知の方がいらっしゃいましたら教えていただけると幸いです。

104:Name_Not_Found
05/08/19 08:13:48
>>103
document.images[0].srcとかでググると沢山でてきます。


105:Name_Not_Found
05/08/19 08:42:35 sOmwPdmF
>>104
有難うございます。早速調べてみます。

106:Name_Not_Found
05/08/19 15:22:20
ほんとに見たのか世

107:Name_Not_Found
05/08/19 17:13:29
初歩的な質問で申し訳ないのですが
HTML上で

<SCRIPT SRC="URLリンク(www.XXXXXX.jp)" language="JavaScript"></SCRIPT>

このように記述してるものをjavascript上で実行する場合の記述方法をお教え願います。



108:Name_Not_Found
05/08/19 17:44:05
>>107
わかりやすく。

109:Name_Not_Found
05/08/19 18:07:09
>>107
そのHTMLにSRCの内容がその行に挿入されたと同じと思え。

110:Name_Not_Found
05/08/19 18:14:08
あー
document.writeすればいいのか。
さんくす>>109


111:Name_Not_Found
05/08/19 18:20:59
>>107
URLリンク(www.XXXXXX.jp)
の中身は見てみたの?
ただの js ファイルだと思うけど。

112:Name_Not_Found
05/08/19 18:35:46
>>110
ええー!?何がさんくすなんだよ!
微妙に変に伝わっちゃってるよ><

113:Name_Not_Found
05/08/20 17:35:57
>>107
おまえの前の話題を欲嫁。

114:Name_Not_Found
05/08/21 02:15:19 m75hJfiz
ランダム関数関連なのですが。

4つある画像を更新毎にランダム表示し、一度表示された画像は一巡するまで表示しないというスクリプトを書きたい。

ランダムに表示する所までは調べ調べ書いたのですが、その後の一度表示したものは再度選ばないという部分がどうしてもわからず。。
どなたかご存知でしたらご教示ください

<script language="JavaScript">
var imglist = new Array(
"1.jpg",
"2.jpg",
"3.jpg",
"4.jpg" );
var selectnum = Math.floor((Math.random() * 100)) % imglist.length;
var output = "<img src=" + imglist[selectnum] + ">";
document.write(output);
</script>

115:Name_Not_Found
05/08/21 02:35:39
>>114
画像のアドレスを配列にして、選んだときに配列から削除。
ランダムは配列の数から計算すれば動的に指定可能。
全て表示し終わると配列を初期化して繰り返し。

116:Name_Not_Found
05/08/21 02:49:47
更新毎とあるから、要はページ移動間でどうやって既選択分を覚えておくかって話しでない?
Cookie使うくらいしか思いつかないけれど。

117:Name_Not_Found
05/08/21 03:11:56
random.html?2+10+5+3
           ↑閲覧済みの画像番号

118:Name_Not_Found
05/08/21 03:16:10
すいません。
オブジェクトが持つ要素が分からなくて困っているのですが、
オブジェクトの要素を列挙する方法ってありますでしょうか?

例えば、
tags = document.getElementsByTagName('a');
for (var i in tags) { document.write(dir(tags[i])); }
で、
"href", "onmousedown", ....

って感じのやつです。

119:Name_Not_Found
05/08/21 07:11:05 C0iqX79v
いろんなサイトのソースを見ると
function MM_swapImgRestore() { //v3.0
っていうのをよく見かけるけど、これ何?

やってることは何となくわかるけど、なんでみんな同じの使ってるの?
バージョン3って?誰が書いたものなの?

120:Name_Not_Found
05/08/21 07:28:12
Dreamweaverだったかを使ってロールオーバーを設定するとそんな名前の関数がhtmlに挿入される。

121:119
05/08/21 07:43:05
>>120
なるほど、ソフトの仕業か。

結構いろんな公式サイトでも見かけるってことは、プロもDreamweaver使ってんだな。
もっとマシなロールオーバーの方法はいくらでもあると思うけど…

122:Name_Not_Found
05/08/21 10:47:06
>>118
っ[URLリンク(www.keynavi.net)

123:118
05/08/21 14:09:58
ありがとうございます。
目標達成です。

124:Name_Not_Found
05/08/21 20:07:59

フォトギャラリーを作っています。数百枚の画像ページがあるので、次のhtmlに移動したり、戻ったりするために
←Back Next→
などをスクリプトでやろうと考えています。(example_001.html などのファイル名)

現在のファイル名を取得し、連番の数字(001)を抜き出すことはできました。以下です

var path=window.location.href;
var file=path.substring(path.lastIndexOf('/',path.length)+1,path.length);
var num=file.substring(file.indexOf("_")+1,file.indexOf("."));

この数字に対して、

var number=eval(num)
var back=(number-1);
var next=(number+1);
document.write("example_");
document.write(back);
document.write(".html");

とすると、連番数字の冒頭の「00」が抜けてしまい、困っています。
document.write("00");
を追加しても、「example_015」などのように、桁があがれば当然対応できません。

良い方法があればご教示ください。長文失礼しました。





125:Name_Not_Found
05/08/21 20:14:12
先頭に00つけて後ろ3桁を取り出す

126:124
05/08/21 22:16:34
とても助かりました!ありがとうございました。


127:Name_Not_Found
05/08/22 07:58:22 1N2rthzY
例えば↓のようなコードがあったとして
--
<span id="a" onclick="alert()">c</span>
--

クリックしたときに、その要素の id 属性を参照して 上の例では「a」 と表示
するようにするには、alert() の引数はどのように書けばいいでしょうか

128:Name_Not_Found
05/08/22 08:07:09
this.id

129:Name_Not_Found
05/08/22 08:13:55
>>128
スバラシイ できた サンクス

130:Name_Not_Found
05/08/22 12:31:29 3Ia+tGB4
ページが読み込まれた時に、CSSのレイヤーを1秒だけ表示させて消す
という事をしようと思っています。
初心者スレで3日ほど前に質問させて頂いたところ、setTimeoutを組み合わせるとの
事だったのですが、本を読んでもさっぱりわからなくて困っています。
似たようなサンプルを探していたのですが、setTimeout Javascript サンプル というキーワードでぐぐっても
”レイヤーを消す(表示させなくする)”という方法がわからないのです。

以下が自力で書いたものです。2行ですが…
<SCRIPT LANGUAGE = "JavaScript">
<!--

var test;
test = ("<div id='test' style='background-color:gray; position:absolute; left:110px; top:110px; width:300px; height:300px; z-index:1;'>テストです</div>");

//-->
</SCRIPT>

onLoadとsetTimeoutを使うのでしょうが、どうかけばいいのか…というレベルです。
「こう書け」、「ここを参考にしろ」でも構いませんので、よろしくお願いいたします。

131:Name_Not_Found
05/08/22 12:47:57
>>130

<html>
<head><script type="text/javascript"><!--
function init(){
document.getElementById('test').style.visibility='hidden'
}
//--></script></head>
<body onload="setTimeout('init()', 1000);">
<div id='test' style='background-color:gray;position:absolute;left:110px;top:110px;width:300px;height:300px;z-index:1;'>
テストです</div>
</body>
</html>

132:130
05/08/22 12:57:12
>>131
ありがとうございます!即答していただいて、びっくりしています。
書いてあるものを見れば、あーこうやるんだってわかるんですけど
自分で書くとなると全く別ですね… 

Javascriptって結構面白いですね。今後、少しづつ勉強していきます。
本当にありがとうございました。

133:114
05/08/22 14:04:10 nNrvG3gf
114です。ありがとうござります。
みなさんの指摘通り本かってきていじくっていたのですが、
こまったことに、配列から要素を削除するpopなどのメソッドが
Macで使用できない事に気づきました。MacのIEは5.2までですが
pop()やshift()などの削除系メソッドは5.5からの対応。。。
みなさんはどう対応しているのでしょうか?
ただ、クリックすると4つの画像をランダムに表示するが、
一度表示された物は一巡するまで表示されない。というスクリプトが書きたいだけなのです!!
ただしMacの最新?IE(5.2)でみれないとなのですが。
ほかによい方法や、サイトなどがあればどなたかご教示ください。

現在のスクリプトです。
サンプルの外部ファイルを使って配列をシャッフルしています。
まずは外部ファイルから乗せます。


134:114
05/08/22 14:04:56 nNrvG3gf
まずは外部ファイルから乗せます。

function shuffleArray(ar,num){ //配列シャッフル。arは配列名。num回数。
var dummyArray=new Array(ar.length);
var l,m,n,o,p;
for(var i=0;i<num;i++){
l = (Math.round(Math.random()*10000))%(ar.length);
m = (Math.round(Math.random()*10000))%(ar.length);
n = Math.max(l,m); o=Math.min(l,m);
p=0;
for(var k=o;k<n;k++){
dummyArray[p]=ar[k];
p++}
for(var k=0;k<o;k++){
dummyArray[p]=ar[k];
p++}
for(var k=n;k<ar.length;k++){
dummyArray[p]=ar[k];
p++}
for(var j=0;j<ar.length;j++)ar[j]=dummyArray[j];
ar.reverse();
}
return ar;
}

135:114
05/08/22 14:06:05 nNrvG3gf
htmlです

<script type="text/javascript" src="arrayshuffle.js">

var test = new Array();
test[0]= "img/d1.gif";
test[1]= "img/d2.gif";
test[2]= "img/d3.gif";
test[3]= "img/d4.gif";

test = suffleArray(test, test.length);

document.write(test.pop() );
</script>

136:Name_Not_Found
05/08/22 14:07:26 T+kIweCg
リンクテキストの上にマウスポインタを乗せると、別の場所の画像が切り替わるということをすることは可能なのでしょうか?
また、その方法を教えてください。

137:114
05/08/22 14:08:43 nNrvG3gf
ageてしまた。スマソ
以上ですだれかおわかりになりましたらおたすけくださ

138:Name_Not_Found
05/08/22 14:27:02
>>137
____       ________             ________
|書き込む| 名前: |            | E-mail(省略可): |sage           |
 ̄ ̄ ̄ ̄        ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄              ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                              ∧ ∧  。  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                              ( ゚Д ゚) / < ここに「sage」(半角)と
                               ⊂ つ    | 入れるとスレがあがらない。
                            | ̄ ̄ ̄ ̄ ̄|   \_____________
                            |          |
                            |          |
                       | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|

139:114
05/08/22 14:43:19 nNrvG3gf
>>138
了解。。

140:Name_Not_Found
05/08/22 14:47:35
>>133
foo をもとからある配列として、値が"var"を消す。

var tmp = new Array();
for(var i=0 ; i<foo.length ; i++){
if(foo[i] != "var") tmp.tmp.length = foo[i];
}
foo = tmp;

てなことを昔はやっとりました。

141:Name_Not_Found
05/08/22 14:47:41
>>133
Mac IEとWin IEは別物なんでWinIE 5.5未満で実装されて
いなかった機能が現在のMacIEで使えないとは必ずしも
言えないよ。

そんなのより複数レス連続で貼るのやめてくんない?

142:Name_Not_Found
05/08/22 14:49:01
× tmp.tmp.length
○ tmp[tmp.length]

すまそすまそ。

143:Name_Not_Found
05/08/22 14:53:51
>>136
さんざん既出なんだけど…問題を切り分けて考えよう。

1. マウスポインタを乗せると
 onmouseover属性を使うなり、イベントモデルを使うなりする
2. 別の場所の画像が
 img要素にidやnameをつけてgetElementByIdするなりImage[name]なりでアクセス。
3. 切り替わる
 2のimgのsrcを希望のものと入れ替える

自分なりに調べてわかんないところがあったらまた質問してください。
 

144:Name_Not_Found
05/08/22 15:06:07
>>136はさっき、CSS質問スレッドで質問してたなwwwwwwwwww
Welcome!

145:Name_Not_Found
05/08/23 11:09:59
>>121の言うましなロールオーバーの記述を見てみたいもんだ

146:Name_Not_Found
05/08/23 13:29:03
Javascript&DHTML の組み合わせで、マウスでドラッグすることで2つの行を入れかえる、
といった派手で動的なサンプルが紹介されていたページがあったのですが、アドレスの
わかる方はいらっしゃいますか?

英語のページです。

147:Name_Not_Found
05/08/23 17:22:12
それくらい自分で作れるようになるためにあるのがこのスレ

148:Name_Not_Found
05/08/23 18:46:35
>>133
連想配列でフラグ立てたり、popとかを自前で作るなり、方法はいろいろあるでしょー。

149:Name_Not_Found
05/08/23 19:36:42
>>133

Array.prototype.pop = function()
{
var ret = this[ this.length - 1];
delete this[ this.length -1 ];
--this.length;
return ret;
}

でだめなんか?

150:Name_Not_Found
05/08/24 02:03:06
何故技術書は肝心の所を書かないのか
スレリンク(php板:401-番)

にて 2ch 発の技術書企画が進行中です。
主に Web 開発・運営に付いてのノウハウが集められる予定です。
興味のある方・我こそはと思う方は一度覗いてみてください。

151:Name_Not_Found
05/08/24 20:09:08 rqVxgMSq
やりたいこと
 ・HTML画面で参照ボタン押してファイル選択ダイアログで選択したローカル端末の画像を表示させたい。
 ・できればほとんどのブラウザで機能するようにしたい。最低でもIE、ネスケ、Firefoxの3つはOKにしたい。
<input type="file">で選択したら値を<img>タグのvalueにつっこんだら動くかなーってやってみたら、
ブラウザによって表示できたりできなかったりでよくわからんようになってきてます。
どなたかご存知の方ご教授ください。

152:Name_Not_Found
05/08/24 21:02:10
>>151
まず<img>のvalueじゃなくsrcだよなー。
type="file"のvalueを取得した後alert(...)で表示してみ。そこの
可否がブラウザによって違うだろうと予想するが。で、もしそうなら、
セキュリティ制約だからどーにもならんだろう。そうじゃないのなら
表示される値の様子で適宜対応可能と思われ。

153:Name_Not_Found
05/08/24 21:49:17
Firefoxでフォーム上の画像をクリックした時、クリックされた画像内座標を取得するにはどうしたらよいでしょうか?
IEだとwindow.event.offsetX,window.event.offsetYで得られる値です。

154:Name_Not_Found
05/08/25 00:05:57
みなさん、がんばって夏厨に手とり足とりですか?
ゴクロウサマです。一応暑中見舞いということで、また落ち着いた頃来ます。

>138
いいね。これからそれでいこうか?

155:Name_Not_Found
05/08/25 01:11:50
>>154
永久に来んでええぞ、ショボイ汚物。

156:Name_Not_Found
05/08/25 03:05:13
>>153
イベントに割り当てられた関数の引数 (arguments[0]) として
Event オブジェクトが渡される。
インラインスクリプトなら仮変数名 event で参照可能。

Mozilla の Event オブジェクトには offsetX や offsetY はないので
自力で計算する必要がある。
例えば event.pageX - event.target.x
このままの式では border や padding を含めた値になるので
正確に算出したければもう少し工夫してくだされ。

157:Name_Not_Found
05/08/25 09:35:24
>>156
event.target.xで値が取れません。
event.target.nameとすると該当オブジェクトのname値が得られるので使い方は間違っていないと思うのですが。


158:Name_Not_Found
05/08/25 11:52:17
>>157
event.target は img 要素 (HtmlImageElement) ですか?
そうでなければ x プロパティはないので、代わりに offsetLeft を
使ってください。

offsetParent が body でない場合は、offsetParent が body に
なるまで offsetLeft を順に加算していかないといけないようです。

159:Name_Not_Found
05/08/25 11:58:57 RSe5lFC0
>>152
やっぱりブラウザ毎に調査して編集したりしないとダメですかねー。
色々試してみます。

160:Name_Not_Found
05/08/25 15:15:37 8vf5tQ1b
表紙→サイト内の他ページ→表紙 と戻ると
表紙に施した、画像をランダムに変えるjavascriptが効かなくなるのですが
なにか対処法はないのでしょうか。
むかし何かで読んだ気がするのですがどうしても思い出せません。

WinXP + IE6 です。


貼ったソースはこれです。

<script language="JavaScript" type="text/javascript">
<!--
var n = Math.floor(Math.random()*30);
document.write("<img src=URLリンク(domain)"+n+".png width=148 height=111 border=0>");
//-->
</script>

161:Name_Not_Found
05/08/25 15:34:18
>>158
できました。ありがとうございます。

162:Name_Not_Found
05/08/26 11:23:29
>>160
windowのonloadのタイミングで動かしたらいいんでないの?
MacIEだと多重起動するかもしれないから注意しつつ。

163:Name_Not_Found
05/08/26 19:33:50 4kDk2Epj
100枚ほどある画像を、Javascriptで配列化しシャッフルして表示するサイトを
つくったのですが、キャッシュのせいで、更新したはずの画像が更新されなかったりします。おそらく,
var arrImage1 = new Array();
arrImage1[0]= "img/001.jpg";
arrImage1[1]= "img/002.jpg";
arrImage1[2]= "img/003.jpg";
      |
arrImage1[100]= "img/100.jpg";

と配列を組み、更新時サーバーにこの連番画像を上書きするだけで
更新できるサイトをつくろうとしたのが原因かと。。。

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<meta http-equiv="expires" content="0">

なども試したのですが効果ナシなしでした。
良い方法はあるでしょうか?


164:Name_Not_Found
05/08/26 20:02:20 btPQUHXY
どなたか教えてください。

javascriptでinnerHTMLで書き換えたものを
リロードしても保持するにはどうしたらよいでしょうか?

もし無理ならinnerHTML以外に書き換える方法ってありますか?

よろしくおねがいします。

165:Name_Not_Found
05/08/26 20:07:00

教えていただきたいのですが、
nameやpropertyなどまったく同じなボタンが何個かあります。
何番目のボタンがクリックされたか判定する方法はありますか?


<input type="text" name="a" value=""><input type="button" name="b" value="削除">
<input type="text" name="a" value=""><input type="button" name="b" value="削除">
(textボックスと削除ボタンがずっと続く。)

nameやidに連番を振りたかったのですが他の事情でちょっと無理なので、その方法は無しで考えたいです。


やりたいことは、何番目の削除ボタンが押下されたら、何番目のテキストボックスのvalueをクリアしたい、ということです。


166:Name_Not_Found
05/08/26 20:11:14
ソース腫れ>165

167:Name_Not_Found
05/08/26 20:23:05 /QcQHkxx
フレーム1 自サイト
フレーム2 他サイト の時…

フレーム1からフレーム2のフォームに値を渡すのはできないんでしょうか?
セキュリティの問題?

168:Name_Not_Found
05/08/26 20:23:25
>>165
document.forms[0].elements[0].value='';

169:Name_Not_Found
05/08/26 20:32:56
>>163
ブラウザのキャッシュは削除してみたの?

ところで JS と微塵も関係ないと思うんだけど。

170:Name_Not_Found
05/08/26 20:33:39
>>167
XSS になるのでどうがんばってもできません

171:Name_Not_Found
05/08/26 20:35:05
>>163
画像のパスに"?"とnew Date().getTime()をくっつけてみて
ランダムな数字でもよか

172:Name_Not_Found
05/08/26 20:36:27 /QcQHkxx
>>170
やっぱり… orz

173:165
05/08/26 20:41:44
<table>
 <TR>
  <TD>
   <INPUT type="text" name="data" value="">
   <INPUT type="button" value="削除" onclick="deleteData();">
   <INPUT type="hidden" name="mode" value="">
   <INPUT type="hidden" name="date" value="">
  </TD>
 </TR>
 <TR>
  <TD>
   <INPUT type="text" name="data" value="">
   <INPUT type="button" value="削除" onclick="deleteData();">
   <INPUT type="hidden" name="mode" value="">
   <INPUT type="hidden" name="date" value="">
  </TD>
 </TR>
(<TR>から</TR>まで同じのが多数繰り返し。実際はjspでforを用いて書いてます)
</table>
deleteDataをクリックしたときに、data、mode、date(他にもhiddenがいっぱいあります。)
をクリアしたいです。
ほかで、追加ボタンをクリックすると、<TR>から</TR>を追加したりするので、
連番を振るのが難しいです。
なので、削除ボタンをクリックしたときに、クリックした削除ボタンが何番目か解ったら、
168さんが書いたようにdocument.forms[0].data[n].value=''; が使えると思ったんです。
現状この"n"がわからないので困ってます。

174:Name_Not_Found
05/08/26 20:43:41
>>164
書き換えるパターンが多くないのなら
パターンを識別する情報を URL の query 部分に付加するとか

175:Name_Not_Found
05/08/26 20:46:08
>>164
innerHTMLでの変更内容をクッキーでも覚えておき、リロード
された時クッキーを見て同じ変更を施す、とかな。作るとなると
変更の内容によっては面倒だろうけど。

176:Name_Not_Found
05/08/26 20:47:39
>>173
そのソース
漏れの脳内ブラウザではまともに動かないみたいだ

個別に form に入れるんじゃダメなの?

177:Name_Not_Found
05/08/26 20:49:11
>>167
そのフォームを処理するCGIがよそからの提出を受け入れるのなら、
そのフォームと同じものをこちらで用意して提出するとかかな。
>>170
なんでXSSになるのか分からないんだけど説明してみて。

178:Name_Not_Found
05/08/26 20:49:26
>>175
クッキーは全体での容量制限があるから
あまり長い文字列を覚えさせて
ほかのクッキーを逼迫するようなコードは感心しない

179:Name_Not_Found
05/08/26 21:00:21
>>171
"?"/new Date()/getTime()/
は配列の部分のパスにそれぞれ指定していいものか?
>>175
禿同



180:164
05/08/26 21:08:14 btPQUHXY
みなさん、ありがとうございます。

innerHTMLで書き換えるのは全部で500行ほどです。
(ボタンをクリックするとテーブル行をどんどん増やしていく感じなんですが、
上限値がかなり大きいため。)
これをクッキーで保持してもOKでしょうか?

あと、考えたのは、
URLリンク(www.makoto3.net)
userData Behavior というのを使う方法です。
今日はじめて知ったので、ちょっと不安なんですが。

181:178
05/08/26 21:16:02
違った
一つのクッキーが 4kB までだった
ほかにもいくつか制約がある

URLリンク(wp.netscape.com)

182:Name_Not_Found
05/08/26 21:29:14 Wqgbia6k
>>173

function deleteData()
{
  this.previousSibling.value = '';
  this.nextSibling.value = '';
  this.extSibling.nextSibling.value = '';
}

は?

183:Name_Not_Found
05/08/26 21:29:57
>>173
onclick の所を "deleteData(this);" として関数を所有する
オブジェクト (この場合は HtmlInputElement オブジェクト) を
渡したらどうですか?

deleteData 側では受け取った引数を元に DOM の親子関係で
クリアする要素を決められるかと思います。
例えば parentNode の childNodes で兄弟ノードが列挙できます。

184:171
05/08/26 21:55:09
>>179
どの画像が更新されたかわからないなら全ての画像パスにアレしないと
キャッシュ読みにいってしまうよ。

>>164
window.nameに文字を保存することが可能。
そのwindowが閉じられるまで内容を引っ張りまわせる
クライアントサイドのセッションみたいな使い方できる

容量制限とか無いっぽい。NN4でも有効だったような。
細かい検証はしてないごめん




185:173
05/08/26 22:14:50
>>182-183
どうもありがとうございます!
deleteData(this)にして、

function deleteData(obj)
{
  obj.previousSibling.value = '';
  obj.nextSibling.value = '';
  obj.extSibling.nextSibling.value = '';
}
でやってみたんですが、
obj.previousSibling.value はundefindedになってしまいました。
nodeNameだと#textになるので、位置の取得はできてるっぽいのですが、
valueが取得できません。
ちなみにnodeValueだと空白でした。

もうちょっと考えて見ます。




186:Name_Not_Found
05/08/26 22:23:08
171>>
ありがとうございます。
うーむ。書き方が間違っているらしく動かにゃい。
スマソ。何でもよいのでアドバイスをください。
var arrImage1 = new Array();

arrImage1[0]= new Date().getTime()."img/001.jpg?";
arrImage1[1]= new Date().getTime()."img/002.jpg?";
arrImage1[2]= new Date().getTime()."img/003.jpg?";
arrImage1[3]= new Date().getTime()."img/004.jpg?";
arrImage1[4]= new Date().getTime()."img/005.jpg?";
arrImage1[5]= new Date().getTime()."img/006.jpg?";
arrImage1[6]= new Date().getTime()."img/007.jpg?";
arrImage1[7]= new Date().getTime()."img/008.jpg?";
arrImage1[8]= new Date().getTime()."img/009.jpg?";
arrImage1[9]= new Date().getTime()."img/010.jpg?";

逝ってきまつ。

187:Name_Not_Found
05/08/26 22:34:50
>>185
<input> の間に空白がある。
name が付いてるんだから parentNode.childeNodes の方が簡単。

>>186
arrImage1[0] = "img/001.jpg?" + (new Date()).getTime();
いちいち全部書かずに for 使えよ。

188:173
05/08/26 22:51:00
>>187

できました!ありがとうございます。

189:vvm-man
05/08/27 04:21:42
JavaScriptで作ったノベルツールなんですが。
おまいらに動作テストしていただきたい。
普段はゲ製作にいるんだけど、人少ないうえ、あんまし興味ないっぽくて動作検証してもらえないんだ……orz。

当方ドザですので、林檎ブラウザ、とくにサファリでの動作が気になります。
Windowsなら最新のブラウザのほとんどで動作可能。
ただし、Mozillaは偽ウィンドウのバッテン無効なので、ウィンドウ本体の閉じるボタンを押してあげてください。
MacはIEでなら動くとの報告。
前のテストの後、調整を加えたので、他の林檎ブラウザでも動くようになったかもしれないです。(望み薄)

起動と同時に全画面支配するので気をつけてください。
URLリンク(f58.aaa.livedoor.jp)
で速攻落ちする人(Macネスケでその報告あり)とか、いきなり全画面は嫌な人、あとポップアップブロックを設定してる人は

URLリンク(f58.aaa.livedoor.jp)
で試して。

ウィンドウだけが表示されて動かない人は、一分だけ待ってみてください。
シナリオファイルの読み込みに時間食ってるだけかも知れないです。

動作報告は動作の是非に、OSとブラウザの種類及びバージョンをつけてくれると有り難い。
エラー出た方はJavaScriptコンソールのエラーをはっつけてくれるとなお嬉しいです。

190:Name_Not_Found
05/08/27 06:37:46
>>189
氏ねよ

191:Name_Not_Found
05/08/27 13:46:17
URLから指定の変数を取得するにはどうしたら良いのでしょうか。
URLリンク(hoge.com)

と入力したらnameに入っているabcを取得したいです。

192:Name_Not_Found
05/08/27 14:34:46
>191

function getQuery(_win) {

 if (!_win) _win = self;
 var q = _win.location.search;
 if (q.charAt(0) == "?") q = q.substr(1);
 var qz = q.split("&");
 var qTmp = new Array();
 var tmp = new Array();

 for (var i=0; i<qz.length; i++) {
   tmp = qz[i].split("=");
   qTmp[tmp[0]] = tmp[1];
 }
 return qTmp;
}

q = getQuery();
alert( q.name );


193:Name_Not_Found
05/08/27 15:07:21
>>192
調べてみます。
ありがとうございました!

194:Name_Not_Found
05/08/27 15:36:19
>>191
URLリンク(akiyah.bglb.jp)
これでもいいかもね

195:Name_Not_Found
05/08/27 15:48:31
>>192
>>194
思い通りの動作をしてくれました。
とても参考になりました。ありがとうございました。

196:Name_Not_Found
05/08/27 15:51:02
>>191
参考になるかどうか
URLリンク(www.geocities.jp)スレリンク(hp板)

ちなみにこれ作る時 javascript質問スレの全過去ログを見たんだけど
この類の事は見つからなかったです。

あとは>>194で出ているlocation.searchとか。




197:167
05/08/27 18:27:07
>>177
㌧。残念ながらリファラを見てるのでよそからのPOSTは受け付けないんです。
document.referrerを書き換えられればいいんですが…

198:167
05/08/27 19:37:29
すみません。自己解決しました…

199:Name_Not_Found
05/08/27 19:39:39
>>198
何して解決したのさ

200:以後予定なし
05/08/28 21:41:26
山梨県が嘆くほどくだらない質問をしてもいいですか。

<!--
document.forms["form1"].name.value = location.search.substr();
//-->
でURLから[nama=blog]という引数を取得しようと思ったのですが、CGIに送るときに
[nama=ine%3Dblo]と送られてしまうのですがなぜでしょうか?

201:Name_Not_Found
05/08/28 21:45:40
189は踏んでいいのか?

202:Name_Not_Found
05/08/28 21:51:49
..name.valueでは、..nama.valueは取得できません。

冗談はさておき、
まず送られる前の引数が[nama=blog]かデバックしろ。
合ってれば、文字コードの問題。変換して送れ。

203:以後予定なし
05/08/28 21:58:32
>>202
初心者には優しくな。

デバックは通ったから変換の仕方教えてください。

204:Name_Not_Found
05/08/29 00:36:21
>>203
漏れもエンコードについてはよくわからんのだけど、
HTMLとCGIの文字コードを同じにしてみては?ってことではないでしょうか

205:Name_Not_Found
05/08/29 00:46:13
何いってんだ。文字コードとか関係ないだろ。

206:Name_Not_Found
05/08/29 01:01:02
PHPに送ってやれば文字化けしなくて済むんだけどねぇ…
PHPじゃだめ?

CGIだとエンコの必要があるからKent-Webあたりから
サンプル(掲示板でOK)もってきて研究してみては?

207:Name_Not_Found
05/08/29 02:28:53
だから関係ないって言ってるだろw

nama=ine%3Dblo
っていうのは、デコードしたって
nama=ine=blo
にしかならないだろが。

nama=blog って取りたいんだろ?
ine= がどっから出てきたのかとか blog の g が何で消えたのかとか直さないと解決にならないだろ。

208:Name_Not_Found
05/08/29 02:48:57
>>201
XMLHTTPを使って自分で簡易確認すればいいだろ

209:Name_Not_Found
05/08/29 02:58:24
>>206
なんか凄いですね。ばかな私たちにrfc2396の要約を語って頂けませんか。

210:Name_Not_Found
05/08/29 03:02:56
もうちょっとレベルの高い質問と回答プリーズ

211:Name_Not_Found
05/08/29 11:00:04
レベルの低い人たちが引く

212:Name_Not_Found
05/08/29 11:04:53
URLリンク(www.googkle.com)

213:Name_Not_Found
05/08/29 19:34:46
行末のhtm|htmlをjpgにreplaceするbookmarkletをキボンヌします。
宜しくお願いします。

214:Name_Not_Found
05/08/29 19:39:13
>>213
希望承りました。ところで質問は何ですか?

215:Name_Not_Found
05/08/29 19:48:21
bookmarkletでの正規表現(RegExp)の使い方ですぅ。

216:Name_Not_Found
05/08/29 20:00:12
釣りじゃないなら30分でつくってやるよ

217:Name_Not_Found
05/08/29 20:03:07
釣りじゃないです。エロいページ用です。宜しくお願いします。


218:Name_Not_Found
05/08/29 20:18:13
javascript:document.location=document.location.href.replace("htm", "jpg");
一応これでも出来ますが、複数の拡張子となると...


219:213
05/08/29 20:35:31
javascript:(function(){document.URL=document.URL.replace(RegExp("htm|html"), "jpg")})();
出来ました。お騒がせ致しました。
こんなもんでいいんでしょうか?

220:Name_Not_Found
05/08/29 20:44:35
>>219
それを判断するのはお前だ

221:Name_Not_Found
05/08/29 20:58:11
便乗:bookmarkletでfocusとfuncionってどういう意図があるんですか?

222:Name_Not_Found
05/08/29 21:20:10
funcionって初めて聞くなあ

223:k
05/08/29 21:25:16
>219
javascript:location.replace(document.URL.replace(RegExp(/html?$/),"jpg"))

>221
219 にある function は無名関数。普通は変数を隠したいときに使う。
219 は無意味につき参考にはならん。
focus は恐らく最後に付け足されたもののことを言っていると思われるが
最後に評価された式で undefined を返さないと
返り値が出力されてしまうのでソレを回避する為の小技。
因みに focus より void を使う人が多い。が、これは好みの問題。

224:k
05/08/29 21:34:41
RegExp 消し忘れ・・・orz

225:Name_Not_Found
05/08/29 21:38:41
void より無名関数の人の方が多いんでないの?

226:213
05/08/29 22:16:03
>>223
レスありがとうございます。スルーされてると思ってました。
URLリンク(www.tohoho-web.com)で見たのですが、
(//)のスラッシュがよく分かりません。
説明しているサイトないでしょうか?
記号なので検索でけません。


227:213
05/08/29 22:18:51
訂正:書いてありますね。
orz

228:Name_Not_Found
05/08/29 22:31:29
便乗:ページ内のリンクをbookmarkletで書き換えるにはどうすればよいのですか

229:Name_Not_Found
05/08/29 22:42:08
doc.getElementsByTagName('A') (か doc.links) と for でも使え

230:Name_Not_Found
05/08/29 23:00:11
JavaScript:with(document.body)innerHTML=innerHTML.replace(/\.html?/ig,'.jpg');focus();
これブックマーク

231:Name_Not_Found
05/08/29 23:03:28
>>230
せめて href の値だけ書き換えるようにしようよ

232:Name_Not_Found
05/08/29 23:03:34
javascript:Elem=document.body.getElementsByTagName('A');for(i=0;i<Elem.length;i++){Elem[i].href=Elem[i].href.replace('html','jpg');Elem[i].href=Elem[i].href.replace('htm','jpg');};void(0);


233:Name_Not_Found
05/08/29 23:04:38
スバラシス

234:213
05/08/30 00:19:57
度々申し訳ありません。
URLリンク(images.google.co.jp)
URLリンク(images.google.co.jp)
URLリンク(images.google.co.jp)
のように&start=20の部分を書き換えるにはどうしたらいいのですか?
またレス宜しくお願いします。

235:Name_Not_Found
05/08/30 00:33:28
応用しろよw

236:orz
05/08/30 00:35:53
orz

237:k
05/08/30 07:42:27
>232
replace も正規表現が使えますよ

>234
ただの教えてクンになってきたな

// e.g., start=N の N に100足す
javascript:for(l=document.links,i=0;i<l.length;i++)l[i].href=l[i].href.replace(/(&start=)(\d+)/,function(){return arguments[1]+(arguments[2]-0+100)});void 0

238:221
05/08/30 09:00:54
>>223
分かりやすい回答ありがとうございます
知りたい情報そのものでした
bookmarkletは字数を意識した方言が多くてややこしいです
replaceの第二引数に無名関数持ってくる手法もメモしておきます

239:234
05/08/30 15:22:47
レスありがとうございます。リンクの書き換えではなくロケーションバーの書き換えが欲しかったのれす。
javascript:(function(){document.URL=document.URL.replace(/(&start=)(\d+)/,function(){return arguments[1]+(arguments[2]-0+20)})})();
動く
javascript:location.replace(document.URL.replace(/(&start=)(\d+)/,function(){return arguments[1]+(arguments[2]-0+20)})
動かない。
第二引数に無名関数はすばらしいす。

240:Name_Not_Found
05/08/30 18:11:36
JavaScriptで<a>タグをするために document.createDocument('a') を実行したのですが、エレメントが正しく作成されないようです。
詳しくいうと、エレメント自体は作成されるのですが、色も変わらずアンダーバーもつかず、クリックしてもジャンプしません。
検証用のHTMLとJavaScriptは次のとおりです。どなたかアドバイスをお願いします。環境:Firefox1.06, IE6

<html>
 <head>
  <title>example</title>
  <script type="text/javascript">
  <!--
   // document.createElement("a")で<a>が作成されない?
   function add_link(url) {
    var elem = document.createElement("a");
    elem.attributes["href"] = url;
    elem.appendChild(document.createTextNode(url));
    document.getElementById('links').appendChild(elem);
   }
   -->
  </script>
 </head>
 <body>

  <button type="button" onclick="add_link('URLリンク(www.google.com)')">add link</button>
  <br>
  <span id="links"></span>

 </body>
</html>

241:Name_Not_Found
05/08/30 18:33:31
>>240
hrefを設定する部分の
elem.attributes["href"] = url;

elem.attributes["href"].value = url;
に変えると動くようになる

elem.href = url;
でもいいし、この方が簡略的

242:Name_Not_Found
05/08/31 03:29:29 G6DsaaU1
教えてください。
<table id="a">
 <tr><td>
<table><tr><td>
<input type="button" name="c" value="行番号" onclick="alert(・・・・);">
</td></tr></table>
 </td></tr>
 <tr><td>
  <table><tr><td>
<input type="button" name="c" value="行番号" onclick="alert(・・・・);">
</td></tr></table>
 </td></tr>
</table>

この場合に、alertでid="a"のrowIndexを出すためには、
this.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.rowIndex
としなければなりません。
parentElementがすごく多くなってしまうので、醜いのですが、
ほかに<input type="button"・・・ の位置から見てid="a"のrowIndexを
取得する方法ってありませんか?

それかボタンはname="c"で統一なので、
クリックしたのが何番目のcかが取得できればいいんですけど。

よろしくおねがいします。


243:Name_Not_Found
05/08/31 04:13:00
アンチテーブルレイアウターのネタ?

table に id 振ってあるなら document.getElementById('a').rowIndex でいいじゃん。

244:Name_Not_Found
05/08/31 06:04:02 FzB8fODy
>243
ありがとうございます。
でも取得できません。
table全体のrows.Lengthなら取得できるけど、自分(button)のいるrowのindexを
取得したいので。

連番等を振らずに自分が何番目のボタンかっていうのを取得したいのは、
173あたりと一緒かと思います。


245:Name_Not_Found
05/08/31 07:38:02
>>244
rowIndex は <table> 要素 (HTMLTableElement オブジェクト) じゃなくて
<tr> 要素 (HTMLTableRowElement オブジェクト) のプロパティ。
parentElement の数がそれでいいのは <tbody> があるから。

<table> の rows.item に対して、目的の要素が含まれるまでぐるぐる
回して調べる方法もあるけど、行数に比例して時間かかるよ。

与えた要素の 6 つ上の先祖を返す関数でも作ったら?
ついでに parentElement の代わりに parentNode を使った方がいい。

246:k
05/08/31 08:09:30
>>244
正直スマートな方法が思いつかんが

function getParentNode(_o, _t)
{
 _t = _t.toUpperCase();
 while (_o.tagName != _t) _o = _o.parentNode;
 return _o;
}
function getRootRowIdx(_o)
{
 var currentTabale = getParentNode(_o, "table");
 var parentTr = getParentNode(currentTabale, "tr");
 return parentTr.rowIndex;
}
function getButtonNum(_o, _name)
{
 var elmz = document.body.getElementsByTagName("input");
 var i, idx = -1;
 for (i=0; i<elmz.length; i++)
  if (elmz[i].name == _name)
  {
   idx++;
   if (elmz[i] == _o) break;
  }
 return idx;
}
function func(_o) // onclick="alert( func(this) );"
{
 var rowIdx = getRootRowIdx(_o); // rowIndex を取得
 var btnIdx = getButtonNum(_o, "c"); // ボタンのインデックスを取得
}

247:240
05/08/31 21:46:56
>>241
ありがとうございました。
elem.attributes["href"].value = url;
はうまくいきませんでしたが
elem.href = url;
だとうまくいきました。

JavaScriptのDOMだと、すべての属性がattributes配列にあるわけじゃなく、HTML標準の属性はプロパティとしてアクセスするみたいですね。
勉強になりました。

248:Name_Not_Found
05/09/01 01:28:49
function eventHandle (args) {
var e = args ? args : window.event ? event : null;
if ( ! e ) return null;

this.element = e;

this.clientX = e.clientX;
this.clientY = e.clientY;

if ( typeof(e.pageX) == 'number' ) {
this.pageX = e.pageX;
this.pageY = e.pageY;
}
else if ( typeof(e.x) == 'number' ) {
this.pageX = e.x + document.body.scrollLeft - document.body.clientLeft;
this.pageY = e.y + document.body.scrollTop - document.body.clientTop;
}
else if ( document.all ) {
this.pageX = e.clientX + document.body.scrollLeft - document.body.clientLeft;
this.pageY = e.clientY + document.body.scrollTop - document.body.clientTop;
}

return this;
}

これは何をしているスクリプトなんでしょうか?お願いします。

249:Name_Not_Found
05/09/01 05:22:04
質問です。JavaScriptからstyle.displayを操作してspanエレメントを表示させたり隠したりするスクリプトを書いています。
はじめはstyle.display="none"にしておき、ボタンを押すことで表示する/隠すを切り替えます。
しかし、<span style="display:none">foo</span>だと切り替えられるのに、<span class="hide">foo</span>にしてCSSでdisplay:noneを指定すると、うまく切り替わりません。
もっというと、CSSでdisplay:noneを指定したエレメントは、style.displayをどんなにいじっても、表示されません。
質問がわかりにくくてすみませんが、アドバイスをお願いします。なおFirefox1.06で試しました。
以下が検証用のHTMLファイルです。

<html>
 <head>
  <script type="text/javascript"><!--
   var flag = false;
   function toggle_display() {
    flag = !flag;
    var elems = document.getElementsByTagName('span');
    for (var i = 0; i < elems.length; i++) {
     elems[i].style.display = flag ? "" : "none";
    }
   }
  --></script>
  <style type="text/css"><!--
   .hide { display: none; }
  --></style>
 </head>
 <body>
  <button type="button" onclick="toggle_display()">toggle</button>
  <br>
  <span>foo</span><br>
  <span style="display:none">bar</span><br>
  <span class="hide">baz</span><br>
 </body>
</html>


250:Name_Not_Found
05/09/01 05:27:25
var p;

function a(){
a1 = document.f.a.selectedIndex;
a2 = document.f.a.options[a1].value;
var p = 0;

if(a2 == 10){
document.f.a.value = 10;
var p = 130;
}
if(a2 == 30){
document.f.a.value = 30;
var p = 670;
}
}

~(中略)~

function g(){


251:Name_Not_Found
05/09/01 05:28:13
function g(){
if( p < document.f.n.value ){
document.f.u.value = "N";
}
else{
if( document.f.n.value < p < document.f.n.value + document.f.m.value){
document.f.u.value = "N+M";
}
else{
  if( document.f.n.value + document.f.m.value < p < document.f.n.value + document.f.n.value){
  document.f.u.value = "N+N";
  }
else{
document.f.u.value = "";
}
}
}
}

aの数値を参照してn,mをそれぞれ計算させ、
gでn,mとpを比較してu文字列表示です
やりたいことは大体分かっていただけるでしょうか…(;´Д`)
悪戦苦闘しながらここまで組みましたが、変数の当て方とif分岐がうまく行っていないようで、正しく出来ません
(試しにpを130と書いて実行した時、n+m < 130 < n+n なのに、N+Mと表示されたりします…)

なんだかレベルの低い質問ですが、気の向いたエロイ方がいらっしゃればどうか何かヒントを…

252:Name_Not_Found
05/09/01 05:52:52
document.f.n.valueは数値じゃなくて文字列なので
数値に変換する必要がある

>document.f.n.value + document.f.n.value

変換するにはNumber関数を使う

Number(document.f.n.value) + Number(document.f.n.value)

253:Name_Not_Found
05/09/01 06:10:55
>>249
スタイルシートには、要素に適用されるスタイル (style 属性) と
<style> 要素などによって適用されるスタイルの二種類がある。
前者は後者よりも優先順位が高い。
elems[i].style.display のところで要素に適用されるスタイルを
変更してるけど、className は "hide" のままなので <style> 要素
で書かれたスタイルは依然適用される。
解決方法としては elems[i].style.display = flag ? "inline" : "none";
とすれば優先順位の規則によって <style> 要素の方は無視される。
style を使わずに className を変える方法もある。

>>250-251
document.f.m.value が何を指してるのかにもよるけど、その
プロパティは文字列じゃないの?
文字列だと "1" + "1" == "11" になるし、"130" < "2" になる。
数値として足したり比較したりする場合は parseInt や parseFloat で
明示的に数値に変換してから行う必要がある。

254:244
05/09/01 06:19:12 XAfx/g+1
>245,246
すごく参考になりました。
ありがとうございます!


255:249
05/09/01 08:21:06
>>253
ご指導のとおり
elems[i].style.display = flag ? "inline" : "none";
で出来ました。多謝多謝多謝。ありがとうございました。

256:Name_Not_Found
05/09/01 08:47:17
要素の子供をすべて消すためには、どうするのがいちばんいいでしょうか。
今は
var elem = document.getElementById('foo');
while (elem.childNodes.length > 0) {
elem.removeChild(elem.firstChild);
}
としているんですが、これよりスマートな方法がありましたら教えてください。

257:Name_Not_Found
05/09/01 09:21:48
>>256
var child;
while ((child = elem.firstChild))
elem.removeChild(child);
の方がループごとの子ノードの検索が一回になるので速いかも。
実装によるけど firstChild より lastChild の方が速いかも。
いずれもテストしてないので間違ってるかも。

258:Name_Not_Found
05/09/01 09:30:20
>>256
厨臭いのがアレだが一撃必殺

document.getElementById("foo").innerHTML = "";


259:Name_Not_Found
05/09/01 12:56:12
マナーの問題だとは思うのですが、
某企業のページ内で使われてたJavaScript処理部分がすばらしかったので、
どこかのフリーのものを転用してるのかと思ってソースを見たところ、
どうもオリジナルっぽかったんですが、
こういうのは使っても大丈夫なものなのでしょうか?

260:Name_Not_Found
05/09/01 13:08:15
> マナーの問題だとは思うのですが

死ねばいいと思うよ

261:Name_Not_Found
05/09/01 13:10:26
>はじめはstyle.display="none"にしておき
どうでもいいが、これはスクリプトをオフにしてたら見る事ができないと言う事か?

>>259
わからないように改造して使え

262:Name_Not_Found
05/09/01 13:39:06
>>260
オマエガナー

263:Name_Not_Found
05/09/01 13:45:49
技術だけを盗んでいくのがマナー
ソースをコピペしてはいけない

264:259
05/09/01 15:00:55
なるほど。
では技術を盗んで自分で作り直してみたいと思います。
でも似たようなものができあがりそうですよね・・・

265:Name_Not_Found
05/09/01 16:32:19
どうせ誰が作っても似たようなものになるんだ
それで文句言うのは、ブラウザスケジューラーの作者ぐらいだよ

266:Name_Not_Found
05/09/01 16:34:33 HE9OT77y
フォーム内のエレメントのエレメント番号を取得する方法を探しています。

あるエレメントにフォーカスが合っている時、規定のショートカットキーを押せば
対応したデータを入力し、次のエレメントにフォーカスが移る というのをJavaScriptで実現したいと思っています

エレメントの番号を何とかして取得して、その後はelements[i+1].focus();とかやれば簡単だろうと思ったのですが
リファレンスを読んでもどうやらエレメント番号を取得できるプロパティ、及びメソッドは無いようなのです

色々検索してみた所、エレメントにエレメント番号と同じidなりnameなりをあらかじめ与えておいて
それを取得する という方法で実現していたサンプルがあったのですが、
スマートさに欠け、保守の際に手間取りそうです

「無いから諦めろ」でも構いません
どうか一つお知恵を貸してもらえないでしょうか

ソースは次に書きます

267:Name_Not_Found
05/09/01 16:35:10
そうそう。まったくそのとおり。
万が一ソースがまるっきし一緒だったとしても
しょせんは確率なんだから。
たまたま一緒だったんですとかいえばOKだ。

268:266
05/09/01 16:47:21
bを押すと野球が選択され、次のエレメント(submit)にフォーカスが移ります
他の選択肢については省略しています
ブラウザ別の動作についても省略しています

<HTML><HEAD><TITLE></TITLE>
<SCRIPT LANGUAGE="JavaScript"><!--
function exampleFunction(keynum){
if(keynum == 71){
this.options[1].selected;
# 何らかの方法でエレメント番号を取得、iに代入
document.example.elements[i+1].focus();
}
}
--></SCRIPT></HEAD>

<body>
<FORM METHOD="POST" ACTION="./example.cgi" NAME="example">

<SELECT NAME="hobby" onkeypress="exampleFunction(event.keyCode)">
<OPTION VALUE=0>----
<OPTION VALUE=1>野球
<OPTION VALUE=2>ゴルフ
<OPTION VALUE=3>テニス
<OPTION VALUE=4>サッカー
<OPTION VALUE=5>バレー
<OPTION VALUE=6>ラグビー
</SELECT>
<INPUT TYPE="submit" VALUE="送信">
</FORM>
</BODY>
</HTML>

269:266
05/09/01 16:49:43
ここまで書いて思ったのですがexamplefunction関数を2入力にして
エレメント番号を渡す手もありますね。
本質的にはidやnameでエレメント番号を設定しておく方法と変わらないので
あまり意味がありませんが…

長々と失礼しました。

270:Name_Not_Found
05/09/01 16:55:39
>>248
尾根

271:Name_Not_Found
05/09/01 19:16:49 XwJF/OTW
jsの関数を作るに当たり、フォームオブジェクト(テキストボックス:obj)のmaxlengthを取得したいのですが、
なぜかobj.maxlengthとしても取得できません。どのようにすれば良いのでしょうか。


272:249
05/09/01 19:28:42
すみません、再度質問です。ボタンを押したら<tr class="hide">が表示されたり隠れたりするようにしてみたのですが、
IE6だとうまく動いてFirefox1.06だと妙な動きをします。具体的にはテーブルが崩れたり、余計な行が追加されたりします。
これはFirefoxのバグでしょうか。自分では判断つきかねるので、詳しい方にアドバイスをいただければと思います。

<html>
 <head>
  <script type="text/javascript" language="javascript"><!--
   var flag_display = false;
   function toggle_display() {
    flag_display = !flag_display;
    var elems = document.getElementsByTagName('tr');
    for (var i = 0; i < elems.length; i++) {
     var elem = elems[i];
     if (elem.className == 'hide') {
      elem.style.display = flag_display ? "block" : "none"; // or "inline" : "none"
     }
    }
   }
  --></script>
  <style type="text/css"><!--
   .hide { display:none }
  --></style>
 </head>
 <body>
  <button type="button" onclick="toggle_display()">toggle</button>
  <table border="1">
   <tr><td>001</td><td>foo</td></tr>
   <tr class="hide"><td>002</td><td>bar</td></tr>
  </table>
 </body>
</html>


273:249
05/09/01 19:33:37
>>261
> >はじめはstyle.display="none"にしておき
>どうでもいいが、これはスクリプトをオフにしてたら見る事ができないと言う事か?

ええ、見れなくてもかまいません。見たい人だけが見れればよく、大半の人には必要のないデータなので、デフォルトでは表示しないようにしたいんです。
見たい人はスクリプトをオンにしてもらいます。
もちろんサーバを立ててWebアプリにすればスクリプトがオフでもできるんですが、今回は完全にstaticなファイルなんで、なんとかJavaScriptでしこしことやってます。


274:Name_Not_Found
05/09/01 21:01:58
>>268
こんな感じでいいの? 引数には event を渡して。
function exampleFunction(event) {
var target, keynum, elements, i, next;
if ((event || (event = window.event)) && (target = event.target || event.srcElement))
if ((keynum = event.keyCode || event.which) == 66 || keynum == 98) {
// keypress の場合、大文字と小文字は区別される
// this.options[1].selected; // これは誤り
target.selectedIndex = 1; // 野球を選択
if (target.form && (elements = target.form.elements))
for (i = 0; i < elements.length; i++)
if (elements[i] == target) {
if ((next = elements[i + 1]) && next.focus)
next.focus();
break;
}
}
}

>>271
maxlength じゃなくて maxLength
JScript では大文字と小文字は区別される。

>>272
<tr> 要素の標準の display は "block" じゃなくて "table-row"

275:256
05/09/01 22:30:50
>>257
ありがとうございます。こっちのほうがちょっとだけスマートですね。
firstChildとlastChildはどっちが速いんですかね。たしかに興味あるところ。

>>258
試してみましたが、たしかに一撃必殺ですね。JavaScriptチックなのがいいですね。
""でもいいけど、nullでもいいみたいです。どっちがいいんでしょう。

276:Name_Not_Found
05/09/01 23:08:30
>>273
そもそもそのHPを見たいって人がいない

277:271
05/09/01 23:44:33
>>274
ありがとうございます。
そういうところはJavaと似ているんですね・・・。

278:Name_Not_Found
05/09/02 00:12:32 WCwPzKTI
質問です。
外部jsファイルをイベントで読み込むにはどうすればよいですか。
<script src="js1.js"></script>
を読み込みたいです。IDを振って、src呼び出しではうまく行きません。

279:Name_Not_Found
05/09/02 00:50:01
>>273
そういうポリシーなら余計なお節介だけれども

display は無指定にしておいて
onload で一回関数を呼ぶだけじゃん

280:Name_Not_Found
05/09/02 01:01:56
>>266
c = this.nextSibling;
while( c ){
 if( c.nodeType == 3 ){
  c.focus();
  return;
 }
 c = c.nextSibling;
}

でいいんじゃね?試してないけど。

281:Name_Not_Found
05/09/02 01:35:11
>>280
function exampleFunction(ev){
ev = ev? ev:window.event;
if (ev.keyCode == 98){
ev.srcElement.selectedIndex =1;
c = ev.srcElement.nextSibling;

while( !c.focus ){
c = c.nextSibling;
}
c.focus();
}
}

282:266
05/09/02 01:50:23
たくさんのレスありがとうございました。
色々な方法があるようですので、これから一つ一つ確かめて どれが自分の目的に一番合っているか
確かめようと思います。

283:Name_Not_Found
05/09/02 07:41:38
>>279
まともな奴ならそうするね

284:249
05/09/02 10:27:39
>>274
table-rowでいけました!ありがとうございます。

>>279
それだと、JavaScriptをオフにしている人には全部見えてしまいます。
JavaScriptをオンでもオフでも、デフォルトでは見えないようにしておき、
見たい人はJavaScriptをオンにするようお願いしています。

>>283
スキルもないうえにまともじゃないです。ごめんなさい。

285:Name_Not_Found
05/09/02 11:05:55
要するに、誰にも見て欲しくないページな訳ですね

286:Name_Not_Found
05/09/02 12:41:43 wOPuXxzH
二つのセレクトメニュー「Select1」「Select2」があって、Select1を操作、onChangeで<div id="change_select">以下の「Select2」がごっそり違う内容に差し変わるようにしたいと思っています。
Select1でHOGEをえらぶと、Select2にはA,B,Cという選択肢そうでなければD,E,Fという具合です。
もう疲れ果ててしまいました。
まず、ブラウザによって、document.allだったり、documentだったりで、うまく動かない。
これは、なんとか調べて分岐処理するとしても、致命的なのは、ブラウザによってはinnerHTMLで書き出したSelect2の値をPOSTしてくれない事です。
そもそも、innerHTMLで、こういった事をどうにかしようというのがおかしいのでしょうか?
実際はSelect1,Select2の前後にもinputなどがあったりするので、その他の入力が消えてしまうので書き換えるわけにはいかないのです。
(もっともSelect1を選んだ時点で一旦postさせるって手もあるけど)
なにか代替案などありましたらアドバイスお願いします。

287:286
05/09/02 12:43:20
ソースはこんな感じ。(環境によっては動きません。)
■スクリプト部■
<script language="JavaScript" type="text/javascript">
<!--
function ChangeSelect(){
var val = document.all.hogeform.Select1.value;
alert(val);
if(val == "HOGE"){
change_select.innerHTML = "<select name='Select2'><option value=''>お選びください</option><option value='A'>A</option><option value='B'>B</option><option value='C'>C</option></select>";
}else{
change_select.innerHTML = "<select name='Select2'><option value=''>お選びください</option><option value='D'>D</option><option value='E'>E</option><option value='F'>F</option></select>";
}
}
//-->
</script>
■フォーム部■
<form name="hogeform">
<select name="Select1" onChange="ChangeSelect();">
<option value="" >お選びください</option>
<option value="HOGE" >HOGE</option>
<option value="HAGE" >HAGE</option>
</select>
<div id="change_select">
<select name="Select2" onChange="ChangeSelect();">
<option value="" >お選びください</option>
</select>
</div>
<input type="submit">
</form>

288:Name_Not_Found
05/09/02 13:13:05
>>286
過去ログに数回以上出てる。探せ!!!

289:Name_Not_Found
05/09/02 13:34:46
bookmarkletでページの中のボタンを押す事は可能ですか?

290:Name_Not_Found
05/09/02 13:52:06
>>289
はい。
自分でやって、わからないところをまた聞いてください。

291:Name_Not_Found
05/09/02 14:01:46
出来ますね。ありがとうございました。
javascript:document.forms[0].elements[0].click();

292:Name_Not_Found
05/09/02 15:35:47
onclick()じゃないの?

293:Name_Not_Found
05/09/02 15:44:49
やってみてから訊いてください。

294:Name_Not_Found
05/09/02 16:02:45
初心者スレで聞いてたのですが、こちらの方が正しかったのでこちらに書かせてもらいます。
URLリンク(javascript.eweb-design.com)
こちらのjavascriptでボタンではなく文字でウィンドウが開くようにするにはどうすればいいのでしょうか?
よろしくお願いします。

295:278
05/09/02 16:06:41 0kZeGiuL
>>278 お願いします。
--[再掲]--
質問です。
外部jsファイルをイベントで読み込むにはどうすればよいですか。
<script src="js1.js"></script>
を読み込みたいです。IDを振って、src呼び出しではうまく行きません。

296:Name_Not_Found
05/09/02 16:06:54 7eM0ktie
●アドバイスお願いいたします。
HPにアクセスして来たときに、
IEならページを表示させて他のブラウザ(ネスケやオペラ)なら
①"IEをご使用ください"と表示させる
または
②別のページに飛ばす
ということをしたいと思っています。
できれば、ブラウザのバージョンには
あまり左右されない方向で。

未熟者でお手数かけますが
どうぞ、よろしくお願いします。orz
(.htaccessでもできたりするんでしょうか?)

297:Name_Not_Found
05/09/02 16:20:09
>>294
こちらの方が正しかった?なぜ?初心者スレに最適な問題だと思うが?
<a href="#" onclick="hogehoge()">文字でウィンドウが開く</a>
てか、これHTMLの問題じゃんよ。ここで菊のはまだ早すぎるな。

298:Name_Not_Found
05/09/02 16:23:52
と、いいつつ答える297であった。

299:Name_Not_Found
05/09/02 16:27:44
>>296
Google屁行け。それこそ山のようにアドバイスがあるであろう。


300:Name_Not_Found
05/09/02 17:08:56 7eM0ktie
>>299
すいません、ありすぎて分からないんです。
まだHTMLを、やっとこ覚えたばかりなので
どれが正しくてどれがヤバいものやら。。orz

301:Name_Not_Found
05/09/02 17:09:48
初心者が難しいことしようとするもんじゃないよ。
経験経験

302:Name_Not_Found
05/09/02 17:16:25
>>278 >>295 ホレ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
var s = document.createElement('script'); s.src = 't1.js';
document.body.appendChild(s);
}
</script>
</head><body>
<p><button onclick="test()">Test</button></p>
</body></html>

303:296=300
05/09/02 17:45:43 7eM0ktie
>>301
そ、そうですよね。。
とにかく色々やってみることにします。
ありがとうございました。
でわ。┌[-_-;]┐

304:296=300
05/09/02 18:13:14 7eM0ktie
お世話になります。>>296の②(ブラウザ判定して各ページに飛ばす)は
↓これでなんとかできたみたいです。

<SCRIPT LANGUAGE="JavaScript">
var ver = navigator.appVersion.charAt(0);
var ie = 0, nn = 0;
if (navigator.appName == "Netscape") nn = 1;
if (navigator.appName == "Microsoft Internet Explorer") ie = 1;

if (ie && ver >=3) location.href = "ie.html";
else if (nn && ver >=3) location.href = "nn.html";
else location.href = "other.html";
</SCRIPT>

ちなみに、IEのときだけ別ページに飛ばさない
=このスクリプトを含むページのHTMLを表示するにはどう改造すれば
よいでのしょう?

教えてちゃんで申し訳ありません。
プログラムの仕組みを全く知らない初心者なので
よろしくお願いいたします。┌[-_-;]┐

305:Name_Not_Found
05/09/02 19:00:13
最近、ド肝を抜く感動のASCII-ARTがないね。
厨房ばかりで楽しみがそれくらいしかない、今日この頃。

306:296=300=304
05/09/02 19:15:51 7eM0ktie
とりあえずIEのときの実行命令(location.href = "ie.html"; )を削除してみたら
ブラウザ判定でIEだけ飛ばさないようにできたのですが、、
こっ、この記述は、、、正しいのでしょうか?
ド素人な質問でお恥ずかしいですが
間違ってるか合ってるかだけでも
教えて頂けるとありがたいのですが。。

if (ie && ver >=3) location.href = "ie.html";
else if (nn && ver >=3) location.href = "nn.html";
else location.href = "other.html";

if (ie && ver >=3) ;
else if (nn && ver >=3) location.href = "nn.html";
else location.href = "other.html";

307:294
05/09/02 19:52:37
>>297
有難うございます。
あちらでよかったのですね・・・すいません。
教えていただいた方法だとエラーが出てしまいました。
再度お願いします・・

308:249
05/09/02 20:46:44
>>285
どうしてこういう言い方するのかわかりませんが、ページのすべてを見せないようにしているわけじゃなく、
一部の人にしか必要のない箇所をみせないようにしたいだけです。

309:k
05/09/02 21:04:09
>>306

if (!(document.all && !window.opera)) location.replace( "not_ie.html" );


>>307

<a href="sample.html" onclick="openWindow()">ウィンドウが開く</a>

<a href="sample.html" onclick="openWindowC()">中央にウィンドウが開く</a>

310:296=300=304=306
05/09/02 22:12:49 7eM0ktie
>>309
kさん、ありがとうございます。
頂いた記述で動かすことができました。
えと、たぶん↓この使い方であってますよね?

<SCRIPT LANGUAGE = "JavaScript">
<!--
if (!(document.all && !window.opera)) location.replace( "not_ie.html" );
// -->
</SCRIPT>

すごく助かりました。(〃▽〃)ノシ ♪アリガトー


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch