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

このエントリーをはてなブックマークに追加
━━━━━JavaScript質問スレ道場訓━━━━━
 一、礼節を重んじ常に努力精進すること
 一、ブラクラに打ち勝つ精神力を持つこと
 一、心身の優れたJavaScriptを学ぶこと
 一、雑草の如く生涯JavaScriptを貫くこと
 一、感謝と反省を忘れないこと
 以上
━━━━━━━━━━━━━━━━━━━━━━

このスレに書き込むことが許されるものは以下のとおり
・テンプレ/FAQ/過去ログ/関連資料を読める者。とくに>>2-10は必須!!!
・JavaScriptとJavaの違いを理解する者
・スクリプトを組むための最低限のHTML・CSSを理解する者
・ユーザーに迷惑となるスクリプトを書かない者
・「初心者です」を振りかざさず、質問を分かる日本語で説明できる者
・対象環境や使用技術は質問者の裁量であることを理解する者
 (質問/回答時はなるべく環境明記。WinIE5.5/N6未満と希少ブラウザは必須!)

[必読]過去スレ全集 http://user.ftth100.com/mirrorhenkan/javascript/
前スレ http://pc10.2ch.net/test/read.cgi/hp/1165051363/l50
まとめサイト http://web2ch.s31.xrea.com/?JS
FAQ・注意・過去ログ・関連資料・関連スレ>>1-10またはまとめサイト
【質問を書く上で】
1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。
 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。
 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。
2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。
 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!)
 長い(1レスに入らない)場合はアップロードしてURIを貼る。
3)初心者という言葉は危険なので使わない方がよい。
 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。
4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。
 ただ「動きません」「エラーです」は何も情報がないため嫌われる。
 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。
 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!!
 OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。
5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度
 手間を食わせる可能性大(現行Ver.:IE5.5-6、N6-7、Opera7-8)
6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。
 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、
 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け!
7)質問はまっとうな(他人に理解できる)日本語で。
 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
【FAQその1】
Q1. 開いた別窓/フレームの内容にアクセスできないのですが…
A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。
Q2. JavaScriptでローカルファイルを読み/書きたいのですが…
A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに…
A3. 同じタグの中でonclick="foo()"とonclick="bar()"を同時に使いたいのですが…
A3. セミコロンで複数の文を区切られます。onclick="foo();bar();"としましょう。
Q4. document.write(...)でページ内容を追加したいのですが…
A4. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。
 部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、
 (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。
 innerHTMLは非標準ですがIE、Opera、Gecko(N6/N7/Firefox等)で対応済。
Q5. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが…
A5. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるか
 <div><table>...</table></div>とでもしてdivのinnerHTMLを書き換えましょう。
Q6. DOMでtable要素にtr要素を追加しても表示されないのですが…
A6. IEではtbody要素にtr要素を追加する必要があります。
 tbody要素はtbodyタグを書いていなくても自動的に作成されます。
 またはtable.insertRow()/tbody.insertRow()を使いましょう。
Q7. Aタグのonclickで動作指定してるのですが時々動きません…
A7. 「onclick="...;return false"」としないとページ移動しちゃうから。
Q8. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが…
A8. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。
【FAQその2】
Q9. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A9. 「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;」。
Q10. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A10. IEではe.currentStyle、Geckoではwindow.getComputedStyle()を使います。
Q11. 100*1.15の結果が114.999…998となってしまうのですが…
A11. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。
Q12. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが…
A12. Geckoのnew XMLHttpRequest()、IEのnew ActiveXObject("Microsoft.XMLHTTP")
 を使えばできる。古いブラウザだと隠しフレームに読むなどのワザが必要。
Q13. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A13. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどうぞ。
 複数の関数を呼びたいときは obj.onclick=function(){foo();bar();};
 という風に無名関数を作りましょう。中に書かれたコードが実行されます。
Q14. 文字列の置き換えをするときにコードを使いたい(Perlのs///e)のですが…
A14. string.replace(/.../,function(str,p1,p2,...,offset,s){...})としましょう。
 正規表現にマッチした文字列がreturnで返された文字列に置き換えられます。
 各引数はstrがマッチした部分文字列、p1,p2,...が1番目、2番目、…の()の中身、
 offsetがマッチした位置、sが置き換え前の文字列全体になります。
【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】
・仕様を読む:回答者なら仕様の該当部分は読んでいるべき。質問者でも
 仕様を読まずうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。
・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、
 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。
・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと
 は無視」は不毛。質問者が分かって選択していれば尊重する。無知か
 らIE専なのは指摘してあげると親切。
・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される
 可能性大。非標準機能も損得を分かった上で使うならよい。
・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、
 そこだけ見ているとIE専になる。あとは上2件と同様。
・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当
 な理由があることも。尋ねて分かってないようなら煽っても可(w
・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選
 択するべき。一概にどちらは駄目、とは言えない。
・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性
 で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。
6Name_Not_Found:2007/01/19(金) 09:08:21 ID:???
>>2のテンプレはいらないと思うスレが荒れる理由を住人自らが作るようなもの。
>>5も半分くらいいらない
7Name_Not_Found:2007/01/19(金) 10:09:43 ID:???
8Name_Not_Found:2007/01/19(金) 10:10:14 ID:???
【チュートリアルサイト・サンプルサイト】
規格が読めないならまずはチュートリアル。サンプルサイトも沢山ある。
(とほほは間違いが多いためこのスレでは批判的意見が多い)

MetaGraphic Cell
http://www2u.biglobe.ne.jp/~oz-07ams/prog/

どら猫本舗のリファレンスカウンター
http://www.doraneko.org/

はぎさんちのページ Mozilla's DOM Sample Project
http://cgi.din.or.jp/~hagi3/JavaScript/JSTips/Mozilla/mds.cgi

Dynamic Scripting
http://www.interq.or.jp/student/exeal/dss/

JavaScript深層
http://www.hawk.34sp.com/
9Name_Not_Found:2007/01/19(金) 10:10:58 ID:???
【検索】
キーワード『…』で検索しろ」「ぐぐれ」と言われた場合はこちらへ
http://www.google.co.jp/

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

Webサイト制作初心者用スレ Part 177
http://pc10.2ch.net/test/read.cgi/hp/1167026480/l50

CSS /* CSS・スタイルシート質問スレッド【62nd】 */
http://pc8.2ch.net/test/read.cgi/hp/1164534589/l50

CSS/DHTMLバグ辞典スレッド 【第5版】
http://pc8.2ch.net/test/read.cgi/hp/1144494359/l50

役に立つ書籍は? 3冊目
http://pc8.2ch.net/test/read.cgi/hp/1142829968/l50
10Name_Not_Found:2007/01/19(金) 10:14:34 ID:???
テンプレ論議したければスレの終わり付近(800超えあたり)
で出してね。
11Name_Not_Found:2007/01/19(金) 13:35:16 ID:???
>>1-9
俺は「じすれ」派。
12Name_Not_Found:2007/01/19(金) 16:12:21 ID:???
>>8
JavaScript深層
http://www.hawk.34sp.com/

これ死んでね?
13Name_Not_Found:2007/01/19(金) 16:15:10 ID:???
参考サイト、サンプルサイトの見直しと新規おすすめの収集したいね。
14質問です:2007/01/19(金) 16:55:48 ID:1sA/h28b
ie6.0やff2でブラウザは確認してます

<script language="JavaScript">
<!--
document.write(document.lastModified);
// -->
</script>

このタグを記入すると、最終更新日が取得されますが
なぜかf5や更新を押すたびに更新時間が更新されます。
FTPなどでファイルUPした時などファイルを最終更新日が表示されると思うのですが。。。
どこか間違ってるのでしょうか?

もし違うスクリプトでファイル最終更新日が表示されるのがあれば教えてください
15Name_Not_Found:2007/01/19(金) 17:03:54 ID:???
広告が付加されちまうレンタルページサービスとか使ってたりしないかい
16Name_Not_Found:2007/01/19(金) 17:34:47 ID:9l1/EnVu
htmlでjsの外部リンクを作りたいのですがオブジェクト指定をしてくださいとエラーが出てしまいます。
htmlで使っていた<!-- -->や<script></script>どこかで使わないでくださいと書いてたのでは削除してjsファイルに保存してあります。
htmlでは問題なく動作するのですが外部リンクにしようとするとエラーが出てしまいます。
もしくは外部ファイルにするときのルールみたいなものが乗っているサイトを教えてもらえませんか。
17Name_Not_Found:2007/01/19(金) 17:44:04 ID:???
>>16
一般論としては
<scirpt>...</script>の「内側にあるものからHTMLコメントを除いた」
ものすべてをx.jsに入れてscript要素の方を
<script src="x.js"></script>
に書き換える。なぜエラーが出るか質問したいのならエラーが出る
「最小限のサンプル」を作って貼れば見てみてもいいよ。
18Name_Not_Found:2007/01/19(金) 18:49:19 ID:HWnqHLR5
質問です。(動作確認環境 Win98+IE6.0)

<div style="background:url(1.gif);">
<img src="2.gif">
</div>

マウスオーバーでDIV内の背景画像を1.gifから2.gif変えるにはどうしたらいいのでしょうか?
ページ全体の背景を変える↓のと同じ要領でできないかと頑張ってみたのですが力及びませんでした。
<img src="2.gif" onmouseover="document.body.background='2.gif';" onmouseout="document.body.background='1.gif';">

よろしくお願いします。

19Name_Not_Found:2007/01/19(金) 20:00:47 ID:???
document.body
→ (function (img) {var div = img.parentNode;while (! /*@cc_on @if (1) div.currentStyle.backgroundImage @else@*/ getComputedStyle(div, null).getPropertyValue('background-image') /*@end@*/) div = div.parentNode;return div.style;})(this)

='1.gif', ='2.gif'
→ ='url(1.gif)', 'url(2.gif)'
20Name_Not_Found:2007/01/19(金) 21:00:47 ID:???
>>18
一番簡単なのはdivでもなんでもidを振って
onmouseover="document.getElementById('ID名').style.background='url(1.gif)'"
などとすることだな。
2118:2007/01/19(金) 21:50:17 ID:???
>>19
>>20

両方試したところどちらもきちんと表示されました。スゴイ!
本当にありがとうございました。勉強にもなりました。
22Name_Not_Found:2007/01/19(金) 23:30:35 ID:???
一つのjsファイルの中に複数のプログラムを保存しても問題ありませんか?
23Name_Not_Found:2007/01/20(土) 00:09:41 ID:Z0NIKYKH
>>17
<html><head>
<meta http-equiv="content-type" content="text/html; charset=EUC-JP">
<title>@</title>

<script type="text/javascript" src="jsfile005.js"></script>
<body>
〜〜〜〜省略〜〜〜〜
<input onclick="111(document.getElementById('Table1')〜〜〜

111はjs内function 111()
エラーコードは<input以降を指してました。
24Name_Not_Found:2007/01/20(土) 00:46:47 ID:???
onclickとondblclickで別の動作を呼び出す時に
ダブルクリック側を実行させようとするとクリック側も起動してしまいます
これをダブルクリックだけ呼び出すようにはできますか?
25Name_Not_Found:2007/01/20(土) 00:59:35 ID:???
>>24
dblclickを使わない。clickだけで時間を計って分岐する。
26Name_Not_Found:2007/01/20(土) 01:04:17 ID:???
>>25
1秒以内にもう一度クリックしたらダブルクリックだとして

クリックされたらファンクション起動
起動直後にタイマー作動
再びクリックされたらタイマーをチェック
1秒でifで処理分岐

細かく書くとこんな感じ?
27Name_Not_Found:2007/01/20(土) 01:18:27 ID:???
どこか忘れたけど、
JavaScriptで作ったWebToolで、
4回クリック(なんていうの?クアッドクリック?)使ってるところあった。
どう考えても使いにくかったが。

ところでondbclick発生するときのクリックの間隔って
OSの設定に依存するもの?
ブラウザによっても違うと思うが。
28Name_Not_Found:2007/01/20(土) 01:46:45 ID:???
XとかWindowsとかからのダブルクリックイベント(シグナル?メッセージ?)をブラウザが受け取って、スクリプトエンジンに通知してるだけでしょ。
29Name_Not_Found:2007/01/20(土) 01:56:10 ID:ChHlNKf7
javascript応用できる人が羨ましい
いろんなサイトでサンプル配布してるけど普通のしかない。
30Name_Not_Found:2007/01/20(土) 02:10:54 ID:???
>>28
そっか。
onclickだけでダブルクリック再現すると、
待ち時間どれくらいにするべきか難しいよね。
>>23
その「111」て数字の1が3つだよね。そんなの構文エラーだが。
関数名は英字で始まらないと。
32Name_Not_Found:2007/01/20(土) 09:44:21 ID:???
げげ、スレ立ての痕跡が… 構文エラーではなく関数として
指定したものが関数オブジェクトじゃないというエラーだね。すまん。
33Name_Not_Found:2007/01/20(土) 10:55:58 ID:???
>>30
そんなもの500ミリ秒以下にしておけば良いだろう。

//FireBugで試行して適当なミリ秒を見つけるだけのスクリプト。
var timeStamps = [];
var diffs = [];
document.addEventListener('click', function (e) {
  timeStamps[timeStamps.length] = e.timeStamp;
}, false);
document.addEventListener('dblclick', function () {
  console.log((diffs[diffs.length] = timeStamps.pop() - timeStamps.pop()),
              Math.max.apply(null, diffs));
}, false);
3423:2007/01/20(土) 17:38:58 ID:Z0NIKYKH
31-32
返答頂きありがとうございます。
たしかに111は仮に記入したもので
何度か試した中では>>31の条件に当てはまるものを入力してあるのでこの部分は大丈夫だと思います。
ちなみに試した中ではsrc="jsfile005.jsと同じ名前にしたりもしましたがだめでした。
35Name_Not_Found:2007/01/20(土) 18:59:45 ID:???
>>34
アホか。エラーが出る最小限のソース作って貼れってるじゃん。
その同じエラーが出るものでなければ診断などできない。もう帰れ。
36Name_Not_Found:2007/01/20(土) 19:09:16 ID:gFooeIhD
クラスを宣言し 同じクラスのインスタンスを2つnewするのですが
プロパティがstatic変数のように異なるインスタンスで共有されてしまいます。
そういうものなのでしょうか?それともクラスの作り方が間違ってるんでしょうか
↓のような例だと、alertには10 , 100 , 100と表示されてしまいます。
3回目のalertが10と表示したいのです。。

function Hoge(value) {
  _value = value;
}
Hoge.prototype = {
setter: function(value){
    _value = value;
},
getter: function(){
    return _value;
  }
}

var x = new Hoge(10);
var y = new Hoge(100);
alert(x.getter());
alert(y.getter());
alert(x.getter());
37Name_Not_Found:2007/01/20(土) 19:12:54 ID:gFooeIhD
訂正です。↑の例だと100,100,100って並びますね。。
正しくは↓のようにすると10,100,100ってなってしまうということです。
var x = new Hoge(10);
alert(x.getter());
var y = new Hoge(100);
alert(y.getter());
alert(x.getter());
38Name_Not_Found:2007/01/20(土) 19:15:33 ID:???
この場合thisを書けばいいんでないの。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
function Hoge(value) {
this.value = value;
}
Hoge.prototype = {
setter: function(value){
this.value = value;
},
getter: function(){
return this.value;
}
}
var x = new Hoge(10);
var y = new Hoge(100);
alert(x.getter());
alert(y.getter());
alert(x.getter());
</script></pre>
</body></html>
39Name_Not_Found:2007/01/20(土) 19:19:39 ID:???
>>38
で、できました。。ありがとうございます。
thisですか。めちゃ悩んでたのが馬鹿みたいです(泣)
40Name_Not_Found:2007/01/21(日) 01:11:11 ID:???
フォームのsubmitボタンをテキストにすることは出来ませんか?
もしくはbdlclickのアクション時にsubmitすることは出来ませんか?
41Name_Not_Found:2007/01/21(日) 02:32:10 ID:???
クロージャに関してなのですが、質問させてください。
こちらのページの例となります。
ttp://0xcc.net/blog/archives/000040.html

下のコード抜粋にて、
td.onmouseover = makeHandler(td);
というイベントが何度も呼ばれるのですが、
var depth = 2という初期化はなぜ、初めの一回しか通らないのでしょうか。

| function makeHandler(element) {
| var depth = 2; // ここの初期化
| var closure = function() {
| ...
| }
| }
| return closure;
| }
|
| function makeTile(size) {
| ...
| td.onmouseover = makeHandler(td);
| ...
| }
42Name_Not_Found:2007/01/21(日) 03:15:24 ID:???
>>41
なぜというより、そういうものだろう。

2005年7月という微妙に古い記事だな。
引数のelementとローカル関数closureが、かんぜんに、メモリーリークサンプルになってる。
43Name_Not_Found:2007/01/21(日) 04:42:46 ID:xkjTPUcX
検索で見つからなかったので、質問させて頂きます。

セル内の背景画像をリロードの度にランダムに表示させることは可能でしょうか?
もしどこかにありましたら、教えて頂けると幸いです。
よろしくお願いします。
44Name_Not_Found:2007/01/21(日) 05:36:23 ID:???
>>43
このスレだけでも似たような処理はあるだろう。
45Name_Not_Found:2007/01/21(日) 07:57:28 ID:???
>>44
あれが似てると言うのか、とりあえず君は日本語の勉強から始めてください。
46Name_Not_Found:2007/01/21(日) 08:28:38 ID:???
>>45
では隔離スレで質問しなおせ。
47Name_Not_Found:2007/01/21(日) 09:21:43 ID:???
下のようなコードでXMLにXSLを適用した結果を保存しようとしています。

var xdoc = new ActiveXObject("MSXML2.DOMDocument");
xdoc.async = false;
xdoc.load(SRC_FILE);

var xsldoc = new ActiveXObject("MSXML2.DOMDocument");
xsldoc.async = false;
xsldoc.load(XSL_FILE);

var xdoc2 = new ActiveXObject("MSXML2.DOMDocument");
xdoc2.async = false;
xdoc.transformNodeToObject(xsldoc, xdoc2);
xdoc2.save(OUTPUT_FILE);

しかし、保存した結果のファイルはカラで中身が入っていませんでした。

alert(xdoc.transformNode(xsldoc));

のようにすると正常に変換結果が表示されたので、変換処理自体は問題なく行われていると思うのですが
他にどういった原因が考えられるでしょうか?
48Name_Not_Found:2007/01/21(日) 09:51:45 ID:???
>>47
保存された。

//関係ない余談だが、MSは 3.0 または 6.0 を明示するよう薦めているね。
49Name_Not_Found:2007/01/21(日) 10:06:12 ID:???
>>48
すいません、どこに保存されたのでしょう
簡単な考え違いをしているのかもしれませんが、どうか指摘していただけませんか
50Name_Not_Found:2007/01/21(日) 10:16:55 ID:???
>>49
どこってw
OUTPUT_FILE = "path\\to\\output-file.xml" に保存されたよ。
transformNode() の結果と同じものが。
51Name_Not_Found:2007/01/21(日) 10:27:19 ID:???
ああ、わざわざ実行してくださったんですね。ありがとうございました!

しかしやはり私のほうでは上手くいっていません
XHTMLに変換しているのですが、それが問題なのでしょうか…
それとも環境の違いかな?IE6でテストしているのですが
52Name_Not_Found:2007/01/21(日) 10:29:09 ID:???
>>43
リロード時の処理: bodyのonload属性中に書く。
要素を指定: IDを振って document.getElementById('ID名')
任意要素の背景画像設定: 要素.style.backgroundImage = 'url(ファイル名)'
配列aからランダム選択: a[Math.floor(a.length*Math.random())]
これらを組み合わせるだけ。たったこれだけでも組み合わせ
られないならこのスレの質問以前の水準だから勉強して出直せ。
53Name_Not_Found:2007/01/21(日) 10:44:51 ID:???
>>51
MAS JScript と、ふつうの cmd.exe で、上手く行っていたんだが、
ブラウザ使ってみたら、確かに、空のファイルになるな。
ブラウザ上からファイル保存が制限されているというオチみたいだね。
ちなみに、HTAにしてやったら、きちんと内容のあるファイル保存された。
54Name_Not_Found:2007/01/21(日) 10:50:17 ID:???
>>52
ID振るなら、CSSセレクタで特定できる。
onload ではなく、document.write('<style ...'); する方がベターだろう。
55Name_Not_Found:2007/01/21(日) 10:58:09 ID:???
>>41
td.onmouseover = makeHandler(td);

var closure = makeHandler(td);
td.mouseover = closure;
と考えればわかりやすいのでは?
それと、多分君は
td.onmouseover = makeHandler;
だとかん違いしてるのでは?

それで、このサンプルでメモリーリークしないためにはどうすればいいの?
56Name_Not_Found:2007/01/21(日) 11:07:26 ID:???
>>54
ああ、td要素全部の背景を一括してということね。
特定の1個かと思ったので。
57Name_Not_Found:2007/01/21(日) 11:15:20 ID:???
>>55
前スレに熱い煽りあいとその末の素晴らしい議論があったのでそれを参照されたし
58Name_Not_Found:2007/01/21(日) 11:18:14 ID:???
>>55
try {
  return closure;
} catch (ex) {// JScript は catch を略せない。
} finally {
  closure = null;
}

しかし、根本的には、要素オブジェクトを参照する変数・引数が存在する関数内で関数を定義しない。
今時、JSがターゲットにするブラウザは、そこそこ高性能のマシンに載っている。
だから、IDなどの値で渡して、クロージャ内で要素オブジェクトを一々参照しても、十分過ぎるほど速い。

>>56
特定の1個とか一括とか関係なく、再描画を避けた方がベターだろう。
まあ、質問者が屑なので、どうでもいいが。
59Name_Not_Found:2007/01/21(日) 11:52:31 ID:???
>>51
とりあえず、HTML の場合、ファイル保存は、#default#userData としてなら出来た。
この場合、%USERPROFILE%\UserData 内のどこかに、
save() の引数として指定した名前でUTF16LEのXMLファイルとして保存される。

var d = new ActiveXObject('Msxml2.DOMDocument.3.0');
var s = new ActiveXObject('Msxml2.DOMDocument.3.0');
d.async = false;
s.async = false;
d.load('test.xml');
s.load('test.xsl');
document.documentElement.addBehavior('#default#userData');
document.documentElement.load('foo');
alert(document.documentElement.XMLDocument.xml);
d.transformNodeToObject(s, document.documentElement.XMLDocument);
document.documentElement.save('foo');
60Name_Not_Found:2007/01/21(日) 12:10:56 ID:???
>>51
>>59への追記だけど、userDataには、ページ当たり64KBの制限があるから、
XHTMLファイル内容保存には向いているとは言えない。
61Name_Not_Found:2007/01/21(日) 12:35:10 ID:???
>>58
その「catchを略せない」って言うのはどういう意味だ?
とりあえず試した限りではIE 5.01(JScript 5.1)でも
try {} finally { alert('Hello world'); }
でアラートが表示されるんだが。
62Name_Not_Found:2007/01/21(日) 13:50:42 ID:CrKEfDYl
document.defaultViewっていつのまにwindowになったんですか?>Firefox
というか仕様的に正しいの?
63Name_Not_Found:2007/01/21(日) 14:21:04 ID:???
windowオブジェクトがAbstractViewインターフェースを
実装しているのならばDOM 2 Views仕様的に正しいし、
Window Object 1.0仕様(まだWDだが)では
WindowインターフェースはAbstractView
インターフェースを継承している。
64Name_Not_Found:2007/01/21(日) 16:30:29 ID:???
自動でページ移動をすることは出来たのですが
移動するときにtarget='_parent'を同時に行うにはどうすればよいでしょうか?
65Name_Not_Found:2007/01/21(日) 16:55:26 ID:???
>>64
paernt.location.href = '行き先'
66Name_Not_Found:2007/01/21(日) 17:09:53 ID:???
window.open("行き先", "_parent", "")
67Name_Not_Found:2007/01/21(日) 17:50:19 ID:???
>>16をお願いします。
68Name_Not_Found:2007/01/21(日) 18:48:38 ID:???
69Name_Not_Found:2007/01/21(日) 23:16:18 ID:???
<script src="test.js?q=foo"></script>
             ↑
test.js内でこのqの値(foo)が取れる方法をご存知ではないでしょうか?
70Name_Not_Found:2007/01/21(日) 23:24:15 ID:???
DOMでやれ
71Name_Not_Found:2007/01/21(日) 23:27:22 ID:???
CGIでtext/javascript吐くなら取れる
7241:2007/01/21(日) 23:46:18 ID:???
ありがとうございます。

>>42
そういうものですか。

>>55
そこでもないのです。
C++とは違うという認識で勉強してみます。

>>58
リソースを有効に使うソースを示してください。
あと再描画をすることが目的なのですが。
73Name_Not_Found:2007/01/22(月) 00:25:50 ID:???
>>72
>>58をよく読むこと
要はクロージャ内に要素の参照を保持しなければいい
例えばidだけあれば参照は出来るでしょうに、どうして参照を持つ必要がある?

もうひとつ、ソースを要求する前に自分で書いたものを提示すべし
別にこちらはソースを示さなくても回答になりうるのだから教えて君はよくない
話は自分で出来るところまでやってからだ
74Name_Not_Found:2007/01/22(月) 01:43:08 ID:???
>>72
>再描画をすることが目的
違うだろ。
いったん描画されたのに、わざわざロード直後に再描画したいのか?w
75Name_Not_Found:2007/01/22(月) 01:44:32 ID:???
>>72
>リソースを有効に使うソースを示してください。
示してるだろ。隔離スレ行けよ屑が。
7641:2007/01/22(月) 01:57:24 ID:???
屑だからそれじゃわかんないんですけど。
77Name_Not_Found:2007/01/22(月) 03:54:50 ID:???
>>16をお願いします。
78Name_Not_Found:2007/01/22(月) 08:17:27 ID:???
>>77
だから >>17 を読んで何が分からないか言ってみ。
全部書けというのなら断る。
79Name_Not_Found:2007/01/22(月) 08:26:18 ID:???
>>76
結局何が質問したいわけ。元の質問がまだ分からないのだったら、
td.onmouseover = makehandler(xxx);
では「makehandlerという関数を読んで、そこから返された関数
オブジェクトをonmouseoverに設定する」わけだから、makehandler
という関数は1回だけ呼ばれる、返された関数(イベントハンドラ
はイベントが起きるたびに何回も呼ばれる、という回答になるが。
80Name_Not_Found:2007/01/22(月) 10:19:33 ID:???
あふぉにかまうなよww
81Name_Not_Found:2007/01/22(月) 13:05:53 ID:???
>>78
全てわかってることなので>>17からでは何も進展ないのです。
82Name_Not_Found:2007/01/22(月) 13:33:20 ID:???
>>81
ではもうこのスレでアンタに回答することはないね。
自分で勉強するか親切に教えてくれるところへ逝けば。さいなら。
83Name_Not_Found:2007/01/22(月) 18:12:18 ID:???
IEのDOM操作が微妙に重い気がする。
createElementが重いのはわかってるからcloneNode使ってるんだけど…
どうももっさりする
84Name_Not_Found:2007/01/22(月) 18:51:54 ID:???
>>83
複雑な構造なら、もしかするとinnerHTMLで要素を作った方が早かったりする
85Name_Not_Found:2007/01/22(月) 19:00:14 ID:???
>>84
やっぱ?うすうすそんな気がしていた…
86Name_Not_Found:2007/01/22(月) 20:30:09 ID:???
>>82みたいなレスがつくと他に解答者いたとしてもつきづらくなるので
やめていただきたい。スレ代表者ですか?
以前から思ってたのだけど初心者に答える気がないのなら上級者用のjsスレを作ったらいかがでしょう?
87Name_Not_Found:2007/01/22(月) 20:40:06 ID:???
>>86
初心者用のスレがあるんだけどねwww
88Name_Not_Found:2007/01/22(月) 20:51:09 ID:???
>>86

>>17は読んだの?
89Name_Not_Found:2007/01/22(月) 20:57:55 ID:???
>>86
このスレは上級者用じゃないが「自分で勉強する気がある人」
向けのスレだ。それで54スレずっとやってるので変える気はない。
90Name_Not_Found:2007/01/22(月) 21:03:18 ID:???
>>88
読むどころか返答もしてますよ
>>89
どのラインを勉強してないといえるのかわかりませんがそれなりにやってますよ
ラインが厳しければ誰も書き込みできませんね
>>87
あそこではこちらのスレに誘導されるはずでしょう
91Name_Not_Found:2007/01/22(月) 21:06:30 ID:???
>>90

> ラインが厳しければ誰も書き込みできませんね

それでいいって

> あそこではこちらのスレに誘導されるはずでしょう

凄まじい思い込みw
92Name_Not_Found:2007/01/22(月) 21:07:56 ID:???
>>90
最小限のサンプルは?
93Name_Not_Found:2007/01/22(月) 21:13:43 ID:???
>>91
なんのためにこのスレがあるんですか?そもそもあなたが管理するわけでもないでしょう?
あなた自身の知識欲を満たすためにスレを利用するようにルールを決めるのなら上級スレを作るべきだと思いますよ
>>92
エラーコードが指し示す部分は出してあります。
94Name_Not_Found:2007/01/22(月) 21:22:51 ID:???
最小限のサンプルを作ること自体に意味があるんだよ
95Name_Not_Found:2007/01/22(月) 21:25:26 ID:???
>>90
理系の論文と同じさ、要は再現性のないものは「YOUの環境が悪いんだろう」としかいえない
回答側にどこに問題があるのか探すための情報を与えなければならない
それが出来ないなら、こちらも回答出来ないのは当たり前


で、上記の内容が、あなたにはレベルが高すぎるだろうから、簡単な例に直すと、
  別にこのスレの求めてるレベルが高いというか、教師に「どこが分からないのか分からない」と聞いているようなものだ
  つまり、分からなければ「分からない問題を解いてみた過程の書いてあるノート」を教師に見せなければならない
ということ

あなたのいってるエラーコードだけど、かなり多くの場合に出るエラーだから、何の参考にもならない
先の例だと、いきなり「問2がわからない」と教師に言っているようなもの
だから、「どの教科書」(=どのソース)についていっているのか伝える必要があるわけ
96Name_Not_Found:2007/01/22(月) 21:46:50 ID:???
>>95
回答者と質問者この場合は立場が逆ですね
最小限といわれても思う最小限を出してるのにも関わらず
同じ言葉の繰り返しで最小限を出せといわれても指し示されていないのでこちらも返答しようがありません
97Name_Not_Found:2007/01/22(月) 22:10:19 ID:???
>>96
よく分からないんだが動いてエラーの出るソースってどっかにあった?
動かない断片だと動かして見られないから原因究明もできないわけで。
98Name_Not_Found:2007/01/22(月) 22:18:14 ID:???
//POST送信
function do(){
document.fForm.param.value= tsetdata;
document.fForm.submit();
}

上記のようにPOST送信してから、自画面にパラメータを
渡そうと考えています。
POST送信して、パラメータを受け取るとき、
どのようなメソッドでパラメータを取得できるのでしょうか?

GET送信のときは、次のように、location.searchを使って
取得していたのですが、POST送信では取得できないようです。。
var parmdata = location.search;
99Name_Not_Found:2007/01/22(月) 22:29:58 ID:???
>>98
formのtargetに渡すデータを自分でつけ加えるとかクッキーで渡すとか。
100Name_Not_Found:2007/01/22(月) 22:49:33 ID:???
クッキーの利用は、考えたことありませんでした。
もしだめだったら、利用させていただきます!!

そもそも、POST送信でパラメータを受け取ることはできないのですかね?
101Name_Not_Found:2007/01/22(月) 22:53:07 ID:???
>>100
サーバ側で何らかのアクションをするようにしないと無理
102Name_Not_Found:2007/01/22(月) 22:55:25 ID:???
>>96
質問が高度過ぎて誰もわからないんだよ。
なんとか言いくるめようとしてるのにそろそろ気がつけ。
上級スレに行くべきなのはお前なんだ。
103Name_Not_Found:2007/01/22(月) 23:00:51 ID:???
>>102
上級スレでは動くサンプルも貼ってね
104Name_Not_Found:2007/01/22(月) 23:24:05 ID:???
>>96
だから、ソースもないのにそんなありふれたエラーじゃ、原因を特定できないから、
あなたの提示した情報は最小限のソースとして不十分なの
おわかり?
105Name_Not_Found:2007/01/22(月) 23:34:28 ID:???
サンプルってのがサンプルソースコードだってわからなかったに一票www
106Name_Not_Found:2007/01/22(月) 23:40:18 ID:???
ああ、それでエラーの出てる「箇所」だけ貼ってるのか。アホや。
107Name_Not_Found:2007/01/22(月) 23:47:56 ID:???
ドメインまたいでるとかいうオチなんでしょ。
108Name_Not_Found:2007/01/23(火) 00:01:06 ID:???
>>107
関係ない。
109Name_Not_Found:2007/01/23(火) 00:12:55 ID:???
きっとbodyの最後の方にscriptを置いていて、それをheadでロードするようにしたから、オブジェクトがないと言われたんだろ
もともとのscript要素のあった位置で外部ファイルを読み込んでみれ
110Name_Not_Found:2007/01/23(火) 00:20:23 ID:???
だからさー、そうやって予想しちゃうとつまらないじゃん。
テッテして「最小限のソースを作って貼れ」にした方が(ry
111Name_Not_Found:2007/01/23(火) 00:25:28 ID:???
いやいや
上級スレに移住してもらった方が(ry
112Name_Not_Found:2007/01/23(火) 00:26:48 ID:???
>>109でもエラーになる場合があるから、ソースないとダメなんだよね
ケアレスミスとか本当にやめてほしい・・・
113Name_Not_Found:2007/01/23(火) 00:29:45 ID:???
>>112
「もともとのscript要素のあった位置で外部ファイルを読み込んで」
もエラーになる場合のか?w
114Name_Not_Found:2007/01/23(火) 02:38:43 ID:H7WMvxy8
質問です。
初歩的な質問で申し訳ないのですが、手持ちの参考資料に何故か無かったので、ここで質問させてください。

<div id="hoge">aaaaaaa</div>
このようにHTMLが書かれていたとして、
これをJavaScriptでaaaaaaaの文字の部分を変更したいのですが、その場合どのようにすればいいのでしょうか?
getElementById("hoge").〜で参照しても、それっぽいプロパティーは無かったのですが…。
色を変えたりはあるんですけどね。。。
115Name_Not_Found:2007/01/23(火) 02:52:09 ID:???
>>114
var hoge = document.getElementById("hoge");
for(var prop in hoge){
alert("hoge." + prop + " = " + hoge[prop]);
};
116Name_Not_Found:2007/01/23(火) 03:03:26 ID:???
117Name_Not_Found:2007/01/23(火) 03:08:23 ID:???
>>101
>サーバ側で何らかのアクションをするようにしないと無理

POST送信のパラメータはJavascriptでは受け取ることができないんですか。
クッキーかGETで対処することにします。ありがとうございます。
118Name_Not_Found:2007/01/23(火) 04:57:11 ID:???
>>117
レスポンスのURIのクエリを読むことを、「受け取れる」
と見なすならば、GETとPOSTに違いはないだろ。
リクエストしてレスポンスを受け取らなくても、
フォームとフォームコントロールを走査すれば取得できるわけだから。
119Name_Not_Found:2007/01/23(火) 13:13:20 ID:???
あぁ、スレ伸びてると思ったらやっぱり>>16が叩かれてたのか
いつも質問する側だけど、>>16みたいなのがあるとスレの雰囲気悪くなって
こっちまで聞けなくなるから困る

>>23書いて>>35を言われてるのに何でもう一回コード貼らないのか理解できない
貼れば教えてくれるって人ばかりなのに
120Name_Not_Found:2007/01/23(火) 14:45:39 ID:???
121Name_Not_Found:2007/01/23(火) 19:27:04 ID:???
IEのしつもんです。
history.back() のボタンを作って、
実際に戻れない場合はボタンを無効にしたいのですが
実行する前に確認することはできませんか?
(history.length == 0 の場合は除きます)
122Name_Not_Found:2007/01/23(火) 19:39:03 ID:???
IEのbehaviorでsavesnapshot、saveHistoryを同時に指定することはできないのですか?
↓では、snapshotは効くようになり、savehistoryが効かなくなります。

<META NAME="save" CONTENT="history">
<META NAME="save" CONTENT="snapshot">
<STYLE>
.SSSSSSS
{
behavior:url(#default#savesnapshot) url(#default#saveHistory);
}
</STYLE>
</HEAD>
123Name_Not_Found:2007/01/23(火) 20:09:47 ID:???
>>119
あんなこと言うような奴にわかっていたとしても教えられると思ってないので。
以前のこといちいち穿ってレスつけてるあなたもスレ荒廃の原因ですね
124Name_Not_Found:2007/01/23(火) 22:42:50 ID:/N22kwec
クッキーについて質問です。
入力した文字列の履歴をリストボックスのように
保持するするにはどうしたらいいでしょうか?
かなりググリましたが、サンプルコードがありませんでした。
また、半角スペース入力にも対応したいと考えます。
125Name_Not_Found:2007/01/23(火) 23:35:18 ID:???
まあ、やりたい事がそのまま載ってる事は限られる。
↓エスパーよろ
126Name_Not_Found:2007/01/23(火) 23:56:04 ID:???
>>124
半分以上クッキー関係ないジャマイカ
127Name_Not_Found:2007/01/24(水) 00:16:09 ID:???
スクロールに追従するインターフェースを作ろうとして、ちょっと躓いてるので質問させて下さい。
現在XHTMLで記述しているページで、一定のスクロール量に達したら、スクロールに合わせて追従し、
かつセンター寄せしたページの左側に沿うようにJavaScriptで制御しようと、以下のように外部jsに
記述した所、InternetExplorer(6/7)以外ではどうも上手く動作しません。色々試しては居るのですが
どうも糸口が見えて来ないので、どなたかこの辺の解決法をご存知の方ご享受お願いします。

window.onscroll = Menu;
window.onresize = Menu;
window.onload = Menu;

function Menu(){
if(document.documentElement.scrollTop < 220){
document.getElementById("menu_a").style.top = 220;
}else if(document.documentElement.scrollTop > 220){
document.getElementById("menu_a").style.top = document.documentElement.scrollTop;
}

if(document.body.clientWidth < 840){
document.all("menu_a").style.left = -5;
}else if(document.body.clientWidth > 840){
document.all("menu_a").style.left = document.body.clientWidth / 2 - 420;
}
}

※以下にレイヤー"menu_a"をdocument.writeで吐き出すコードが続きます。
128Name_Not_Found:2007/01/24(水) 00:17:49 ID:???
>>124
主要なブラウザは既に似たような機能を実装してるので
どれほど有用な物になるか疑問なんだが。

クッキーについては document.cookie で
半角スペースについては encodeURIComponent() で検索すれば
情報は得られるかと。
form のテキスト欄で onkeyup あたりで入力を監視すればいい。

スクリプト自体よりも候補のリストを表示させる方がめんどくさそうだ。
129Name_Not_Found:2007/01/24(水) 00:20:12 ID:???
ご享受は頂けない
130Name_Not_Found:2007/01/24(水) 00:43:34 ID:???
>>127
0以外の数値には単位が必要。

あと、document.all は Opera や Fx でも一応使えるが、
例えば、innerHTML ほどには一般化していない。
だから、書き直した方が良いだろう。
131Name_Not_Found:2007/01/24(水) 02:44:32 ID:???
operaはともかく、firefoxってdocument.all使えたっけ?
132Name_Not_Found:2007/01/24(水) 03:46:53 ID:WdvCgY7D
世界の時計の現在の時刻の比較の、JAVAスクリプトはたくさん見つかりますが、

2日後の時刻の9時など、日時をフォームに入力してプッシュすると、そのときの世界時計の比較が出るものってありますか?
これはJAVAスクリプトのソースをください。
133Name_Not_Found:2007/01/24(水) 03:53:39 ID:???
>>131
使える。
しかしdocument.allはnameとかも拾う糞仕様なので使う意味がわからない。
134Name_Not_Found:2007/01/24(水) 07:35:26 ID:???
135Name_Not_Found:2007/01/24(水) 10:41:15 ID:???
window.onloadで、特定のタグにonclickを付加すると言う関数を呼び出すようにしています。
最初にページが読み込まれたときは当然上手く付加されているのですが、
その状態でajax処理で移動したページには出来ないです。
どういうイベントハンドラを使えばいいのでしょうか?
136Name_Not_Found:2007/01/24(水) 10:46:30 ID:???
>>135
意味わかんね。ページ移動したら、また設定しなきゃ無理だろ。
普通に考えて
137Name_Not_Found:2007/01/24(水) 10:52:56 ID:???
ajax処理で獲得した優勝賞金使え
138Name_Not_Found:2007/01/24(水) 11:20:33 ID:???
>>136
ajaxではなくて普通のリンクの場合は、クリックした時に画面が切り替わってwindow.onloadで
設定した関数が実行されますよね。
そうではなくてページの一部をajaxで切り替えた時にイベントを起こせないかな?と言うことです。
window.onloadじゃ無理みたいなので何か他のハンドラがあればいいのですが・・・。
139Name_Not_Found:2007/01/24(水) 11:31:08 ID:???
childnodes[i].onmouseover = window['function'];
あるタグの子ノードのマウスオーバー時に、functionと言う関数を実行させる為に、
上のような記述が出来るらしいですが、この場合functionにパラメータを持たせる事は可能ですか?
140Name_Not_Found:2007/01/24(水) 11:31:20 ID:???
切り替えたときに実行すればいいだろ。
141Name_Not_Found:2007/01/24(水) 11:32:45 ID:???
>>139
むぎ
142Name_Not_Found:2007/01/24(水) 11:47:14 ID:???
>>138が何もわかっていないことがよくわかった
どうせrailsのprototype.jsとかをよくわからないまま適当に使ってるんだろうな
143Name_Not_Found:2007/01/24(水) 12:04:49 ID:???
>>135
Ajaxの処理が終わった後で
その「onclickを付加する関数」を直接呼べばいいだけ
144Name_Not_Found:2007/01/24(水) 12:23:01 ID:???
jsっていうかECMAの仕組みを理解しようとしない
香具師大杉!!
145Name_Not_Found:2007/01/24(水) 12:55:18 ID:???
>>144
どうせ小学生とか中学生ばっかりだろ。
ECMA読まなくても、そこそこ動くものが作れるくらい、
中途半端な記事で溢れてるし
146Name_Not_Found:2007/01/24(水) 13:07:04 ID:???
>>122
MSに記載がないようだから、憶測になる。

事実: snapShot は、保存しない限り、メモリー上に保持。
事実: history は、常に、メモリー上に保持。
事実: 同一の要素オブジェクト、プロパティ名前も完全一致している。
憶測: 別々の領域に保持されるわけではなく、同一のメモリー領域が使われているっぽい。
事実: snapShot は、ページ遷移 = 保存しない、だから、迅速に消去した方が安全。
憶測: 仮に消去されるのなら、それは history のデータでもあるわけで……。

たぶん、こういうことだろう。
147Name_Not_Found:2007/01/24(水) 13:12:18 ID:???
>>138
>>140>>143がFAなんだが、
ちょっと違う方法になるが、DOM-MutationEvents を使える場合がある。
148Name_Not_Found:2007/01/24(水) 13:16:02 ID:???
>>143
それをすると何故かロード中に関数が実行されてしまうorz
例えばアラートを出す関数の場合でやると、ロード中にアラートが出るんだわ。
ロードが完了したのを判断するイベントハンドラって無いんですかね?
149Name_Not_Found:2007/01/24(水) 13:19:17 ID:???
あるよ
150Name_Not_Found:2007/01/24(水) 14:06:42 ID:???
>>138
むしろどうやってページ書き換えてるのか問い詰めたいのだが
RoR とか prototype.js とか使ってるとそんなんしなくても勝手に
書き換えてくれたりするん?
151Name_Not_Found:2007/01/24(水) 14:18:41 ID:???
>>150
恥ずかしながらSimple JSって言うライブラリを使ってますorz
http://simplejs.bleebot.com/
readyState?ってのがキーだと思ってるんですが上手く動かないです。
152151:2007/01/24(水) 14:41:43 ID:???
お騒がせしてスイマセン。
特別いじってないのにいつの間にか動くようになりました。
153Name_Not_Found:2007/01/24(水) 19:44:56 ID:???
「あるボタンを押すとフラグが立ち、もう一度押すとフラグが終わる」というスクリプトを書きたいのですが
どうするとうまく行くのか解りません。
そのフラグの有無を利用してスクリプトを動作させたいのですが、簡単にフラグを立てるにはどうすればいいのでしょうか?
154Name_Not_Found:2007/01/24(水) 20:06:31 ID:???
>>153

<button onclick='var f=document.getElementById("flag");
f.innerHTML=(f.innerHTML=="フラグ" ? "フ<br>ラ<br>グ":"フラグ")'>ある</button>
<div id="flag">フラグ</div>
155Name_Not_Found:2007/01/24(水) 20:35:19 ID:???
しょうもねぇ
156Name_Not_Found:2007/01/24(水) 23:12:56 ID:???
次のようなサーバプログラムがあるとします
"test message" 表示(フラッシュ)
5秒スリープ
"test message2" 表示(フラッシュ)

このサーバプログラムにIEで直接アクセスするとその通り表示されますが、
xhr = newXMLHttpRequest();
xhr.responseText
で参照すると"test message"と"test message2"が同時に(つまり5秒経過後に)受信されてしまいます。

また
<iframe name="upload_iframe" style="width: 400px; height: 100px;"></iframe>
<form method="POST" action="cgi-bin/test.cgi" enctype="multipart/form-data" name="form1">
<input type="submit">
でsubmitボタンを押しても同様に5秒後受信されます(multipart/form-dataにしているのはファイルを扱うからです)

これらのメッセージを即座に受信し表示するにはどうすればよいのでしょうか?
ご教示お願いします。
157156:2007/01/24(水) 23:14:52 ID:???
すみません
× <form method="POST" action="cgi-bin/test.cgi" enctype="multipart/form-data" name="form1">
○ <form method="POST" action="cgi-bin/test.cgi" target="upload_iframe" enctype="multipart/form-data" name="form1">
158Name_Not_Found:2007/01/24(水) 23:30:34 ID:zNOlNgV8
エラーで、
『'x'はNullまたはオブジェクトではありません。』
と表示されます。

でも、検索をかけても「x」という文字は出てきません。

それに
GEvent.addListener(marker2, "click", function() {
marker2.openInfoWindowHtml("aiueo");
});

とあるのを

GEvent.addListener(marker2, "click", function() {
//marker2.openInfoWindowHtml("aiueo");
});

とコメントアウトすると普通に実行します。

何が原因なのでしょうか?
159Name_Not_Found:2007/01/25(木) 00:50:17 ID:???
>>156
XHRはそういう仕様

>>158
よく探してみろ
160Name_Not_Found:2007/01/25(木) 09:51:55 ID:???
>>158
そのmarker2という変数に'x'が入ってるんじゃないの。
161Name_Not_Found:2007/01/25(木) 14:27:55 ID:???
<script>
var makeRGB = function(r, g, b) { r = Math.floor(r * 255).toString(16); g = Math.floor(g * 255).toString(16); b = Math.floor(b * 255).toString(16);
if(r.length == 1) { r = "0" + r; } if(g.length == 1) { g = "0" + g; } if(b.length == 1) { b = "0" + b; } return "#" + r + g + b;
}; var center = 200; var radius = 120; window.onload = function() { var count = 0; var div = document.createElement("div");
with(div.style) { position = "absolute"; overflow = "hidden"; width = "1px"; height = "1px"; } for(var x = -radius; x < radius; x++) {
for(var y = -radius; y < radius; y++) { var r = Math.sqrt(x * x + y * y); if(r > radius) { continue; } var s = r / radius; var h;
if(s == 0) { color = makeRGB(1, 1, 1); } else { if(y == 0) { if(x < 0) { h = 90; } else { h = 270; } } else { if(y < 0) {
h = Math.atan(x / y) * 180 / Math.PI; } else { h = Math.atan(x / y) * 180 / Math.PI + 180; } } if(h < 0) { h += 360; }
var i = Math.floor(h / 60); var f = h / 60 - i; var v = 1; var m = v * (1 - s); var n = v * (1 - s * f); var k = v * (1 - s * (1 - f));
switch(i) { case 0: color = makeRGB(v, k, m); break; case 1: color = makeRGB(n, v, m); break; case 2: color = makeRGB(m, v, k); break;
case 3: color = makeRGB(m, n, v); break; case 4: color = makeRGB(k, m, v); break; case 5: color = makeRGB(v, m, n); break; } }
var pixel = div.cloneNode(true); pixel.style.left = (center + x) + "px"; pixel.style.top = (center + y) + "px";
pixel.style.backgroundColor = color; document.body.appendChild(pixel); count++; } } alert(count); };
</script>
上のスクリプト(超重いです。IEでの実行をお勧めします。間違ってもFxではしないほうがいいです)、
45223個のDIVを生成するプログラムなのですが、IEだと32764個で止まってしまいます。
DIV 32764個+body + head + script + title でちょうど32768個ですので、IEはそういう仕様なのかな。
162Name_Not_Found:2007/01/25(木) 14:46:43 ID:???
>>161
何がしたいのかは解らないけど
そういうのを描くのはFlashとかにしなさい
163Name_Not_Found:2007/01/25(木) 15:11:00 ID:???
>>162
デザインで使うための、printscreenする画像を作りたかったんです。
mingwインストールするのとJavaScriptで書くのとどっちが速いかな、って。
3行目のradius = 30くらいにすると何やりたいかわかると思います。

ちょっとしたプログラムを書きたいときに、ほぼ確実にどのコンピュータでも動くのは
JavaScriptの大きな特徴ですよね。昔のN88BASICみたいな。
164Name_Not_Found:2007/01/25(木) 17:03:42 ID:???
内部をフレーム分割している親フレームページをブラウザ表示したときに
Javascriptでブラウザウィンドウサイズを制御したいのですが、うまくいきません

ターゲットはIE6です。親フレームページには<body>タグがないので、
document.body.clientWidth、document.body.clientHeightは
使えないみたいです

よろしくお願いします
165Name_Not_Found:2007/01/25(木) 17:29:29 ID:???
>>164
>2
2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。

> 親フレームページには<body>タグがないので、
なんでないのかが良くわからないです

> よろしくお願いします
何をお願いしますなのかが良くわからないです。
166Name_Not_Found:2007/01/25(木) 20:26:44 ID:eOOYcexl
セレクトメニューに応じて別のセレクトメニューの内容を変えるというものを
作っています。

function menuSelect(n){
names=document.myForm.hobby.options[n].value;
if(names=="趣味1"){
menuItem=["パソコン","スポーツ","映画"]
for (i=0; i<3; i++){
document.myForm.hobby_list.options[i] = new Option(menuItem[i],menuItem[i]);
else if(names=="趣味2"){
menuItem2=["音楽","ファッション"] //以下のソースは割合します。

<select name="hobby">のoptionにある「趣味1」をクリックしたら
<select name="hobby_list">のメニューに趣味一覧が表示されます。
それは可能なのですが、「趣味2」を押した時に、「趣味1」の内容も表示されます。
menuItem2にmenuItemと同じだけの空データを数だけ用意すれば
見た目上は表示されませんが、選択出来てしまいます。

どうやって毎回の選択毎にhobby_listの内容を新規に表示させることが
出来るのでしょうか?
167Name_Not_Found:2007/01/25(木) 21:30:01 ID:???
options.length = 0;
168Name_Not_Found:2007/01/25(木) 21:33:41 ID:???
>>163
> ちょっとしたプログラムを書きたいときに、ほぼ確実にどのコンピュータでも動くのは
> JavaScriptの大きな特徴ですよね。昔のN88BASICみたいな。

勘違いも甚だしい。
169166:2007/01/25(木) 21:52:52 ID:???
>>167
出来ました!ずっと悩んでいたのですが、本当に助かりました。
どうもありがとうございました。
170Name_Not_Found:2007/01/25(木) 22:08:04 ID:PdkbNc9o
オートコンプリートについて質問です。
<input type="text" autocomplete="on">としている場合に
入力内容が保存されるようにするにはどうしたらいいでしょうか?
画面内で完結し、他の画面に遷移しないページとなっています。
171Name_Not_Found:2007/01/25(木) 22:11:15 ID:???
>>170はマルチ
礼も言わずに質問逃げ。
172170:2007/01/25(木) 22:30:51 ID:???
>>171
すみません。
他スレでこちらに行くよう指示されましたので、マルチではありません。
173Name_Not_Found:2007/01/25(木) 22:45:00 ID:???
マルチ?どうでもいい。
つうか、礼を言って欲しいか?
回答して暇をつぶすための素材を提供してくれれば良いだけだがな。
174Name_Not_Found:2007/01/26(金) 00:05:39 ID:???
フレームを使用していて左右に分かれている右側のページから
ボタンで全体のリロードを行うにはどういうコードにすればよいでしょうか?
フレームの名前は↓のようになっています
フレーム本体:main
左側:left
右側:right
175Name_Not_Found:2007/01/26(金) 00:30:44 ID:???
>>174
<input type="button" onclick="top.location.reload()">
176Name_Not_Found:2007/01/26(金) 00:41:06 ID:???
>>175
ありがとうございました
177Name_Not_Found:2007/01/26(金) 02:37:35 ID:???
>>170
inputに適当なnameでもつければいいさ
少なくてもIEではそれで十分だ
例えばIE6では
<input type="text" name="q">
にカーソルを入れて↓キーで人によってはGoogleの入力履歴が見られると思う
178170:2007/01/26(金) 08:49:08 ID:980PGnws
>>177
ありがとうございました。
179Name_Not_Found:2007/01/26(金) 17:48:14 ID:+dRBnChE
<li onmouseover="test()">適当な文字列

上のイベントを実行させようとマウスを乗せたとたんに、
ページが真っ白になってしまうんですが、原因は何が考えられるでしょうか?
test()は中身を色々替えたのですが変わりありませんでした。
180Name_Not_Found:2007/01/26(金) 18:06:58 ID:???
そんなことないだろうと思って
IE6 と Firefox2 と Opera9 で試したけど
そんなことなかった

test() の中身を書きたまえよ
181Name_Not_Found:2007/01/26(金) 19:06:58 ID:???
document.writeを使っているに100パセリ
182Name_Not_Found:2007/01/26(金) 19:45:59 ID:???
おれは1000ワロス
183Name_Not_Found:2007/01/27(土) 12:20:29 ID:VlG7FqXo
グーグルのパーソナライズドホームみたいな
配置を換えられるフローティングウィンドウを
作りたいんですが、
おすすめなライブラリって有りますか?
184Name_Not_Found:2007/01/27(土) 14:14:16 ID:???
>>183
そのものを参考にすればよかろうに。
185170:2007/01/28(日) 01:35:25 ID:???
>>177
先日、質問させていただいたものですが、
前にどこかのWebページで入力した履歴が表示されました。
しかし、新規に入力した情報が残りません。
他のページに遷移しないと保存されないのでしょうか?
186Name_Not_Found:2007/01/28(日) 01:52:01 ID:???
googleのjsってものによっては参考にするのは絶対に不可能。
187Name_Not_Found:2007/01/28(日) 03:04:54 ID:???
>>186
意味不明。
188Name_Not_Found:2007/01/28(日) 03:10:23 ID:???
ワタシニハワカリマセンってこったろうね
ま、絶対に不可能は絶対にないとして、現実的にやる気にならん物は少なかないな

>>183
そうねhttp://demo.script.aculo.us/shopあたり弄ったらどうにかなんでねーの頑張れはいはい
189Name_Not_Found:2007/01/28(日) 05:07:40 ID:lhj+fjbL
フォーム内のテキストボックスの内容を変更するスクリプトを動かしたいのですが、
お知恵をお貸し下さい。

普通なら、 docment.(formの名前).(inputの名前).value = "hoge" とすれば良いの
ですが、今回inputの名前が person[name] のように記号[]を含んでおり、
これを上の方法でやるとプロパティ名として認識されず、'name'は宣言されていません、
とのエラーが出てしまいます。

これをinputの名前を変更することなくスクリプト側で対応できないでしょうか?
なにとぞお力を。
190Name_Not_Found:2007/01/28(日) 06:05:35 ID:???
>>189
FAQ を読めばいいと思うの
191Name_Not_Found:2007/01/28(日) 15:47:19 ID:???
>>189
document.getElementsByTagName("person[name]")
192Name_Not_Found:2007/01/28(日) 16:25:30 ID:???
>>191
それは違う
formへの参照.elements["person[name]"].value
でelementsの添え字に参照したいinputのidでも入れればいい
もしくはdocument.getElementsByName
193Name_Not_Found:2007/01/28(日) 17:21:29 ID:???
name属性って[]とかの記号含んでもいいの?
194Name_Not_Found:2007/01/28(日) 17:26:41 ID:???
うん
195Name_Not_Found:2007/01/28(日) 17:28:19 ID:???
ここで仕様書マニアが一言
196Name_Not_Found:2007/01/28(日) 17:31:11 ID:???
strictスレにいきなさい。
197Name_Not_Found:2007/01/28(日) 17:43:35 ID:???
>>192
ごめw寝ぼけてて間違えた。

そういや昔そんな関数作ったなぁ。
name でコレクション得られるやつ
198Name_Not_Found:2007/01/28(日) 22:56:48 ID:???
チョー素人です。
onMouseOverさせたいだけなんです。
どうして動かないのかさっぱりわかりません


<a href="index.htm"
onMouseOver="chgImg('INDEX','img2.gif')"
onMouseOut="chgImg('INDEX','img1.gif')">
<img src="img1.gif" border="0" name="INDEX">
</a>

function chgImg(imagesName,gifName){
document.images[imagesName].src=gifName;}
199Name_Not_Found:2007/01/28(日) 23:06:46 ID:???
<a href="index.htm"
onMouseOver="chgImg('INDEX','img2.gif')"
onMouseOut="chgImg('INDEX','img1.gif')">
<img src="img1.gif" border="0" name="INDEX">
</a>

<script>
function chgImg(imagesName,gifName){
document.images[imagesName].src=gifName;}
</script>
200198:2007/01/28(日) 23:21:26 ID:???
>>199
ごめんそこまで書いてなかったな


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


index.js

function chgImg(imagesName,gifName){
document.images[imagesName].src=gifName;}
201Name_Not_Found:2007/01/28(日) 23:27:42 ID:???
>>198
素人かどうかなどこちらの知ったことではない。
アンタが貼った通りのもので動くけどねえ?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function chgImg(imagesName,gifName){
document.images[imagesName].src=gifName;}
</script>
</head><body>
<p><a href="index.htm"
onMouseOver="chgImg('INDEX','img2.gif')"
onMouseOut="chgImg('INDEX','img1.gif')">
<img src="img1.gif" border="0" name="INDEX">
</a></p></body></html>
202198:2007/01/29(月) 01:14:39 ID:???
ダメだ
>>201そのまんまコピペしても動かない(imgのアドレスなんかはちゃんと確認してる)
俺の環境が悪いのか?でも余所のサイトじゃしっかり機能してるのが見えるんだがなあ…???
もうわけわかんねー


迷惑かけたなλ....
203Name_Not_Found:2007/01/29(月) 01:30:14 ID:???
>>197
自前でつくらなくてもgetElementsByNameを使えばいいじゃない
204Name_Not_Found:2007/01/29(月) 02:22:11 ID:???
>>203
ちょっと前のレスくらいちゃんと読もうな
205プードル:2007/01/29(月) 03:40:11 ID:mItuk9aJ
こんばんは。1から10までの数値をランダムに10個並べて、おなじ数字が2度以上
出現しないようにするのってどうすればいいんですか?
ループとフラグを使うのはわかるんですが・・・
初歩的な質問でごめんなさい。。ぜひ、教えて下さい!!
206Name_Not_Found:2007/01/29(月) 03:56:38 ID:???
これはひどい
207プードル:2007/01/29(月) 04:00:15 ID:mItuk9aJ
ひどいですよね。。
<script type="text/javascript"><!--
for(i = 0 ; i <10 ; i++){
for(j= 0; j <1 ; j++){
var num = Math.floor(10*Math.random())+1;
if(suuji[)
}
}

// --></script>

ここからずーーっと煮詰まってます(泣)
208プードル:2007/01/29(月) 04:01:34 ID:mItuk9aJ
間違えました↑
<script type="text/javascript"><!--
for(i = 0 ; i <10 ; i++){
for(j= 0; j <1 ; j++){
var num = Math.floor(10*Math.random())+1;
}
}

// --></script>

209Name_Not_Found:2007/01/29(月) 04:58:21 ID:???
function randomten(){
var str = "", arr = new Array(10), bNext = true;
while( bNext ) {
if ( !arr[ j = Math.floor( Math.random() * 10 )] ){
arr[j] = true;
str += ( j + 1 ) + ",";
bNext = false;
for ( i = 0; i < 10; i++ ) {
if ( !arr[i] ){
bNext = true;
break;
}
}
}
}
return str;
}
alert( randomten() );

適当なのでどんな場合でもちゃんと動くかは知らん。
210Name_Not_Found:2007/01/29(月) 08:14:41 ID:???
>>205
過去スレで瀕出な質問。過去スレ検索できない奴は来るな!
ループは使うがフラグなんて使わないぞ。1〜10を配列に
入れてシャッフルするのが定石。
>>209
アンタもだ、過去スレも読まずに低品質な回答なんか書くな!
211Name_Not_Found:2007/01/29(月) 11:38:11 ID:???
Ruby1.9がArray#shuffle!(), Array#shuffle() を組み込んだから言うのだが、寧ろ、JSに必要だろうな。
ここ(に限った話でも無いが)で過去に収束した最速コードは、
ttp://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/array.c?revision=10808
のrb_ary_shuffle_bangと完全に同じ。現在の
ttp://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/array.c?revision=11429
に見られるような、Iterate中の破壊禁止は、JSらしくないから不要と思う。
212Name_Not_Found:2007/01/29(月) 11:38:49 ID:???
しかし、JSの場合、割り当てられていないインデックスをどうするか、という問題がある。
Array#sort() のように、undefined値や"unassigned"値を後置するのか、
それとも、割り当てられたインデックス群だけでシャッフルするのか、
の二択になるだろう。後者を選択した場合、
  Array.shuffle = function () {
    return Array.prototype.shuffle.call(arguments[0]);
  }
  Array.prototype.shuffle = function () {
    var compact = [];
    Array.forEach(this, arguments.callee.helpCompact, compact);
    for (let i = compact.length, j; 0 < i; ) {
      j = Math.floor(Math.random() * i--);
      [compact[i], compact[j]] = [compact[j], compact[i]];
    }
    Array.forEach(this, arguments.callee.helpArrange, compact);// (*)
    return this;
  }
  Array.prototype.shuffle.helpCompact = function () {//this:Array == compact
    this[this.length] = arguments[0];
  }
  Array.prototype.shuffle.helpArrange = function () {//this:Array == compact
    arguments[2][arguments[1]] = this.pop();
  }
のようになる。
ところで、Array-Like については、(*) の行で問題が出る場合がある。
それは、HTMLCollection, NodeList の場合だが、
そもそも、Node の入れ替えをArray#shuffle() で行うのは不適切だから、
必要になった時には、それ専用の処理を別途用意するべきだろう。
213Name_Not_Found:2007/01/29(月) 11:51:44 ID:???
「"unassigned"値」の「値」は表現としておかしかったな。値が無いのだから。
214Name_Not_Found:2007/01/29(月) 14:21:52 ID:???
>>212
このコード、どの環境でもこのまま記述するだけで動くの?
215Name_Not_Found:2007/01/29(月) 15:13:15 ID:???
>>214
要JavaScript1.7
書き換えても、JavaScript1.6は必要。
JavaScript1.5以下やJScript5.7以下だと、Array#forEach() を厳密に実装するのがけっこうめんどう。
216Name_Not_Found:2007/01/29(月) 15:20:24 ID:???
>>215
誤 5.7
正 5.6
217Name_Not_Found:2007/01/29(月) 23:14:52 ID:???
JavaScript1.5(笑)
218Name_Not_Found:2007/01/30(火) 14:47:51 ID:???
JavaScript(笑)
219Name_Not_Found:2007/01/30(火) 17:51:14 ID:???
質問するスレがちょっと微妙な感じですが、
JavaScript関連なのでここで質問させていただきます。

IEでabbr要素を有効に表示させるスクリプトや、
スタイルシート切り替えスクリプトなど、
外部のスクリプトファイルを、HTMLのヘッダ部分で

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

このようにして呼び出しますよね。

ですが、外部スクリプトが増えてくると、
このscriptのタグをいくつも記述しないとならないのが、
なんとなく気持ち悪いので、HTMLでの記述は1つで、
複数の外部スクリプトファイルを読み込ませるようにしたいと思っています。

外部スクリプトファイルを1つのファイルにまとめるようなことは出来るのでしょうか?
お願いします。
220Name_Not_Found:2007/01/30(火) 18:08:29 ID:???
>>219
一番簡単なのはその複数のファイルを自分で取り寄せて連結し
1つのファイルにしてそれを読ませることだが。それが嫌なら
ファイル名一覧を配列に用意してファイルの個数だけループで
document.write()を使ってscriptタグを生成するとか?
221219:2007/01/30(火) 18:12:10 ID:???
>>220
1つのファイルにまとめるというのは、
コピペで繋げていけばいいんですか?
222Name_Not_Found:2007/01/30(火) 18:43:22 ID:???
<script>
window.onload = function() {
var test = function() {
var iframe = document.createElement("iframe");
setTimeout(function() {
document.body.appendChild(iframe);
iframe.contentWindow.location.href = "/test.html";
setTimeout(function() { document.body.removeChild(iframe); }, 1000);
setTimeout(test, 1200);
}, 300);
};
test();
};
</script>

こういう風にiframeを作成すると、Firefox1.0でhistoryにゴミが次々と生成されてしまいます。
Backボタンを押したときにユーザの想定外の動作になってしまうので、履歴を残さずにiframeを作りたいのですが
どのようにすればよいでしょうか?

Firefox2.0では解決されていますが、出来れば古いユーザにも対応したいので、よろしくお願いします。
223Name_Not_Found:2007/01/30(火) 20:24:25 ID:???
iframe.contentWindow.location.replace()
224Name_Not_Found:2007/01/30(火) 20:27:49 ID:???
>>221 うん。
>>222 ...location.replace('/test.html');
225Name_Not_Found:2007/01/30(火) 20:53:24 ID:???
>>223-224
確か、Firefox1.0ではそれでもダメ
どうするのかは俺も興味がある
226Name_Not_Found:2007/01/30(火) 20:57:48 ID:???
>>225
うーん。じゃ<iframe src="about:blank" ...></iframe>を
divのinnerHTMLに入れることでiframeを生成し、それから
location.replace()で取り換える、なんていうのはどうかね。
227Name_Not_Found:2007/01/30(火) 23:54:28 ID:???
IE6のVMLについての質問をさせてください。
下記コードでアニメーションGIFを先に表示すると通常GIFに切り替えてもCPUを使い続けます。
逆に通常GIFを先に表示するとアニメーションしなくなります。
どうやればうまく切り替えることが出来るのでしょうか?


<html xmlns:v="urn:schemas-microsoft-com:vml">
<head> <style> v\:* {behavior:url(#default#VML);} </style> </head>
<body>
<v:image id="vImage" style="width:100; height:100;" src="" />
<button onclick="vImage.src='anime.gif'"> アニメGIF </button>
<button onclick="vImage.src='normal.gif'"> 標準GIF </button>
</body>
</html>
228Name_Not_Found:2007/01/31(水) 01:17:36 ID:???
IE独自のelementFromPointに相当するクロスブラウザ版メソッドはありますか?
229Name_Not_Found:2007/01/31(水) 02:47:32 ID:???
>>69は結局不可能なのでしょうか?
230Name_Not_Found:2007/01/31(水) 04:08:55 ID:???
>>229
Script.aculo.usがやっとるよ。
scriptaculous.jsみてみ
231Name_Not_Found:2007/01/31(水) 08:22:34 ID:???
>>228
elementFromPoint getBoxObjectFor initMouseEvent
232Name_Not_Found:2007/01/31(水) 08:34:16 ID:???
>>227
そのままコピペしたが、問題なかった。
233Name_Not_Found:2007/01/31(水) 15:19:49 ID:pvMf4XCK
縦横200pxの四角の中にそれよりも大きい画像を表示し、
ドラッグで画像をスクロールできる仕組みをjavascriptで作りたいです。
GoogleMapsのように複数の画像を繋いでいく必要はありません。

divで四角を作って、そこへ画像を設定し、ゴニョゴニョゴニョ…
なのかなーとは思うのですが、分かりません。
どなたかアドバイスをください。
234Name_Not_Found:2007/01/31(水) 15:22:04 ID:???
>>233
それのどの辺をjavascriptで作りたいのかわかんないんだけど、
その程度ならiframeでよくね?
235233:2007/01/31(水) 15:36:23 ID:pvMf4XCK
スクロールバーじゃなくて、
ドラッグで自由にスクロールできる
という点さえ実現できてれば
iframeでもなんでも構いません。
236Name_Not_Found:2007/01/31(水) 15:49:11 ID:???
>>233
こういう風に別にスクロールコントロールがある方が使いやすくないかな。
http://user.ftth100.com/mirrorhenkan/javascript/read.php?key=1005979370&st=678&to=678
237Name_Not_Found:2007/01/31(水) 16:18:09 ID:???
>>236
俺はそれ、使いにくいと思う

>>233
divのoverflow="auto"は知っているよね?
div (overflow="auto"かつposition="relative")の中にposition="absolute"の画像を放り込み
top left をマイナスなどに設定してやることによって実装は可能。
マウスの移動距離を、onmousedown onmousemove onmouseupで取れば移動距離もわかるでしょう。
238Name_Not_Found:2007/01/31(水) 16:21:31 ID:???
>>237
スタイルシートのclipを使って部分をみせて、あとは絶対位置を
マスウドラッグで動かすほうが簡単のような・・・
239Name_Not_Found:2007/01/31(水) 19:35:29 ID:???
背景画像にして、CSS の background-position プロパティの値を操作するのが最も軽快だろうな。
240Name_Not_Found:2007/01/31(水) 20:25:09 ID:???
SP2入れててIEでJavaScriptを入れてるサイトを見ると、

「セキュリティ保護のため、コンピュータにアクセスできるアクティブ コンテンツは表示されないよう、
Internet Explorer で制限されています。オプションを表示するには、ここをクリックしてください...」

という情報バーが出るサイトと出ないサイトがあるんですが、どうやったら(ユーザーの設定にかかわらず)
この情報バーを出ないように出来るんですか?
241227:2007/01/31(水) 20:30:09 ID:???
>>232 ありがとうございます。
環境によって違うのかな〜と思っていろいろ試してみたんですけど
うちでも小さい画像ならうまく切り替えられるみたいです。

もしよかったら normai.gif の方をサイズの大きい画像にして試してみてもらませんか?
うちの場合CPU使用率が40%ぐらいまで上がってしまうんですが・・・

ちなみにうちは IE6SP2 XPHomeSP2 Pentium3-845MHz です。
242Name_Not_Found:2007/01/31(水) 22:46:14 ID:p+EYThW4
質問です。
document.referrerから検索キーワードを取得しようと思っています。
googleはUTF-8なのでdecodeURIで取得できたのですが、
yahooはEUC-JPのためdecodeURIで取得できません。
javascriptのみでEUC-JPをdecodeする方法ってありますか?
243Name_Not_Found:2007/01/31(水) 23:02:39 ID:???
>>240
不可。ユーザに設定変更を促す表示をする。
244Name_Not_Found:2007/01/31(水) 23:03:13 ID:???
>>242
「JavaScript EUC-JP デコード」でググったら一発で見つかった。
245Name_Not_Found:2007/01/31(水) 23:07:12 ID:???
あ、そのライブラリ好き
246Name_Not_Found:2007/01/31(水) 23:54:10 ID:???
var tag =
'<a href="#"
onClick="window.open(' + "'" + "xxxx.jpg" + "', 'images'); return false;" + '">' +
<img src="xxxx_small.jpg" + '</a>';

opener.Dialog._return(tag);
window.close();

ブログの投稿において、
子ダイアログで画像を選び、
ポップアップリンク付画像のタグを親ウィンドウのテキストエリアに埋め込む
javascriptコードなのですが、
親ウィンドウへの戻りが、
linuxだと、<a href="#" .... であるのに対し、
Windowsだと、<a href="http://yyyy.co.jp/zzzz.cgi#" .... と、
なぜかシャープの前に今見ている投稿画面のパスが埋め込まれてしまいます。

これはjavascriptの仕様なのでしょうか?
247Name_Not_Found:2007/01/31(水) 23:55:44 ID:???
IEの仕様
248229:2007/02/01(木) 00:04:55 ID:???
>>230
まさに期待通りのことが書いてました。
ありがとうございました。
249Name_Not_Found:2007/02/01(木) 00:41:05 ID:???
>>231
サンクス。ググったらそれらしいもんでてきた。
250Name_Not_Found:2007/02/01(木) 01:07:46 ID:ckOXaTgX
情報サイト(ITMediaなど)にいくと、パラグラフ表示をよく見かけます。
このパラグラフ表示は何らかの形で自動再生していると思うのですが、
具体的にはどのような手法を使っているのでしょうか。JavaScriptで
可能ですか?よろしくです。
251Name_Not_Found:2007/02/01(木) 01:20:57 ID:???
パラグラフ表示ってなんだ?[続き]をクリックしたら先が読めるような奴か?
252Name_Not_Found:2007/02/01(木) 01:30:00 ID:???
パラグラフ表示ってなにさ
スレ違いの予感がするけれども
253Name_Not_Found:2007/02/01(木) 01:31:53 ID:???
段落ごとの字下げの事か、はたまた段組のことか、いずれにしてもスレ違い。
254Name_Not_Found:2007/02/01(木) 03:30:01 ID:???
すみません、質問です。

var xx = { aaa: "abc", bbb: "def" };

と定義して、xxの中のbbbの値だけを関数に入れたいのですが、
GMarker(point, icon);
のiconのところにbbbの値”def”を入れるにはどのように表記すればよいのでしょうか?
GMarker(point, xx.bbb );
ではうまく動きませんでした。

ご存知の方がいらっしゃいましたら教えてくださいm(_ _)m
255Name_Not_Found:2007/02/01(木) 03:48:09 ID:???
まずはGMarker(point, "def")で動くのかどうか
次はGMarker()の呼び出しのあとにvar xx = {}を書いていないか
とりあえず試してみるxx['bbb']

ソースもしくはGMarker()とやらの中身がわからんことにはどうとも言えないよ
256Name_Not_Found:2007/02/01(木) 03:58:36 ID:???
質問への回答になってないだろ。

>>254
表記はxx.bbbで正しい。よって動かない理由は他にある。
257255:2007/02/01(木) 04:03:57 ID:???
>>256
すいません
258Name_Not_Found:2007/02/01(木) 08:36:49 ID:???
document.execCommand('SaveAs')
↑↑これって何をするJavaScriptですか?
259Name_Not_Found:2007/02/01(木) 08:57:03 ID:???
>>258
やってみなくちゃ解らない。
<input type="button" onclick="while(1)document.execCommand('SaveAs')">
260Name_Not_Found:2007/02/01(木) 09:02:27 ID:???
>>259
保存するダイアログが出ました。サンクス
261Name_Not_Found:2007/02/01(木) 09:39:05 ID:7TGmmUWu
iframeタグが現在表示しているHTMLファイルのURIを取得するにはどうすればいいですか?
src属性は、最初に読み込むURIなので、リンクがクリックされた場合に対応できません。
262Name_Not_Found:2007/02/01(木) 10:33:38 ID:???
>>261
過去50レスも読まないのか。
263254:2007/02/01(木) 10:52:41 ID:???
>>255,256
レスありがとうございます。
"def"を直接代入した場合は思うとおりの動きをしてくれますので、
この書き方が正しいのであれば、256氏のおっしゃるとおり、
他になにか間違っているところがあるんだと思います。
GMaker()はGoogleMapsAPIの関数のようなんですが、
とあるソフトを使用して吐き出したソースをいじってるので、
いまいち動作がわかっていない部分がありますので、
その辺で何かだめなところがあるのかもしれません。
もうちょっとソースを見て考えてみます。
ご回答ありがとうございました。
264Name_Not_Found:2007/02/01(木) 11:19:32 ID:7TGmmUWu
iframe内が更新されるたびにイベントを受け取るのは
onchangeでよいのでしょうか?
265Name_Not_Found:2007/02/01(木) 12:42:44 ID:7TGmmUWu
iframe の contentDocument.location.href の設定は出来ますが、
取得ができません。仕様でしょうか?

以下はFirebugでのログです。
「Permission denied to get property HTMLDocument.location」
266Name_Not_Found:2007/02/01(木) 13:01:42 ID:???
>>265
同一鯖なら取れるがそうでなければ取れない。
267265:2007/02/01(木) 13:03:47 ID:7TGmmUWu
んー、別サーバなんです。。
別の方法を考えないといけません。
iframeじゃなくてframeでも一緒かな。。
268Name_Not_Found:2007/02/01(木) 13:10:18 ID:???
>>263
グーグルに使用説明ページがあるだろ。
ちょっと読んでみたが、引数に文字列なんか渡してなかったぞ。
269Name_Not_Found:2007/02/01(木) 13:17:37 ID:???
>>267
一緒。別の方法なんて基本的にない。
270265:2007/02/01(木) 14:07:30 ID:7TGmmUWu
proxy的なCGI用意すればできるけど
大人気ないなぁ。。
271Name_Not_Found:2007/02/01(木) 16:35:02 ID:???
PHPで言う所の $_SERVER['REQUEST_METHOD']のように
ページにアクセスする際に使用されたリクエストのメソッドを
取得する方法はあるのでしょうか?
272Name_Not_Found:2007/02/01(木) 19:39:55 ID:yfO4t4mb
プルダウンメニューの選択の可否を ラジオボタンで制御したいと考えています
(「半そで」「長袖」のプルダウンが選べるのは「Tシャツ」のラジオボタンに
チェックを入れたときだけに限る と言った感じで)

色々調べてやってみたのですがうまくいきません ご助言をいただけたら幸いです

HTML部分
<form action="check.php" method="post" name="form_0">
身長<input type="text" name="length" size="8" value="170" />cm(センチでご記入下さい)<br />
<br />
服の種類と、タイプをお選び下さい<br />
<input type="radio" name="form_radio" value="1" checked="checked" />Tシャツ  
<select name="select1" >
<option value="short" selected="selected">半そで</option>
<option value="long">長袖</option>
</select><br />
<input type="radio" name="form_radio" value="2" />ズボン  
<select name="select2">
<option value="jeans" selected="selected">ジーパン</option>
<option value="chino">チノパン</option>
</select>
<br />
<input type="submit" value="調べる" />
</form>
273272:2007/02/01(木) 19:40:33 ID:???
javascript部分
if(window.document.form_0.form_radio[0].checked == "true"){
window.document.form_0.select1.disabled = "";
window.document.form_0.select2.disabled = "true";
}
if(window.document.form_0.form_radio[1].checked == "true"){
window.document.form_0.select1.disabled = "true";
window.document.form_0.select2.disabled = "";
}

宜しくお願いいたします
274Name_Not_Found:2007/02/01(木) 19:53:15 ID:???
function disableSelect(){
if(document.forms["form_0"].elements["form_radio"][0].checked == true){
document.forms["form_0"].elements["select1"].disabled = false;
document.forms["form_0"].elements["select2"].disabled = true;
}
if(document.forms["form_0"].elements["form_radio"][1].checked == true){
document.forms["form_0"].elements["select1"].disabled = true;
document.forms["form_0"].elements["select2"].disabled = false;
}
}

ページを読んだときとラジオボタンをクリックしたときに呼ぶ
275Name_Not_Found:2007/02/01(木) 19:53:26 ID:???
脊髄反射レス
"true"って文字列で囲う意味がわからん
276Name_Not_Found:2007/02/01(木) 20:06:37 ID:???
element.setAttribute("onclick", new Function("clickHandler(event);"));
この式で呼び出す関数に、変数の引数?をつける方法は無いんですか?

element.setAttribute("onclick", new Function("clickHandler(var1,var2);"));
上記のように出来ないかと言う事です。
277276:2007/02/01(木) 20:40:38 ID:???
すいません。
引用符の位置が間違えてただけでしたorz
278276:2007/02/01(木) 20:49:23 ID:???
あ、やっぱ動いて無いわ。
titleのツールチップで見たら変数が代入されているみたいだが、onclickにしても起動しないっぽい。
279Name_Not_Found:2007/02/01(木) 21:03:50 ID:???
>>278
わかってやってるのかと思ったけど
イベント関連は setAttribute ではつけられないブラウザもあるよ
280Name_Not_Found:2007/02/01(木) 22:22:55 ID:???
リンクをクッリクすると、リンク先がすぐ表示されるのでなく、ボワッと
浮かびあがるように表示させることはJavaScriptで可能でしょうか?
 曖昧な表現ですいません

281Name_Not_Found:2007/02/01(木) 22:28:20 ID:???
やろうと思えばできる
でもあまり歓迎されないのではないかと

IE 専でよければトランジション
282Name_Not_Found:2007/02/01(木) 22:41:17 ID:???
>>281 すばやい回答 さんくすです
283Name_Not_Found:2007/02/01(木) 22:41:17 ID:???
>>279
setAttribute以外で出来ないのでしょうか?

obj.onclick = func;
こう言う方法だと引数は取れないですよね?
284Name_Not_Found:2007/02/01(木) 22:43:43 ID:???
訂正
>>281 すばやい返答 さんくすです
285Name_Not_Found:2007/02/01(木) 22:45:41 ID:???
obj.onclick = "func()";
286Name_Not_Found:2007/02/01(木) 23:18:37 ID:???
>>285
それで動きます?
文字列と判断されてるみたいで動かないんですがorz
287Name_Not_Found:2007/02/01(木) 23:27:05 ID:???
obj.onclick = function(){return func();};
288Name_Not_Found:2007/02/01(木) 23:33:58 ID:???
最近非常に低レベルなくせに回答したがるアホがいて困るね。
1回ミスったら100レスは質問に回答するの控えるように。
289Name_Not_Found:2007/02/02(金) 00:03:22 ID:???
//IE
obj.attachEvent("onclick", function(){});

//その他
obj.addEventListener("click", function(){}, false);
290Name_Not_Found:2007/02/02(金) 00:04:43 ID:???
>>289
291Name_Not_Found:2007/02/02(金) 09:16:26 ID:???
文法の質問なんですが、オブジェクト変数からオブジェクトのIDを文字列として
取得したい場合、どうすればよいでしょうか?

参考書やWebを調べたところ、下記のようにすれば取得できるらしいのですが、
やってみたら何も取得できませんでした。

//呼び出し元では引数としてthisなどを渡す。
func(obj) {
var objId = obj.id
}
292Name_Not_Found:2007/02/02(金) 09:23:11 ID:+NIFvoDP
sortの検索条件に二次条件を付け加えるにはどうしたらいいのでしょうか?

既存のsortプログラムにつけ加えるだけで実行可能なものがあればありがたいのですが
既存のものを解読し改良しようとしたのですがうまく行きませんでした
293Name_Not_Found:2007/02/02(金) 10:25:18 ID:???
>>292
比較のための関数本体の中の一次条件の分岐で == のブロックがあるだろう。
そのブロック内で二次条件を付け加えればよいだけ。

歴史的に、Array#sort() は、Perl のそれを模倣して作られた。
だから、Array#sort() の応用的利用なら、
書籍「Effective Perl」を一読するだけで、スキルアップできると思う。

>>291
id という名前のプロパティがあって、かつ、値が入っていれば、取得できるだろう。
というか、取得できなければ、id という名前のプロパティは (?:無い|JSからは見えない) 、
または、値が入っていない、というわけだ。
id という名前のプロパティがあるオブジェクトの一例は、HTMLの要素オブジェクト。
HTMLのID属性として値が明示されていれば、取得できる。
言うまでも無く、JSで、id という名前のプロパティの値を事前に割り当てていれば、取得できる。
ただし、id という名前のプロパティは必ずしも書き込み可であるわけではないから、注意。

IEなら、HTMLの要素オブジェクトに、uniqueID という名前のプロパティもあり、
自動的に値が入っている。

これは余談だが、過去において、NN4のLayerオブジェクトも、
idという名前のプロパティに自動的に値が入っていたし、
これの値をHTMLの属性値として明示した時に限り、
その明示した値がidプロパティ値になった(つまり、後から変更不可だった)。
IEのuniqueIDが書き込み不可であるのと似ている(IEは書き込もうとすると黄色三角が出る)。
294272:2007/02/02(金) 11:09:21 ID:???
返事が遅くなってすいませんでした
>>274
ありがとうございました! できました!
関数にしてbodyタグとラジオボタンのタグの両方に挿入しないといけないんですね
ドキュメントの指定方法も勉強になりました ありがとうございます

>>275
だめもとで""でくくってみてたのを 直してませんでした アホですいません
295Name_Not_Found:2007/02/02(金) 12:17:39 ID:???
>>291 GeckoでもIEでも動くようだが。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() { func(document.body.firstChild); }
function func(obj) { var objid = obj.id; alert(objid); }
</script>
</head><body onload="test()"><p id="xx">Test</p></body></html>
>>292 こういうのかね。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<script type="text/javascript">
var a = [{x:1, y:0}, {x:2, y:0}, {x:1, y:2}, {x:3, y:0}, {x:1, y:3}];
a.sort(function(u,v){if(u.x==v.x) return u.y - v.y; else return u.x - v.x;});
for(var i = 0; i < a.length; ++i) document.write(a[i].x+':'+a[i].y+'<br>');
</script>
</body></html>
>>293 回答は簡潔かつ要領を得るように頼むわ。読む時間が無駄すぎ。
296Name_Not_Found:2007/02/02(金) 14:25:53 ID:???
setattributeでのイベントハンドラ付加が上手くいかないので(主要な対処法は上手く行かないです)、
一度title属性を付けて、後からonclickに置換したいんですが上手くいきません。
obj[i].innerHTML.replace("title","onclick");
記述が間違っているのでしょうか?
297Name_Not_Found:2007/02/02(金) 14:46:04 ID:???
>>296
対処方法はいくらでも説明されてると思うがそれを読んでできないのなら
あんたの技量不足だからあきらめた方がいいと思うね。
obj[i].innerHTML = obj[i].innerHTML.replace('title','onclick');
じゃないの。アホか。しかし力技で恐ろしげな設計だねえ。
あとinnerHTMLなんだからobj[i]自体のハンドラには影響しないけど
それでいいわけね?
298Name_Not_Found:2007/02/02(金) 15:02:34 ID:???
>>297
あなた場違いなので出ていったほうがいいわよ
299Name_Not_Found:2007/02/02(金) 15:19:54 ID:???
>>297
ありがとうございます。
一応出来たんだがあまり気持ち良いものでは無いorz

下の式みたいに出来ないのでしょうか?
for (var i=0; i<obj.length; i++) {
var number = i+1;
obj[i].setAttribute('onclick',new Function("alert(number)"));
}
これはIEでの、あるリストに張られたリンクにonclickハンドラを付けて、
順番に1からアラートを出そうとした式の一部なんですが、
どうしてもnumberが認識されません(宣言されて無いと出る)。
解決策は無いでしょうか
300Name_Not_Found:2007/02/02(金) 16:01:02 ID:???
>>299
だからsetAttribute()ではできないってば。過去ログ探せば沢山ある。
http://user.ftth100.com/mirrorhenkan/javascript/read.php/1103844975/
の424〜437とか読んでみれば。まったく同じことやってるだろ。そこで
どういうことが問題になってるかよく読んで理解してくれ。
今回サービスで探してやったけどこれからは自分で探せ。
>>298
ふーん、洩れは罵倒はするがちゃんと教えるようにもしてるよ。
アンタみたいなメタ議論だけのとどっちがスレのためなんだね?
301Name_Not_Found:2007/02/02(金) 16:12:32 ID:???
>>300
ちょっと訂正、setAttribute()でうまくハンドラ設定できないブラウザ
もあるという話だっけ?ともかくそのnew Function()はやめた方が。
または「new Funciton("alert(" + number + ")")」これはあまり
好きじゃない方法だけどねー(読みにくいし拡張性に欠けるから)。
302Name_Not_Found:2007/02/02(金) 16:29:16 ID:???
>>300
ようやく出来ました。
感謝します(^^)
303Name_Not_Found:2007/02/02(金) 17:23:04 ID:???
IEに関しては、2005年夏以前のクロージャ絡みのリークコードは黒歴史として葬った方が良いだろう。
この問題が発生する場合、過去ログ検索は負の遺産を再生産し続けるだけだ。

むしろ、>>301みたいなコーディングが安全だから。
304Name_Not_Found:2007/02/02(金) 17:33:52 ID:???
>>303
おい半可通、だから洩れは>>300のようにリークのない版を
調べて提示してるんだが。
305Name_Not_Found:2007/02/02(金) 17:36:00 ID:???
これからIE7になるんだからリーク問題は減ってくでしょ。
ブラウザのバグのために読みづらいコード書いて別のバグ出す
んじゃ非生産的だと思うな。
306Name_Not_Found:2007/02/02(金) 17:51:35 ID:???
>>304
違うなあ。>>299のエラーメッセージを見てみろ。
関数の中に書いているわな。
つまり、何を提示しようとも、その関数の中にコピペするわけだ。

とにかく、クロージャを質問するような人間に見せるな。使うな。使いたければ、そういう言語を選べ。

つうか、何回指摘してやっても、リークを理解できなかったおまえが能書きたれるなよwww
307Name_Not_Found:2007/02/02(金) 18:03:57 ID:???
>>305
読みづらいか?読みづらいとしたら、その人はJS歴3日とかだろ。

あと、もし、「これからの環境を考慮して」と言うなら、
document.attachEvent('onclick', function (e) {
  var as = document.links;
  var i = 0;
  var c = as.length;
  var t = e.srcElement;
  for (; i < c; i++) {
    if (as[i].contains(t)) {
      e.returnValue = false;
      alert(i + 1);
    }
  }
});
これが一番堅牢だ。そして、リンクが1000や2000あっても、IE7が動くPCなら、一瞬で走査する。
堅牢とは、現在、innerHTMLが完全にスタンダード化していて、
document.body.innerHTML = document.body.innerHTML.replace(....)
みたいなコードが星の数ほどある。こういう書き換えに対して、
...onclick = 関数 は、手も足も出ないというか、消されてしまう。
IE の ...setAttribute('onclick', 関数) は、setAttribute じゃなくて、これと同じ、消される。
308Name_Not_Found:2007/02/02(金) 18:11:42 ID:???
毎回ループして調べるって抵抗あるなあ。alertが1個なら
別にあれでもいいんだけどもっと込み入ったことを、たとえば
10行くらいの内容を、new Function()の文字列で渡すのは御免だな。
いや、アンタが好きならそりゃ別にご自由にだけどさ。
309Name_Not_Found:2007/02/02(金) 18:17:35 ID:???
いまだにSafari1.3にも対応している俺としてはどうでもいい議論だ
310Name_Not_Found:2007/02/02(金) 19:11:27 ID:???
>>307
IEのsetAttributeは『element[name] = value のシンタックスシュガー』
だから別にinnerHTML書き換えても消されたりしないよ
(むしろちゃんとした実装の方が書き換えで消されると思う)

無駄に補足しとくとIEでsetAttributeでイベント属性名とnew Functionつっこんで動くのもそのせい
DOMの仕様ではsetAttributeの第二引数はDOMString型だから、ちゃんとした実装なら
例えばdocument.body.setAttribute("onclick", new Function("alert(1)"))ってした場合
Function#toStringで文字列に変換するのでbody要素のonclick属性値は"function(){alert(1);}"かそれに近いものになる
だから(関数実行するコードじゃないから)動かないんだよ
311Name_Not_Found:2007/02/03(土) 00:20:03 ID:???
>>293>>295
解決しました。
ご指摘どおりで、呼出元でのオブジェクト取得が失敗してました。
わざわざありがとうございました。
312Name_Not_Found:2007/02/03(土) 01:04:37 ID:???
変数名を文字列として取り出せないのでしょうか。
var foo1 = "abc";
var foo2 = 123;

foo1から"foo1"を得たいです。


313Name_Not_Found:2007/02/03(土) 09:26:51 ID:???
>>312
foo1を実行した時点で値が取り出されて「"abc"」
になってしまう。「"abc"」が入っている変数がいくつも
あるかも知れないがそれを承知でやるなら
for(var name in window) { if(window[name] == foo1) alert(name); }
314Name_Not_Found:2007/02/03(土) 11:01:24 ID:???
>>312
var obj = { "foo1": "abc", "foo2": 123 };
という方針の設計にすることをオススメする。
315Name_Not_Found:2007/02/03(土) 13:07:14 ID:???
板違い気味ですみません。

Sleipnir最新版にアップデートしたら、ローカルのHTMLファイル(自作js入り)をダブルクリック時に、
ブラウザ上部に
「セキュリティ保護のため、コンピュータにアクセスできるアクティブコンテンツは〜」
メッセージが出るようになってしまいました。

ただし、yahooのページ(ローカルに保存したもの、js入り)を開いた場合はメッセージがでません。

jsを書くのが面倒になるので何とかしたいのですが、
原因と解決方法ご存知の方いませんか?
316Name_Not_Found:2007/02/03(土) 15:36:47 ID:???
>>315
ActiveX使ってるのでは?
JavaScriptというか、JScriptね
IE(およびIEコンポネートを使っている)
ブラウザ以外で動かなければ間違いなくJScript

もしそうならセキュリティーの設定を変更するしかない
317Name_Not_Found:2007/02/03(土) 15:46:30 ID:???
>>315
Sleipnir は知らんけど IE ならファイルの先頭に
<!-- saved from url=(0014)about:internet -->
って書けばセキュリティゾーンが変わる。

yahooの保存したファイルも見てみ。
318Name_Not_Found:2007/02/03(土) 17:08:26 ID:???
ありがとうございます。

>>316
自作ファイルには、
<script language="javascript"></script>
とだけ入れています。
やはりSleipnirアップデートによってセキュリティ設定が厳しくなったみたいですね。

>>317
コメントを入れるか、Web上に置いてhttpアクセスすると、メッセージは出ませんでした。
ただ筋として、まずセキュリティ設定を下げる方向でやってみます。
319Name_Not_Found:2007/02/03(土) 22:15:01 ID:???
お世話になります。
<a href="#" onClick="">
このようにして javascript の挙動を描いていますが、リンクをクリックした際に
ページの先頭に移動してしまいます。
これを防ぐ手だては無いでしょうか?ぐぐるにも、キーワードが絞り込めずに参っています。

320Name_Not_Found:2007/02/03(土) 22:21:07 ID:???
>>319
まずFAQ嫁
>>3
321Name_Not_Found:2007/02/03(土) 22:33:36 ID:???
>>319
FAQが熟読できない奴は帰れ!
322Name_Not_Found:2007/02/03(土) 22:38:05 ID:???
>>320-321
Q7が該当してました。本当に申し訳ないです。
これからは、ぐぐる前にFAQ熟読します。
323Name_Not_Found:2007/02/03(土) 23:53:57 ID:???
>>313
>>314

言語仕様的には無理って事ですね。
サンクスです。

今は
trace("foo1");
にして中でevalとか苦しいことをやっているので
 trace(foo1);
にできたらいいと思ってたんですが。
324Name_Not_Found:2007/02/04(日) 00:26:12 ID:???
自分が使っているフォントだと、…(三点リーダ)が...こんな風に表示されてしまいます。
そこでJavaScriptで…の部分だけフォントを変えたいのですが、その方法がよく分かりません。
何か良い方法はあるでしょうか。と言うか、これをJavaScriptでやるのは間違っているでしょうか?
325Name_Not_Found:2007/02/04(日) 00:42:43 ID:???
>>324
CSSで「.x { font-family: ... }」とか指定しておき、
bodyのonloadハンドラで次の動作を実行させるとかかな。試してないけど。
document.body.innerHTML = document.body.innerHTML.replace(/…/g, '<span class=x>…<\/span>');
326Name_Not_Found:2007/02/04(日) 00:44:49 ID:e5fg+rg3
3点リーダだけspanでくくってstyleでフォントを指定してやればいいだけなんじゃないの?
327326:2007/02/04(日) 00:45:19 ID:???
上げちまった
失礼
328Name_Not_Found:2007/02/04(日) 01:06:20 ID:???
>>326
うーん、結構多様するから出来ればそれは避けたいんです。
329Name_Not_Found:2007/02/04(日) 11:07:43 ID:???
>>328
一文字なので(正確には、複数のNodeにまたがっていないので)、簡単だろ。
innerHTMLを置換する(つまり必要以上にNodeを破棄して新規に構築する)
のを嫌っているのだろうとも思えるのだが、なんにせよ、
自分なりに何か考えた途中結果を出すべきじゃないかな。
330Name_Not_Found:2007/02/04(日) 14:21:24 ID:???
>>328
いや、単に >>325 が理解できないので無視してるとかじゃないの?
331Name_Not_Found:2007/02/04(日) 16:20:20 ID:???
タイムゾーンを日本時間にしてあるPC上のブラウザでサマータイムのある国の
時刻を表示するには、サマータイムの期間を調べて、サマータイム期間中は
Dateオブジェクトに1時間足すようなコードを自力で書いてやらないとだめですよね?
332Name_Not_Found:2007/02/04(日) 17:26:40 ID:bpHINXiw
連番の画像をロード時に読み込むときに、指定のサイズに縮小したいのですがうまくいきません
仕方なく表示のときにサイズを変えてみたところ画像だけ縮小されて、テーブルが実サイズにリサイズされてしまいました
ロード時にサイズを変更できればうまく行くと思うのですが何か方法はありませんか?

function setting(name, file){
  for(i=1; i<=animeMAX ; i++){
    prImg[i] = new Array();
    for(j=1; j<=fileMAX; j++) prImg[i][j] = document.createElement("IMG");
  }
  for(i=1; i<=animeMAX ; i++){
    for(j=1; j<=fileMAX; j++){
      if(j<10){
        url = file + i + "/" + name + "0" + j + ".jpg";
      }else{
        url = file + i + "/" + name + j + ".jpg";
      }
      prImg[i][j].src = url;
    }
  }
}
333Name_Not_Found:2007/02/04(日) 18:58:43 ID:???
>>331
そうですね。
334Name_Not_Found:2007/02/04(日) 19:02:03 ID:???
>>332
サイズが縦横の pixel のことなら、
その setting で height と width を設定すれば良いだけでは?
335332:2007/02/04(日) 19:47:02 ID:bpHINXiw
%指定も大丈夫ですか?
なら何とかなりそうです
336Name_Not_Found:2007/02/04(日) 20:16:33 ID:???
>>335
大丈夫だけど、DOMプロパティ(HTML属性)の場合、
CSSと比較して、定義がかなり曖昧で、実装バグの回避方法に関心がある人はほとんど居ない。
>>332
//関係ないが、明らかに無駄が多い。
//たとえば、"000" から "999" まで出力するとする。
for (var i = 0; i < 1000; i++) {//0から1000までの1001回のチェック。
  if (i < 10) print('00' + i);//0から999までの1000回がこのチェックをされる。
  else if (i < 100) print('0' + i);//10から999までの990回がこのチェックをされる。
  else print(i);
  //計 1001 + 1000 + 990 = 2991 [回] のチェック。
}
//1桁と2桁の数値より3桁の数値が多いので、逆順でチェックする。
for (var i = 0; i < 1000; i++) {//0から1000までの1001回のチェック。
  if (99 < i) print(i);//0から999までの1000回がこのチェックをされる。
  else if (9 < i) print('0' + i);//0から99までの100回がこのチェックをされる。
  else print('00' + i);
  //計 1001 + 1000 + 100 = 2101 [回] のチェック。
}
//無意味なチェックを排除するために、ループを分ける。
for (var i = 0; i < 10; i++) print('00' + i);//0から10までの11回。
for (; i < 100; i++) print('0' + i);//10から100までの91回。
for (; i < 1000; i++) print(i);//100から1000までの901回。
//計 11 + 91 + 901 = 1003 [回] のチェック。
//時間を計ってみる。
function u() {for (var i = 0; i < 1000; i++) {if (i < 10); else if (i < 100); else;}}
function v() {for (var i = 0; i < 1000; i++) {if (99 < i); else if (9 < i); else;}}
function w() {for (var i = 0; i < 10; i++); for (; i < 100; i++); for (; i < 1000; i++);}
function b(f) {var i = 0; var s = new Date; for (; i < 65536; i++) f(); return new Date - s;}
b(u);// 11563
b(v);//  9438
b(w);//  4390
337Name_Not_Found:2007/02/04(日) 21:12:47 ID:???
その分かりにくいコードより元の素直なのがなんぼもマシ。
65536回やっても1秒違わないわけだろ。
338Name_Not_Found:2007/02/04(日) 21:18:48 ID:???
>>337
ループを分けるのが判り難いとほざくのは、プログラミング歴3ヶ月以下の学生だな。
339Name_Not_Found:2007/02/04(日) 21:39:04 ID:???
変なのがいますね
340Name_Not_Found:2007/02/04(日) 21:50:03 ID:???
私なら…
for(j=1; j<=fileMAX; j++){

var numStr = "000"+j ;
url = file + i + "/" + name + numStr.substr(-3,3) + ".jpg";
prImg[i][j].src = url;

}

とか書くかな。

>>336 正直、そのコードは保守性が低くなるだけで、メリットはほとんど無い。
341Name_Not_Found:2007/02/04(日) 21:55:31 ID:???
全然違うね。コードを組んでいくと次第に混み入って来て
最後は人間の頭に載らなくなって組めなくなるだろ。その
限界に近付いた時にその中にある個々のコードの断片が
分かりやすい程全体として先まで行けるんだよ。性能が
どうとかいうのはちゃんと組めて動かせてから問題に
なるもんだろ。そしてCPU時間の90%はコードの10%の
部分で消費されるからそこだけ分かりやすさを落して
でもチューニングする。最初から個々の断片の分かり
やすさを犠牲にするなんてそれこそ素人だね。1つの
ことをやるのなら1つのループにしといた方が絶対に
読みやすいよ。いやまあ、各自組みたいように組めば
いいんだけど洩れはそう考えてるわけさ。
342Name_Not_Found:2007/02/04(日) 21:58:34 ID:???
そもそも0フィルの定石「String(10000+j).substring(1)」
とかを使うのが一番分かりやすいと思うけどな。
343Name_Not_Found:2007/02/04(日) 22:02:48 ID:???
>>341
だから、ループを分ける程度でうろたえるなよ。誰でも、ごく普通に、やることだから。JS界隈が極端に低レベルなだけなんだよ。

>>340
まず、マジレスしておくと、String#substr() は、8年前に削除されそうになったが、
古いコードを処理するために、かろうじて仕様の付録に残されたメソッドだ。
新規のコードで使う物ではない。

function x() {for (var i = 0; i < 1000; i++) ('00' + i).slice(-3);}
//次は、計測用に、その読みやすい(笑)コードに合わせて処理を追加した。
function u() {
  for (var i = 0; i < 1000; i++) {
    if (i < 10) '00' + i; else if (i < 100) '0' + i; else i;
  }
}
function v() {
  for (var i = 0; i < 1000; i++) {
    if (99 < i) i; else if (9 < i) '0' + i; else '00' + i;
  }
}
function w() {
  for (var i = 0; i < 10; i++) '00' + i;
  for (; i < 100; i++) '0' + i;
  for (; i < 1000; i++) i;
}
//ミリ秒の単純引き算をミスるほど、差1秒以内に拘る>>357の為に、8192回にした。
function b(f) {var i = 0; var s = new Date; for (; i < 8192; i++) f(); return new Date - s;}
//結果。
b(u);// 1453
b(v);// 1187
b(w);//  546
b(x);//26593 ぉぃぉぃ、こんな読みやすい(笑)コード書くなよ、プログラミング初心者の>>340
344Name_Not_Found:2007/02/04(日) 22:08:06 ID:???
昔、Z80とかの非力なCPUで、どうしてもチューニングしなきゃならんときに、そう言う手法は使ったが…
さすがに、今、しかもユーザーサイドのスクリプト言語でやろうとは、思わんな。
345Name_Not_Found:2007/02/04(日) 22:28:52 ID:???
性能のために読みにくくするというのが時代錯誤。
ループ1個を2つに分けたら「読めなくなる」わけはない
けど「読みにくい方向への手直し」だから時代錯誤。
346Name_Not_Found:2007/02/04(日) 22:30:12 ID:???
うはキモさが増した
347Name_Not_Found:2007/02/04(日) 22:39:05 ID:???
>>336,343

それ、1ページに何枚画像表示するつもりの計算なの?
348Name_Not_Found:2007/02/04(日) 22:41:43 ID:???
JS が遅れてるって普段どんな高尚な言語使ってんだよ
今時のコンパイラは固定回数のループは勝手に書き換えるしな

少しでもコーディングを楽にしようって
富豪的プログラミングに移りつつある中で
時代錯誤もいいとこだよ
349Name_Not_Found:2007/02/04(日) 22:44:40 ID:???
>>1
・対象環境や使用技術は質問者の裁量であることを理解する者
ってあるだろ。あとは質問者が選べば。言い合いの煽り合いなんて
意味ないもん。主張があれば言えばいいだけで。
350Name_Not_Found:2007/02/04(日) 22:46:27 ID:???
>>348
JavaScriptの処理系がそれをやってないことくらい分かれよ馬鹿。
351Name_Not_Found:2007/02/04(日) 22:46:52 ID:???
少なくとも今の件では、場合分けをループ内で行う理由が無いのだから
ループを切り分けるのは自然な思考だと思うが。
だから>>336の保守性が低いとは思えん。
削れるところで削っておいて損はない。

俺はループのネストが読みやすいとは思わないな。
352Name_Not_Found:2007/02/04(日) 22:50:32 ID:???
>>350
じゃあどんな言語が高レベルなんですか。
インタープリタ言語で何が高レベルなんですか馬鹿。
353Name_Not_Found:2007/02/04(日) 22:52:26 ID:???
webプログラミングだって事、理解してんのかねぇ…

あきらかに、常識外れの想定して、"遅い"だの"効率が悪い"だの言ってるけど、
常識内の想定なら、コード量減らして、通信容量の心配した方が良いんじゃねーの?としか思えんがな…
354Name_Not_Found:2007/02/04(日) 22:54:50 ID:???
>>353
コード量が増えてるか?
俺はわざわざ条件処理の回数を厳密に書いてやったが、文字数も数えてやった方が良いのか?
355347:2007/02/04(日) 22:59:19 ID:???
>>354
いい加減、発想が時代遅れだって理解しろよ。

数レス前にした質問を繰り返すけどさ、おまえさんの想定している画像の表示枚数は、1ページに何枚だ?
356Name_Not_Found:2007/02/04(日) 23:01:58 ID:???
>>354
比べてみれば?

>>340や、>>342が示したコードと、君の"正しい"コードと。
357Name_Not_Found:2007/02/04(日) 23:06:09 ID:???
>>355
>>336
>//関係ないが、明らかに無駄が多い。
>//たとえば、"000" から "999" まで出力するとする。

画像?計時して分かりやすいように別の状況を想定しただけだが、何を言いたいんだ?

まあ、好きにしろ。あまり叩くと、読みやすい教の洗脳が深まるだけだから、やめといてやるよ。

あと、テキストファイルの転送速度がネックになるのは皆無だ。それこそ、時代錯誤だぞ。
ウェブページで最大のネックは、描画速度だ。
結局、好きに書け、>>340みたいな醜態を晒さない程度に、という結論になっても、それはそれで正しい。
が、ループを分ける、ていどでうろたえるなよ、とだけ繰り返しておこう。頭悪すぎるぞ(あ、また叩いて洗脳深めちゃうなw)
358Name_Not_Found:2007/02/04(日) 23:08:28 ID:???
ウェブで最大のボトルネックは
リッチコンテンツの転送速度でしょ
359Name_Not_Found:2007/02/04(日) 23:08:56 ID:???
自分の主張が通らなかったとかいって未練たっぷりだねえ。
ご愁傷様。いちおう2ちゃんらしい煽りでした(w
360Name_Not_Found:2007/02/04(日) 23:09:41 ID:???
ああこういう老害いるいる
こういうひとは「勉強になります大将」とか言ってお茶濁しとけばいいんだよ
361Name_Not_Found:2007/02/04(日) 23:11:45 ID:???
ID出ない板は無駄に疲れる
362Name_Not_Found:2007/02/04(日) 23:12:08 ID:???
>>357
実用上全く問題にならない"無駄"を"正しいスクリプトで改善"する為に、直接、金の絡む、通信容量の心配なんて、大した問題では無い。

こう言う結論ですね。
363Name_Not_Found:2007/02/04(日) 23:12:16 ID:???
>>358
話拡げるなよ負け犬の詭弁野郎が。
364Name_Not_Found:2007/02/04(日) 23:14:05 ID:???
はい煽り合いのレス無駄づかいおしまいね。どうせまた
再発するだろうけど。過去にも何回もやってる論争だしね。
過去にどういう風に終わったか見とくといいんじゃないですかね。
365Name_Not_Found:2007/02/04(日) 23:15:08 ID:???
>>362
さすがに>>340みたいなのは問題になる。同じテストを非力なマシンでやれば数分かかるか、フリーズする。
366Name_Not_Found:2007/02/04(日) 23:18:26 ID:???
fileMaxの値によるんでしょ。それで終わりでいいじゃん。
367347:2007/02/04(日) 23:20:18 ID:???
>>365

だからさぁ…、どういう想定してるわけ?

よーーーく、考えてみなよ。

たとえば、1ページで1000枚のサムネイルを表示するとしよう。
私なら、こう言う、"お前馬鹿だろ?"と。
368Name_Not_Found:2007/02/04(日) 23:21:16 ID:???
だからfileMaxの値によるんでしょ。レスの無駄使いやめようよ。
369Name_Not_Found:2007/02/04(日) 23:21:32 ID:???
>>363
Opera とか使ってみるといいよ。

html を解析して DOM を構成して
DOMContentLoaded でごそごそやった後に
後から画像が差し込まれる。

ミリ秒をちまちま削ったところで
画像一個で相殺される。
370Name_Not_Found:2007/02/04(日) 23:24:43 ID:???
つうか、洗脳が深いな。客観的に見てみろ。
高性能なマシンが普及した。これは事実だ。
しかし、JavaScript も JScript も、後方互換のしがらみで、大きな進化はしてないよ。
JScript はいつまでたってもキャシュすべきところをそうしない。
JavaScriptで変数やプロパティの宣言順序を気にしなくてよくなったのはつい最近だ。
つまり、コード書く人間の助力が大いに必要なんだよ。

あと、読みやすいコードを書いているんじゃなくて、暗記できた短い構文をスラスラ反芻してるだけだろ。
勿論、そういう気楽さを否定するつもりもないし、可能な限り楽をすれば良いと思うが、
それを処理するエンジンがレガシーを引きずっているのだから、机上の空論でしかないんだぞ。
371Name_Not_Found:2007/02/04(日) 23:25:19 ID:???
さあ>>363が顔を真っ赤にして言い返す文句を考えていまつ。
しばらくお待ちくださいなのでつ。
372Name_Not_Found:2007/02/04(日) 23:26:11 ID:???
もうやめようってば…
373Name_Not_Found:2007/02/04(日) 23:26:47 ID:???
>>369
>>357
>ウェブページで最大のネックは、描画速度だ。
374Name_Not_Found:2007/02/04(日) 23:26:50 ID:???
自分の主張だけが客観的だと主張する主観。
375Name_Not_Found:2007/02/04(日) 23:28:42 ID:???
ソフト書きで最大のコスト要因は人間の作業時間だという「常識」が
分かってないだけでしょ。
376Name_Not_Found:2007/02/04(日) 23:29:34 ID:???
自演って気づいてないのが自分だけってのもすごいな
377Name_Not_Found:2007/02/04(日) 23:32:28 ID:???
さてここで質問しよう。2つのプログラムAとBは客の注文を
同じように満たす。Bの方が20%ほど速い。Aの方が通読して
理解するのに20%ほど短い時間で済む。あなたならAとBの
どっちを選びますか。20%の速さか20%の読みやすさか。
378Name_Not_Found:2007/02/04(日) 23:33:49 ID:???
>>377
そういう話じゃないだろ。
379Name_Not_Found:2007/02/04(日) 23:34:05 ID:???
>>377
話そらすな。ループを分けることのどこが読みにくいんだ。関数 w と関数 u, v とに可読性の差は無いだろう。
380Name_Not_Found:2007/02/04(日) 23:35:39 ID:???
1つの作業に1つのループの方が「洩れは」読みやすいと考えているね。
381Name_Not_Found:2007/02/04(日) 23:36:00 ID:???
俺も
382Name_Not_Found:2007/02/04(日) 23:37:38 ID:???
>>380
しかし、上位桁に "0" を詰める時、ループを分けるのはかなり普遍的なパターンだ。
逆に、この問題で、ループを分けてなかったら、今回のように指摘したくなる。
383Name_Not_Found:2007/02/04(日) 23:37:55 ID:???
分かったよ、読みやすさの感覚が他人と違うせいでこういう
論争になってるわけなのね。それでおしまいでいいじゃん。
384Name_Not_Found:2007/02/04(日) 23:40:08 ID:???
いっそループ使わなきゃいいんじゃね
385Name_Not_Found:2007/02/04(日) 23:41:09 ID:???
>>382
そうなの?どの言語で?JSだったらこのスレでは
「String(10000+j).substring(1)」とかが一番多いし短くて
読みやすいとされてるでしょ。ループ周回数がひどく多い
(今回の場合はそれはない)場合以外は無問題。他の言語だったら
sprintf()とか使うよな普通。で、どの言語の話?
386Name_Not_Found:2007/02/04(日) 23:42:37 ID:???
>>382
だから、それが時代錯誤なんだってw
387Name_Not_Found:2007/02/04(日) 23:45:19 ID:???
他人の主張も受け入れて折り合いをつけられるようにならないと
2ちゃんやっててつらいよ…
388Name_Not_Found:2007/02/04(日) 23:46:58 ID:???
>「String(10000+j).substring(1)」とかが一番多いし短くて
>読みやすいとされてるでしょ。

多い、短い、読みやすい、全て事実だが、実行速度があまりに遅すぎる。
389Name_Not_Found:2007/02/04(日) 23:48:22 ID:???
>>388
だからそれを何回実行するかで取捨選択すればいいんでしょ。
10回とか100回でも絶対不可だと主張しやすか?本当に?
390Name_Not_Found:2007/02/04(日) 23:48:42 ID:???
>>388
おまえのコンピューターは、4004でも積んでるのか?
391Name_Not_Found:2007/02/04(日) 23:49:14 ID:???
392Name_Not_Found:2007/02/04(日) 23:51:05 ID:???
つまりたとえ10回しか実行しなくても遅いと思うだけで
激しく嫌悪感がつのって受け入れられないと。それなら
そういう人間なんだから自分で他の方法を使うのはしかた
ないけど、それを他人に押しつけないでくれ。迷惑だから。
393Name_Not_Found:2007/02/04(日) 23:55:26 ID:???
老害
394Name_Not_Found:2007/02/04(日) 23:59:34 ID:???
計ってみたが 1552:521 でたった3倍しか違わなかった。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<script type="text/javascript">
var a = new Array(100000);
var t1 = new Date().getTime();
for(var i = 0; i < 100000; ++i) a[i] = String(1000000+i).substring(1);
var t2 = new Date().getTime();
var i = 0;
for( ; i < 10; ++i) a[i] = "0000" + i;
for( ; i < 100; ++i) a[i] = "000" + i;
for( ; i < 1000; ++i) a[i] = "00" + i;
for( ; i < 10000; ++i) a[i] = "0" + i;
for( ; i < 100000; ++i) a[i] = String(i);
var t3 = new Date().getTime();
document.write((t2-t1) + ':' + (t3-t2) + '<br>');
</script>
</body></html>
395Name_Not_Found:2007/02/05(月) 00:00:15 ID:???
まあいいじゃないか、どんな方法でも
そのときそのときによって使い分けるのが
賢いプログラミングというものだ
396Name_Not_Found:2007/02/05(月) 00:03:55 ID:???
>>395 がいいことを言った!
397Name_Not_Found:2007/02/05(月) 00:08:09 ID:???
こんな論争で60レスも浪費しちゃったよ…
398Name_Not_Found:2007/02/05(月) 00:17:45 ID:???
>>394
環境は?
399Name_Not_Found:2007/02/05(月) 00:24:52 ID:???
どんな環境でも比率として3倍
400Name_Not_Found:2007/02/05(月) 00:26:20 ID:???
Mac mini G4-1.42GHz mem1GB
-Firefox2
 2170:1154
-Safari
 26518:9526

Firefoxはたいしたものだ 2倍しか違わん
Safariは糞だな
まあこんだけ回せれば十分だろうが
401Name_Not_Found:2007/02/05(月) 00:30:04 ID:???
>>399
Fx2 1047:547 (やる度に結果が違うが、だいたいこのくらい)
IE6 4219:4813 (IE、遅いっす。と言うか、IE、subStrの方が速いっす。)
402Name_Not_Found:2007/02/05(月) 00:34:45 ID:???
Operaもやってみたっす。
Opera9.02 1360:4156 (やっぱり、subStrの方が速いっす。)

Fx2ループ分割、爆速っす。
403Name_Not_Found:2007/02/05(月) 00:40:07 ID:???
【 結論 】
開発で重要なのは老害の思い込みではなく、
想定環境に応じたテストケースの結果と、高速化の必要性を天秤にかける事
404Name_Not_Found:2007/02/05(月) 00:42:58 ID:???
正直、スクリプト言語で、こんな方法の高速化をしなきゃならない状況になったら、
それは、根本的に設計がおかしいか、言語の選択を間違っているか、どちらかだと思う。
405Name_Not_Found:2007/02/05(月) 00:45:42 ID:???
substr() に対して配列の処理のウェイトが大きいんじゃないか?

>>343 見たらゼロ埋めしたあと何もしてないんだな。
差を大きく見せるためだけの無意味なコードか。
406Name_Not_Found:2007/02/05(月) 00:51:02 ID:???
>>404
根本的に進化してないって言ってるだろ。だから人力が重要だって……。

>>405
アホがおかしなこと言うなよ。いわば定数項を削除して、できるだけ純粋な差を知るためだろ。
407Name_Not_Found:2007/02/05(月) 00:58:52 ID:???
>>405
substr() は仕様本文には無いと少し前にも言ったんだが。
つうか、>>394 にsubstr() は無いだろ。常連どもが使うわけがないから。
408Name_Not_Found:2007/02/05(月) 00:59:26 ID:???
また来たか
409Name_Not_Found:2007/02/05(月) 01:01:24 ID:???
すんまそん、substringですね、何となく打ち間違えて
そのまま動いてしまうので間違いに気がつかないという。
410Name_Not_Found:2007/02/05(月) 01:02:03 ID:???
以後、放置で。
411Name_Not_Found:2007/02/05(月) 01:03:19 ID:???
放置了解一人目
ノシ
412Name_Not_Found:2007/02/05(月) 01:03:44 ID:???
それでループ回数が10回とかでもsubstring()拒否な訳?
413Name_Not_Found:2007/02/05(月) 01:03:54 ID:???
そのうち「>>395を8192回読め」という書き込みが繰り返されそうで怖いな
414Name_Not_Found:2007/02/05(月) 01:07:47 ID:???
>>407
いろいろ試してみたんだが、おまえOperaで計っただろ。

Operaは、sliceが異様に重いぞ。Fx2で計ってみろ。ついでにIEでも。
415Name_Not_Found:2007/02/05(月) 02:05:49 ID:???
onload = function()
{
document.body.innerHTML = document.body.innerHTML.replace(/文字/gi, '<a href="hogehoge.html">文字<\/a>');
}

これが上手く機能しないんですが、どこが駄目なんでしょうか?
416Name_Not_Found:2007/02/05(月) 02:22:04 ID:???
問題なし

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">
<title>テスト</title>
<script type="text/javascript">
<!--
onload = function()
{
document.body.innerHTML = document.body.innerHTML.replace(/文字/gi, '<a href="hogehoge.html">文字<\/a>');
}
//-->
</script>
</head>
<body>
<p>文字文字君</p>
</body>
</html>
417Name_Not_Found:2007/02/05(月) 03:22:53 ID:???
>>416
htmlとjavascriptのcharsetが合ってないともしかして駄目ですか?
ちなみに文字の部分は記号なんですけど。
418Name_Not_Found:2007/02/05(月) 03:44:07 ID:???
>>417
>htmlとjavascriptのcharsetが合ってないともしかして駄目ですか?
なんだ?
htmlと外部jsファイルで文字コードが違うって事?
ならscriptタグにcharset指定追加しませり
419Name_Not_Found:2007/02/05(月) 05:48:02 ID:???
最近は、Jsonを使いまくってAJAXなんですが…
もうAJAJ(アジャジャ)って呼んでいいですか?
420Name_Not_Found:2007/02/05(月) 10:00:55 ID:???
>>417
まず日本語なしでやって確認すれ。それで動作すればコード問題。
コード問題を回避するには日本語文字を直接入れる代わりに
\uHHHH形式で入れればいい。終了。
421rinka:2007/02/05(月) 11:36:50 ID:b/GFT7m+
初めて、カキコミさせていただきます。

どうしても、javascriptエラーが消えず、途方にくれています。

ロールオーバーをしたいのですが、誰かがつくったソースのイメージを
いれかえただけなのですが、動かなくなってしまいました。

初歩的なミスだと思うのですか、基本的なjavascriptがわからず、
クライアントにせめられ困っています。

どなたか、エラーを直していただけませんでしょうか?

よろしくお願いいたします。
422rinka:2007/02/05(月) 11:38:09 ID:b/GFT7m+
リンクを忘れてました。すいません。。。。
こちらです。

http://www.townhoppers.com/th_test/home_en2.html?cl=2
423Name_Not_Found:2007/02/05(月) 11:38:44 ID:???
おかねはらえばやってくれるひとがいるとおもいます。
424Name_Not_Found:2007/02/05(月) 12:00:44 ID:???
>>421
誰かが作ったソース…

作者に聞けば良いだろう。当然、ライセンス受けているんだろう?
425Name_Not_Found:2007/02/05(月) 12:08:32 ID:???
動いてるじゃん
426Name_Not_Found:2007/02/05(月) 12:24:06 ID:???
普通じゃん
427Name_Not_Found:2007/02/05(月) 13:06:31 ID:???
>>421 allaboutのパクリ?なんにせよこれで金取っているとはw
    PRサイトでAjaxをメインに使うのは御法度だぜw
428Name_Not_Found:2007/02/05(月) 17:02:31 ID:???
こんにちは。
画像をクリックしたらそのクリックした座標をゲットする方法を教えてください。
画像の左上頂点を0,0とした座標です。

event.xでブラウザ全体での座標はゲットでき、
またimgをpositionアブソリュートで指定すれば、その位置との逆算から画像上の位置をゲットすることはできるんですが、
ページの構成上、positionアブソリュートは使いたくありません。

具体的にどんなことがやりたいのかというと、画像上に書かれているグラフの座標を取得してそれにより様々な結果を textarea に表示しようというわけです。
429Name_Not_Found:2007/02/05(月) 17:17:30 ID:???
>>428
img要素のoffsetTopとかoffsetLeftを取得して差し引けば
いいんでないの。
430Name_Not_Found:2007/02/05(月) 18:04:47 ID:???
>>428
<input type="image">
431Name_Not_Found:2007/02/05(月) 18:47:40 ID:???
>>430
送信とかせずに、一つのページ上(JavaScriptおんりー)でもそれが使えるでしょうか?
鯖でないローカルにおいても動作しないとダメなので。

onClickからフォームをsubmit リターンフォールすにして
GET文字列取得できるのかな?
432Name_Not_Found:2007/02/05(月) 18:57:03 ID:???
>>431
429の方法で。scrollXXXXもつかってくれ
433Name_Not_Found:2007/02/05(月) 19:04:03 ID:???
>>429 >>432
なんなんだよこれは!!!!
あのさ、




ほぼ思い通りの動作です。
大変ありがとうございました。
とほほをみていたのでoffsetTopとかが載ってませんでした。
434Name_Not_Found:2007/02/05(月) 19:18:59 ID:???
だからとほほなんか見るなとあれほど(ry
435Name_Not_Found:2007/02/05(月) 19:22:09 ID:???
ごめんなさい。てへっ
436Name_Not_Found:2007/02/06(火) 00:39:20 ID:+Hh0ICTQ
知識をお借りしたいのですが…

--------------------
<script language="JavaScript">document.write("<!--");</script>
あいうえお<br/>
<script language="JavaScript">document.write("-->");</script>
--------------------
とした時に、1行目で文法エラーとなってしまいます。

FireFoxのエラー情報によると、1行目の</script> の / の所を矢印がさしていますが、
例えば、
<script language="JavaScript">document.write("AAA!--");</script>
などとするとエラー自体は起こらなくなるので原因は <!-- だと思うのですが、
ここはどのように記述すればエラーは起こらなくなるでしょうか?

ちなみに、<!-- や &lt; などとした場合、<!-- と表示されてしまい
HTMLがコメントとならないので、駄目なようです。

すみませんがよろしくお願いします。
437Name_Not_Found:2007/02/06(火) 00:50:25 ID:???
すみません、

&lt;!-- や &amp;lt; などとした場合、<!-- と表示されてしまい…

です。
438Name_Not_Found:2007/02/06(火) 00:56:07 ID:???
>>436
普通に考えて無理だろ。
439Name_Not_Found:2007/02/06(火) 01:28:54 ID:???
JavaScript上で<!--は//と等価扱いじゃないかな。
JavaScriptでHTMLコメントを出力してどうしたいのか意味判らんけど、文字分解してinnerHTML追加したら成功したモヨリ

<div id="outputDiv"></div>
<script type="text/javascript">
outputHTML="" ;
<!-- document.getElementById("outputDiv").innerHTML = "<!-- てすと -->" ;//無視される

document.getElementById("outputDiv").innerHTML =
"test<"
+"!"
+"-"
+"- てすと -"
+"->test"
;

出力結果はsafariとfirefoxで共に「testtest」。ちゃんと「てすと」がコメントアウトされてるようだ
440Name_Not_Found:2007/02/06(火) 03:46:35 ID:TIPxpEPB
環境は、WinMe、128M、IE5.5です。

フリーのJavaScriptの使えるエディタはないでしょうか。
Aptanaというのは使ってみたのですが、
起動まで30秒ぐらいかかったり、終了するとエラーが出たり、
自分の環境には合いませんでした。
441Name_Not_Found:2007/02/06(火) 03:49:30 ID:TIPxpEPB
使えるというのは、ソースの色分けができる、
文法チェックができるなどです。
442Name_Not_Found:2007/02/06(火) 04:04:20 ID:???
>>436
\
443Name_Not_Found:2007/02/06(火) 06:14:01 ID:???
×:"<!--"
○:'<!--'
444Name_Not_Found:2007/02/06(火) 12:14:06 ID:/4F8iVui
うまくボタンにイベントを割り振ることができません。
※allBtn.setAttributes = ("onClick", "myFunc()");としても
※allBtn.onClick =  "myFunc()";としてもうまくいきませんでした。

Objectの把握の仕方が甘いためと思いますが,よろしくお願いします。

var allBtn = document.createElement("input");
allBtn.type = "button";
allBtn.id = "myBtn";
※allBtn.setAttributes = ("onClick", "myFunc()");
allBtn.value = "my button"
document.body.appendChild(myBtn);
445Name_Not_Found:2007/02/06(火) 12:18:43 ID:/4F8iVui
(本質的な部分ではないですが)
document.body.appendChild(myBtn)は
document.body.appendChild(allBtn)の書き間違えです
446Name_Not_Found:2007/02/06(火) 12:53:00 ID:???
>>444
過去レス見てみるといくらでも解決策が

それにしても、なんでFunction使ったり文字列使ったりすんのかなぁ
447Name_Not_Found:2007/02/06(火) 13:25:53 ID:???
>>444
過去レスもそうだがまずFAQ読んどけよな。
448Name_Not_Found:2007/02/06(火) 17:09:59 ID:WlZWDyXE
formItem=["あああ","いいい","ううう"]
nameItem=["aaa","bbb","ccc"]
document.myForm.aaa.value=formItem[0];

こうすると<input name="aaa" type="text" value="">に値が入るのですが、

document.myForm.nameItem[0].value=formItem[0];

こうすると入りません。配列にフォームにあるname名を指定して
documentの対象としたいのですが、上のような書き方では無理なのでしょうか?
449Name_Not_Found:2007/02/06(火) 17:12:58 ID:???
>>448
日本語がおかしくて理解できないね。HTML側も提示してみ。
450Name_Not_Found:2007/02/06(火) 17:15:26 ID:???
>>448
> document.myForm.nameItem[0].value=formItem[0];

document.myForm[nameItem[0]].value=formItem[0];
451448:2007/02/06(火) 17:20:33 ID:???
>>450
まさにこれです!うまく行きました。ありがとうございました。
452Name_Not_Found:2007/02/06(火) 17:20:44 ID:???
んー?
あー、nameItem配列1番目の名前に一致したフォーム名を取得したいって事じゃね
だとしたら答えは簡単だ

FAQ9番嫁
453Name_Not_Found:2007/02/06(火) 17:21:42 ID:???
あらぼーっとしてたら答え出てやんの
まあいいや
454Name_Not_Found:2007/02/06(火) 17:23:07 ID:???
ニヤニヤ
455Name_Not_Found:2007/02/06(火) 17:29:26 ID:???
ひとり、恐ろしく読解力の無いのがいるなw
456Name_Not_Found:2007/02/06(火) 17:31:33 ID:???
firefox2で
obj.rows[n].cells[m].style.borderBottom = "1px solid #333333";
としても下線が引けないのですがどなたか助言いただけないでしょうか。

MSIE6は無論、Netscape7.1でも問題ないのですが...orz
# style.color = "#333333" などであればfirefoxでもおkです。
457Name_Not_Found:2007/02/06(火) 17:55:32 ID:???
>>456
Firebug 入ってる?
458Name_Not_Found:2007/02/06(火) 18:07:22 ID:7qxdZ6UF
キャレット位置を取得する方法を教えてください。
以下のサイトを参考にしてみたのですが出来ませんでした。
http://blog.vishalon.net/Post/57.aspx
ソースはこんな具合です。
459Name_Not_Found:2007/02/06(火) 18:09:48 ID:7qxdZ6UF
<HTML><HEAD>
<script type="text/javascript"><!--
function setStyle() {
var divObj = document.getElementById("test2");
divObj.style.backgroundColor = "red";
divObj.style.width = 100;
divObj.style.height = 100;
}
function get(){
//var ctrl = document.getElementById("test");
document.getElementById("test2").innerHTML = doGetCaretPosition(ctrl);
}
function set(pos){
var ctrl = document.getElementById('test');
setCaretPosition(ctrl, pos);
}
function doGetCaretPosition(ctrl){
var CaretPos = 0;
if (document.selection) {// IE Support
ctrl.focus ();
var Sel = document.selection.createRange ();
Sel.moveStart ('character', -ctrl.value.length);
CaretPos = Sel.text.length;
} else if {// Firefox support
(ctrl.selectionStart || ctrl.selectionStart == '0');
CaretPos = ctrl.selectionStart;
}
return (CaretPos);
}
460つづき:2007/02/06(火) 18:13:38 ID:7qxdZ6UF

function setCaretPosition(ctrl, pos){
if(ctrl.setSelectionRange){
ctrl.focus();
ctrl.setSelectionRange(pos,pos);
}else if (ctrl.createTextRange) {
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
// --></script>
</HEAD><body>
<textarea id="test"></textarea>
<a href="javascript:setStyle()">11111</a>
<div id="test2"></div>
</body></HTML>
461436:2007/02/07(水) 01:26:41 ID:???
遅くなってすみません。

>>439さん
ありがとうございます、参考にしてinnerHTMLを編集する方法で解決しました。
助かりました!

>>442さん、443さん
元のソースでは、そのどちらの方法でも解決しなかったです…。
が、レスありがとうございました。


462456:2007/02/07(水) 09:12:15 ID:???
すいません、どうもCSSとのバッティングみたいです(お恥ずかしいことにノーマークでした)。

>>457
入れてはいるんですがアイコンが怖くてw
463456:2007/02/07(水) 09:35:33 ID:???
どうも border-collapse: collapse; が原因ぽいです。
一応報告。
464Name_Not_Found:2007/02/07(水) 11:11:08 ID:???
>>463
スレ違いだがborderをcollapseしたら確かに危うそう。
tdなりの内側に別のdivを入れてそのdivのborderを設定すれば。
465Name_Not_Found:2007/02/07(水) 12:02:38 ID:???
ニュースサイトに時々ある、
「続きを読む」をクリックすると、
別ページに移行せずに、下に続きの文章が現れるようにしたいです。

折りたたみメニューのスクリプトで表示は無事にされるのですが、
クリックしてすべての文章が表示されたときに、
「続きを読む」が「文章を閉じる」に変わるようにしたいのです。

ブログ用では、以下のスクリプトがあるようですが、
ttp://blog.livedoor.jp/jigokuhen00/archives/4465481.html

これを普通のHTMLサイト用に直すことがどうしてもできません。
どなたかアドバイスいただけないでしょうか。
やりたいのは、以下のようなことです。

最初
--------------
・最初に表示される文章<BR>
続きを読む /  日付・引用元など(最初も最後も同じ文)


「続きを読む」クリックで以下
-----------
・最初に表示される文章
・クリックで表示された文章
文章を閉じる /  日付・引用元など(最初も最後も同じ文)
466Name_Not_Found:2007/02/07(水) 12:21:08 ID:???
>>465
続きのページがどっか違う所にあってそこからひっぱってくるのか、
すでにHTMLソースに書いてあるのかで話が変わってくると思う

と言うか、まずどこまで自分で作ったのかを書いた方が良いよ
やり方一つじゃないと思うし
467Name_Not_Found:2007/02/07(水) 12:34:30 ID:???
div.style.display = (element.style.display != "none")?"none":"block"
とかかな
468Name_Not_Found:2007/02/07(水) 13:15:55 ID:???
>>465
ああ、俺よくやる
みっつの要素の表示/非表示を切り替えていくだけでできるっしょ

A・「続きを読む」
B・表示/非表示を切り替えられる文章(最初非表示)
C・「閉じる」(最初非表示)

それぞれDIVタグに格納されてるとして、
・Aが押されたらAを隠してB,Cを表示
・Cが押されたらCを隠してA,Bを表示

要素.style.display="none"←→"block"あたりで切り替える
サンプルコードは>>467氏が部分例出してるし不要かな

もっといいやりかたあんのかな
469456:2007/02/07(水) 13:59:15 ID:???
>>464
Geckoに対して

border-collapse: separate;
border-spacing: 0px;

としました。
すっかりスレ違いだけどいつか誰かの役に立てれば幸い。

# ってか、これfxのバグだよね...?
470Name_Not_Found:2007/02/07(水) 14:03:32 ID:???
CSSな話だが、border-collapseが「何をcollapse」するのか調べてみ。
471456:2007/02/07(水) 14:34:40 ID:???
>>470
助言ありがトン。

> 「何をcollapse」するのか

隣接するセルのボーダーですよね?
下線を引きたかったのはobj.rows[obj.rows.length - 1]のcellsなんで、
問題ないかと思っていたのですが...。
472Name_Not_Found:2007/02/07(水) 14:58:03 ID:???
>>471
ソースを見んことにははっきりとわからんが
十中八九Fxのバグではないと思う。
重なったボーダーの優先度とか調べてみ。
それでも疑問があったらCSSスレへどうぞ。
473Name_Not_Found:2007/02/07(水) 15:38:25 ID:???
グーグルマップがやってるようなマウスホイールの取得を実装したいのですが、検討つきませぬ。
なんぞ「ここ嫁」「これでぐぐれ」みたいなポインタあったら教えてください
474Name_Not_Found:2007/02/07(水) 15:44:02 ID:???
>>473
onmousewheel
475Name_Not_Found:2007/02/07(水) 15:44:30 ID:???
thx

ヘボシツモンスマソ
476474:2007/02/07(水) 15:45:55 ID:???
はえーよバカ。何十回リロードしてるんだ。
477Name_Not_Found:2007/02/07(水) 16:03:06 ID:???
え、いやたまたまですよ
7回くらいですけん
478Name_Not_Found:2007/02/07(水) 22:04:17 ID:???
applyを使った継承で質問があります。

var x = function() {
/* なんらかのxの実装 */
};

var y = function() {
x.apply(this);
/* なんらかのyの実装 */
};

var z = new y();

このような形の継承関係があった場合に、
「xの実装のなかでyからは見ることが出来るけれど、zからみることが出来ない」
というメンバを定義することって不可能でしょうか?
479Name_Not_Found:2007/02/07(水) 23:04:24 ID:4IIoDn4g
IEでキャレット位置を取得するのはやっぱり無理ですか?
480Name_Not_Found:2007/02/07(水) 23:36:47 ID:NajzvM24
いろいろ調べてみたのですが行き詰ったので、解決の糸口となる
キーワードだけでもご教示頂けたらと思います。

現在は
function foo(id){
    window.open("http://xxx.jps?user_id=" + id, "new_win");
}

という関数があり、これをbuttonのonclickで呼び出しているのですが
仕様変更でpostで送信しなければならなくなりました。

HTMLの部分にformを追加してsubmitする方法ならpostで送信できますが
この関数はjsp内にincludeして広範囲で利用しているため、HTML部分の
修正を含めると工数が掛かるので、なんとか現状の引数を渡す仕様で
javascriptの修正だけでpost送信できないかと試行錯誤しています。

利用するクライアントはIE6限定になっています。何卒ご教示のほど
お願い致します。
481Name_Not_Found:2007/02/08(木) 00:02:20 ID:???
>>478
それは昔俺も悩んだが、完璧な方法は思い当たらなかった。
ちなみにprototypeをつかった継承にしても同じ問題がある。
482Name_Not_Found:2007/02/08(木) 00:06:32 ID:???
>>480
べつにHTML側を直さなくてもJSでdocumentの最後にでも見えない
iframeを挿入してその中にformを作ってpostすればいいんでは。
483Name_Not_Found:2007/02/08(木) 00:10:03 ID:???
googleのキャッシュを表示したときのように
特定のキーワードの色を変えて表示させたいんですが
ぐぐるためのヒント教えてください
484Name_Not_Found:2007/02/08(木) 00:36:24 ID:???
>>483
「キーワード」 「ハイライト」
あと、DOMと正規表現つかえないときついだろうね
485Name_Not_Found:2007/02/08(木) 00:39:57 ID:???
>>484
ありがとうございます
ずっと「キーワード」「マークアップ」で検索して難儀していました
重ね重ねありがとうございます >>484様の事は決して忘れません
486Name_Not_Found:2007/02/08(木) 00:43:26 ID:???
>>482
そういうようなやり方しかないですかね。もっとスマートにできないかと
思ったのですが。しかし参考になりました。ありがとうございます。
487Name_Not_Found:2007/02/08(木) 00:56:45 ID:???
>>486
ん? いったいどうスマートにやりたいんだ?
丁度いま、DOMでformとinput要素applendChildしてsubmit()呼んでる処理書いてるけど、普通にPOSTで飛ばせてるよ。
innerHTMLでもいけると思うけど。
488Name_Not_Found:2007/02/08(木) 01:03:26 ID:???
>>478
var x = function() {
this.a = "A";
};
x.b = "B";

var y = function() {
x.apply(this);
this.bDash = x.b;
};

var z = new y();

z.a : "A"
z.b : undefined
z.bDash : "B"

こんなんで良いの?
489Name_Not_Found:2007/02/08(木) 01:07:11 ID:???
>>486
XMLHttpRequest 使えば?
490Name_Not_Found:2007/02/08(木) 01:15:17 ID:???
>>488
それだと仮にx.bがfunctionだった場合、x.bからxのスコープが見えないから一般的には駄目
491Name_Not_Found:2007/02/08(木) 01:22:14 ID:???
>>488
レスありがとうございます。

しかしその場合、たとえば
var x = function() { var str = "test"; };
x.setStr = function(v) { str = v; }; // error
という問題があったり、

var x = function() { this.a = "A"; };
x.setA = function(v) { this.a = v; }; // 想定外
という問題があり、関数が絡んで同じクラスのメンバを使おうとすると困ってしまいます。
492Name_Not_Found:2007/02/08(木) 01:28:52 ID:???
>>491
えーと、良くわかんないんだけど、xの一部分だけ継承したい?と言う要求?
493Name_Not_Found:2007/02/08(木) 01:48:34 ID:kaj/iayM
IEでキャレット位置を取得する方法を聞いても、みんなが見事にスルーする理由はなんですか?
494Name_Not_Found:2007/02/08(木) 01:53:44 ID:???
>>493
タイミングの問題。
テキスト入力欄での話ならcreateTextRangeでググれ。
495Name_Not_Found:2007/02/08(木) 10:45:17 ID:???
javaソースとか探して張りつけてるだけのエセjava使いなんですけど

1からちゃんと勉強したいと思い参考サイトを見ようと思ってるのですが
どこかわかりやすくてお勧めのところはないでしょうか?
テンプレにあるもの意外をお願いします。

ちなみに貧乏なのであまりお金の掛かるものはなしでお願いします
496Name_Not_Found:2007/02/08(木) 11:02:23 ID:???
497Name_Not_Found:2007/02/08(木) 11:18:14 ID:???
とほほ
498Name_Not_Found:2007/02/08(木) 11:28:10 ID:???
オライリーのサイ本。
図書館で借りれ。
499Name_Not_Found:2007/02/08(木) 11:35:26 ID:???
>>495
ここではサイ本とMy UNIX(入門JavaScript)が肯定されてるね。
サイ本は高くMy UNIXのが安い。errataはここ。
ftp://ftp.ascii.co.jp/pub/my-unix/javascript/
>>497
とほほで勉強するのは勧めないね。半可通になってここで
叩かれたいなら別だが。
500Name_Not_Found:2007/02/08(木) 11:42:40 ID:???
>>499
なにマジレスしてんの馬鹿じゃないの
501Name_Not_Found:2007/02/08(木) 11:54:12 ID:???
>>493
とりあえず作ってみたけどー。IE専なんであんまりやる気出ず。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
var r0 = document.selection.createRange(), l0 = r0.text.length;
while(true) {
r0.moveStart('character', -1); var l1 = r0.text.length;
if(l0 == l1) break; else l0 = l1;
}
alert(l0);
}
</script>
</head><body>
<div><textarea id="a0" rows="10" cols="20" onmouseup="test()"></textarea></div>
</body></html>
502Name_Not_Found:2007/02/08(木) 11:59:36 ID:???
>>500
参考書を求めたいという話題だったら元質問がネタだろうと
それと関係なくここを見てるヤシもいるんだからマジレス
するよ。過去何十スレもずっとそうしてるしね。アンタのが
このスレを分かってないだけだろ、よそ逝ってくれ。

もしかしてとほほの信奉者だったりして(だったら劇藁だな)。
おお、2ちゃんらしくなってきたねー。
503Name_Not_Found:2007/02/08(木) 12:28:04 ID:???
(;^ω^)
504Name_Not_Found:2007/02/08(木) 12:30:00 ID:???
>>502
何マジレスしてんの馬鹿じゃないの
505Name_Not_Found:2007/02/08(木) 12:30:44 ID:???
おお、2ちゃんらしくなってきたねー。(笑)
506Name_Not_Found:2007/02/08(木) 12:36:47 ID:???
>>487
目からウロコが落ちました。
本当にありがとうございました。
507Name_Not_Found:2007/02/08(木) 13:02:37 ID:???
>> >>478とそれにレスしてる全員
過去にも言ったが、それを継承とは言わないから。
例えば、>>478 で、z instanceof x は false だわな。継承してない。
継承の中で使われることが多いが、それ自体は継承ではない。
つまり、「apply を使った継承」 という言葉自体が意味不明だ。
いちいち、this.a = a; this.b = b; this.c = c; ... と書くのが面倒かつ変更時に弱いから、
(利用したい関数).apply(this, arrayLike) と書くだけだ。
508Name_Not_Found:2007/02/08(木) 13:17:55 ID:???
>>507
継承ってのは、単にオブジェクト指向の概念の一つで、 instanceof の結果とは関係ないから。
509Name_Not_Found:2007/02/08(木) 13:40:47 ID:???
>>507
> 過去にも言ったが、それを継承とは言わないから
(笑)
510Name_Not_Found:2007/02/08(木) 13:42:43 ID:???
俺様口調でトンチキな事言う程恥ずかしい事は(ry
511Name_Not_Found:2007/02/08(木) 13:57:40 ID:???
instanceofって、何の話をしているのやら
ECMA262-3rd以外の話をしたいならオナニースレ行けよ
512Name_Not_Found:2007/02/08(木) 14:44:18 ID:???
話逸れるけどECMA-262thirdのLanguage Specification pdfに
しっかりinstanceof入ってますよこの半可通
513Name_Not_Found:2007/02/08(木) 14:54:56 ID:???
>>512
すまんしらんかった
514Name_Not_Found:2007/02/08(木) 15:49:26 ID:???
半可通
515Name_Not_Found:2007/02/08(木) 16:21:36 ID:???
半可通のお笑い種発言に半可通が突っ込むという体たらく

まあ典型的な2chの日常風景
殺気立つ必要はあるまいて
マターリ殺伐しようぜ
516Name_Not_Found:2007/02/08(木) 16:29:26 ID:???
この流れなら宣伝できる。
言語の話ならム板もあるよ。
ECMAScript デス 2
http://pc10.2ch.net/test/read.cgi/tech/1088298991/
517Name_Not_Found:2007/02/08(木) 16:39:23 ID:???
>>516
さてはこの流れお前の自演か
518Name_Not_Found:2007/02/08(木) 16:52:50 ID:X2VYdmsf
極希なんですが、子windowから親windowにsubmitしようとすると
新しいwindowが立ち上がってしまいます。本当にたまにしか起こらないので
再現もできないし原因も分かりません。環境はWIN2KにIE6です。

考えられる原因があれば些細な事でも構わないのでヒントをください。
519Name_Not_Found:2007/02/08(木) 17:49:17 ID:h5cgyBZ9
ページが読み込まれたら下のフレーム(bottomFrame)に
URLを表示させたいと思います。
<script type="text/javascript">
var url="http://2ch.net";
function bottom_url(){
location=url;
}
</script>

これだと開いているページ内が移動されますが、
フレームのページに移動されません。
ターゲット指定するにはどのように変えればいいのでしょうか?
520Name_Not_Found:2007/02/08(木) 18:55:49 ID:???
JavaScriptのみで完全にユニークなIDって作成できるんでしょうか。
今まではnew Date().getTime()を利用していたのですが、
コンフリクトを起こしてしまいました…
サーバサイドに手を入れることなく、ユニークなIDをつくりたいのですが、
ちょっとやり方が思い浮かびません。どなたかアイデアあれば是非ください
521Name_Not_Found:2007/02/08(木) 18:57:14 ID:???
parent
top
あたりをググれ
522Name_Not_Found:2007/02/08(木) 19:05:29 ID:???
>>520
何と何を一意に区別するIDなのかわからんが、
鯖側からなんらかの情報をもらわなければ本当にユニークな方法はない。
cookieにsessionidでも入ってればそれとDate方式の複合でなんとか。
コンフリクトを減らすだけならランダムな文字なりつける。
523Name_Not_Found:2007/02/08(木) 19:07:18 ID:Y8HJ/jgW
とりあえずcreateRangeでグぐってみたけど、わんないよ。
これで出来る、とかいって、全然出来てないのばかり。
キャレットの所得のしかた教えてください。

とりあえず参考http://d.hatena.ne.jp/brazil/20061021/1161377936をにして作ってみたけど、これじゃ選択範囲だよ。
524Name_Not_Found:2007/02/08(木) 19:08:18 ID:???
>>520
Uniq_Id_1 とかで、カウントアップすれば?まぁ、オーバーフローすれば、被るけど。
525Name_Not_Found:2007/02/08(木) 19:09:19 ID:???
>>520
無理だろ、常識的に考えて
まあ、getTime+それ以外の情報(UA、ページロードタイム、ウィンドウサイズ、ウィンドウ座標、マウス座標、ランダムな大きい数値とか)を元にIDを生成すればコンフリクトは確率的には少なくなるだろうね
要はIDを長くするor変化させるという一時しのぎ。やっぱり、CGIが使えないときつい
526523:2007/02/08(木) 19:12:35 ID:Y8HJ/jgW
<script type="text/javascript"><!--
function replace_css(textObj){
var sValue = textObj.value;
var iNewSelectionStart = textObj.selectionStart;
var iNewSelectionEnd = textObj.selectionEnd;
if(typeof iNewSelectionStart != "number"){
var rngObj_S = document.selection.createRange();//選択範囲Object(textRange)
var rngObj_A = textObj.createTextRange();//textarea内Object(textRange)
var rngObj_B = textObj.createTextRange();//同上
var iMaxIndex = rngObj_A.text.length;//textarea内文字数
var Left = rngObj_S.offsetLeft;//選択領域の左側の位置
var Top = rngObj_S.offsetTop;//選択領域の上側の位置
rngObj_B.moveToPoint(Left,Top);//座標移動(x:横座標,y:縦座標)
rngObj_A.setEndPoint("StartToStart", rngObj_B);//
var iIndex = iMaxIndex - rngObj_A.text.length;
//最後尾の改行計算バグ補正
if(iIndex == iMaxIndex){
var rngObj_T = textObj.createTextRange();
rngObj_T.collapse(true);
rngObj_T.setEndPoint("EndToStart", rngObj_A);
var iCount = 0;
while(rngObj_T.expand("character"))
iCount++;
iIndex += ((sValue.length - iIndex) - iCount*2);
}
iNewSelectionStart = iIndex;
iNewSelectionEnd = iNewSelectionStart + rngObj_S.text.length;
}
document.getElementById('a').innerHTML = iNewSelectionStart;
document.getElementById('b').innerHTML = iNewSelectionEnd;
}
// --></script>
527Name_Not_Found:2007/02/08(木) 20:04:11 ID:???
>>523
あんたの言う「キャレットの位置」って何なの?
先頭から何文字目にキャレットがあるかわかればいいの?
それとも何行目の何桁目という形で取得したいの?
はたまた上端から何ピクセル、左端から何ピクセルかが知りたいの?
528Name_Not_Found:2007/02/08(木) 22:45:48 ID:kaj/iayM
>>527
「先頭から何文字目にキャレットがあるか」でお願いします。

レスくれてありがとう。
529Name_Not_Found:2007/02/08(木) 23:02:36 ID:???
結局 >>501 は無視ですかそうですか。まあいいんだけど。
530Name_Not_Found:2007/02/09(金) 00:05:48 ID:???
質問させてください。
RegExpで「直前にaが無いb」にマッチさせるにはどうすればいいんでしょうか?
例えば"abcbb"の最初のbはスルーして2番目と3番目のbにだけマッチさせたいんですが。
否定後読みってのを使えばよさそうってとこまでわかったんですがうまくいきません。
531Name_Not_Found:2007/02/09(金) 00:22:48 ID:???
>>529
まあいいなら書くなよ
うぜーな、この構ってチャンが
532Name_Not_Found:2007/02/09(金) 00:23:47 ID:???
>>530
スレ違い。だから答えはずばり教えてあげないけど、[^a]をうまく使って書け
533Name_Not_Found:2007/02/09(金) 00:56:13 ID:???
>>532
それは駄目じゃないの。"abcbb".replace(/[^a]b/g, "B") → abcBb
534Name_Not_Found:2007/02/09(金) 00:58:12 ID:???
しまった間違えた、でも駄目なのに変わりはないような。
"abcbb".replace(/([^a])b/g, "$1B")
535Name_Not_Found:2007/02/09(金) 01:28:32 ID:???
JavaScriptでもJScriptでも戻り読み「(?<=...)」はサポートされてないからな。
工夫して切り抜けるしかないんじゃね?
"abcbb".replace(/b/g, function(match, index, input){ return input.charAt(index-1) == 'a' ? match : 'B'; });
536Name_Not_Found:2007/02/09(金) 01:30:54 ID:???
おっと、この場合は「否定戻り読み『(?<!...)』はサポートされてないからな」というべきだったか。
537Name_Not_Found:2007/02/09(金) 10:35:01 ID:9PFIRdfj
>>4のQ9に似ているのですが…
document.forms["myform"]elements[hogeghoge]

の「hogehoge」の部分に 配列を格納した変数「hoge[x]」を入れたいのですが
うまくいきません
[`hoge[x]`]とクウォートで囲んだり [hoge][x]としてみましたが どうしても
エラーになります
何か良い方法はありますでしょうか? ご教授いただけるとうれしいです
538Name_Not_Found:2007/02/09(金) 10:40:59 ID:???
["hoge[0]"]
["hoge[1]"]
var x = 0; ["hoge[" + x + "]"]
539Name_Not_Found:2007/02/09(金) 10:41:59 ID:???
>>537
document.forms['myform'].elements[hoge[x]].value
とかだよね。elementsの前の「.」が抜けてるぞボケ!!!!
(このスレでは「ご教示」でないと煽られるので注意)
540Name_Not_Found:2007/02/09(金) 10:43:08 ID:???
>>537
近道しようと思わないで、リファレンスを読みましょう。
ttp://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide

初心者が近道だと思っている道は、ほぼ間違いなく、迷路です。遠回りに見えても、本道を歩きましょう。それが、一番の近道です。
541537:2007/02/09(金) 10:51:17 ID:???
>>538
ありがとうございます 僕の理解力が悪いのか
document.forms["myform"].elements["hoge"+x+"]"]
ではエラーが出ました

>>539
二つもボケをかましてしまいすいませんでした
「ご教示」ですね 気をつけます!

>>540
おっしゃるとおりですね…
リファレンスをじっくり読んできます!

皆さんありがとうございました!
542Name_Not_Found:2007/02/09(金) 11:08:11 ID:???
> elements["hoge"+x+"]"]
すごい頻度でミスるな。コピペもできなきゃ手の施しようがない。

つうか、["hoge[x]"] なんだろうな、たぶん。HTML見せれば即決するが、アホらしゅうて誰も回答しないかw
543543:2007/02/09(金) 14:33:13 ID:S700YF3q
フレームを使って左にメニュー(menu)、右に本文(view)を表示させてます
メニューのフレームで
<span onClick='top.view.window.location.replace("http://www.yahoo.co.jp/");return false;'>別サイト</span><br>
<span onClick='top.view.window.location.replace("test.html");return false;'>同じサイト</span><br>
と記述して「別サイト」をクリックしたら本文の方にヤフーを表示
「同じサイト」をクリックしたら本文の方に自サイトのhtmlを表示させたいです

「同じサイト」クリック後「別サイト」クリックはきちんとヤフーが出ます
「別サイト」クリック後「同じサイト」クリックだとtest.htmlに遷移しません
<a>タグ等では普通にヤフーに遷移することが出来ます
なお、IEでは上記の様になりましたがネスケでは正常に動作します

過去ログは「location.replace 別サイト」で検索しましたが特に良さそうな例は見つかりませんでした
ご教授お願いします
544Name_Not_Found:2007/02/09(金) 15:45:09 ID:???
top.frames['view'].location.reprace〜
若しくは
top.view.location.replace〜

「window」は最上位オブジェクトですよ。
545Name_Not_Found:2007/02/09(金) 16:02:08 ID:???
>>543
へーIEってそうなんだ。「.window」だけ削除したら動くとか?
546543:2007/02/09(金) 17:09:30 ID:O8ViFILf
あ、なるほど。了解しました。助かりました〜

>>545
とりあえずスッキリしたソースが好きなので下でキチンと動きました
547530:2007/02/09(金) 18:35:29 ID:???
ありがとうございました。
否定戻り読みはサポートしてなかったんですね。
548Name_Not_Found:2007/02/09(金) 23:24:29 ID:x0BV8VZb
質問です。
HTMLにタグを貼るとき
<script src="AAAA.js" type="text/javascript"></script>
<script src="BBBB.js" type="text/javascript"></script>
<script src="CCCC.js" type="text/javascript"></script>

↑を↓みたいにできませんか?

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

(BBBB.js と CCCC.js は AAAA.jsから読み込む)


javascriptからjsファイルを読み込む方法が分かりません
549Name_Not_Found:2007/02/09(金) 23:25:57 ID:d1B/kzU0
質問です。
Select要素の中の要素をすべて削除して、
新しい要素を追加したいのですが、

for(i = 0; i < selO.length; i++){
child = selO.child(i);
selO.removeChild(child);
}

だと、全部消えてくれません。

知りたいのは、
すべての子を一気に消す方法はないか。
ないなら、どういう方法が一般的か。
なぜ、上のコードで、すべて消すことができないのか。
の3点です。

宜しくお願いします。
550Name_Not_Found:2007/02/09(金) 23:25:58 ID:???
>>548
document.write('<script src="BBBB.js" type="text/javascript"></script>')
document.write('<script src="CCCC.js" type="text/javascript"></script>')
551Name_Not_Found:2007/02/09(金) 23:29:13 ID:???
>>549
後ろから消しなよ

あと個人的にあまり好きじゃないんだが
piyo.length = 0 で全部消える
552Name_Not_Found:2007/02/09(金) 23:31:25 ID:???
>>550
天才ですね
目から鱗です
553548=552:2007/02/09(金) 23:31:51 ID:???
です
554Name_Not_Found:2007/02/09(金) 23:33:55 ID:d1B/kzU0
>>551
あぁ、0から消すと、1にあったのが0にズレるんだ?
先入れ後出しでつね。
ありがとうございます。
555Name_Not_Found:2007/02/09(金) 23:36:22 ID:???
>>549
<script type="text/javascript">
function kaeru(){
var selO = document.getElementById("selO");
var cloneSelO = selO.cloneNode(false);

cloneSelO.appendChild(document.createElement("OPTION"));
cloneSelO.lastChild.text = "変更した";
cloneSelO.appendChild(document.createElement("OPTION"));
cloneSelO.lastChild.text = "変更した";

selO.parentNode.replaceChild(cloneSelO, selO);
}
</script>
<select id="selO"><option>変更前</option><option>変更前</option><option>変更前</option></select>
<input type="button" value="替える" onclick="kaeru()">
556Name_Not_Found:2007/02/09(金) 23:42:32 ID:d1B/kzU0
>>555
selectコピって、新しく中身作って
select置き換えるのか。

これはいいですね。

さらによく見てみると、selectの属性とか変更される可能性ないんで
置き換えだけでよさそうです。
ありがとうございます。
557Name_Not_Found:2007/02/10(土) 02:53:28 ID:???
blogの「続きを読む」の折りたたみをメニューに使用して何階層にもしてるんですが
http://www2f.biglobe.ne.jp/~takan/javac/dhtml/ie/dh_display_contents1.htm

全部クリックすると出っ放しでズルズル長くなるので、
一つクリックして表示したら他の階層を閉じられるようにしたいのですが、
JavaScriptで何とかならないでしょうか。
よろしくお願いします。
558Name_Not_Found:2007/02/10(土) 04:27:46 ID:???
>>557
<SCRIPT Language="JavaScript">
<!--
idlist = new Array('dh1','dh2');

function show_hide(id) {
for(n=0; n<idlist.length; n++) {
if(id==idlist[n]) {
disp = document.all(id).style.display;
if(disp == "block")
document.all(id).style.display = "none";
else
document.all(id).style.display = "block";
} else {
disp = document.all(idlist[n]).style.display;
if(disp == "block")
document.all(id).style.display = "none";
}
}
//-->
</SCRIPT>

これくらいしか思い付かない。
559Name_Not_Found:2007/02/10(土) 04:29:31 ID:???
>>558

disp = document.all(idlist[n]).style.display;
if(disp == "block")
document.all(idlist[n]).style.display = "none";
}
}
//-->

少し訂正。
560Name_Not_Found:2007/02/10(土) 05:54:48 ID:Idxi/UCG
キャレット位置は取得できないでFAですか?
561Name_Not_Found:2007/02/10(土) 06:18:20 ID:???
いつも中入れ中出しでつ。
562Name_Not_Found:2007/02/10(土) 06:43:41 ID:???
>>560
あんたとこでは >>501 は動作しないのね?
563Name_Not_Found:2007/02/10(土) 08:33:09 ID:6HBejGjf
>>560
アホ?それとも釣り?
564Name_Not_Found:2007/02/10(土) 09:22:50 ID:???
>>563
いや… IE6しか持ってないんで、手元のIE6では動いている
んだけど何か動かないとこがあるのなら知りたいなと。
565Name_Not_Found:2007/02/10(土) 10:42:32 ID:???
テキストボックスじゃなくて、「普通の文章を選択状態にする」方法あります?
一応調べて無理っぽいとは思ったんですが、もし知っている方がいれば。
566Name_Not_Found:2007/02/10(土) 11:17:53 ID:???
画面全体をreadonlyのtextareaにするとか
567Name_Not_Found:2007/02/10(土) 12:03:32 ID:???
>>565
これもIE6でしかテストしてないけど。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
var r0 = document.body.createTextRange();
r0.findText('鉛筆'); r0.select();
}
</script>
</head><body onload="test()">
<p>これは鉛筆です。</p>
</body></html>
568Name_Not_Found:2007/02/10(土) 12:15:00 ID:???
>>567 Geckoのコードも追加した。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
if(document.body.createTextRange) { // IE
var r0 = document.body.createTextRange();
r0.findText('鉛筆'); r0.select();
} else if(document.createRange) { // Gecko
var r0 = document.createRange();
var t0 = document.getElementById('p0').childNodes[0];
r0.setStart(t0, 3); r0.setEnd(t0, 5);
window.getSelection().addRange(r0);
}
}
</script>
</head><body onload="test()">
<p id="p0">これは鉛筆です。</p>
</body></html>
569566:2007/02/10(土) 12:18:31 ID:???
>>568
おお、すげえ
570Name_Not_Found:2007/02/10(土) 14:28:21 ID:0I7GbTgF
「/」がエスケープされた「%2F」がさらに「%252F」とエスケープされている場合、
これを「/」に戻すにはどうすればいいんでしょうか・・・

replace((\/|%2F|%252F), unescape("$1"))

とすると「%2F」は「/」になるんですが
「%252F」は「%2F」になるだけで「/」にはなってくれません・・・

プログラミングに関しては何も知らないんですが
やりたいことがあって(ほかの人が作った物を自分好みにしたい)
正規表現だとかunescapeだとかを知ったばかりなんですが・・・
よろしくおねがいします
571Name_Not_Found:2007/02/10(土) 14:35:59 ID:???
え?こう?
unescape(unescape("%252F"))
572570:2007/02/10(土) 14:44:24 ID:0I7GbTgF
>>571
それで普通はいけるものなんでしょうか?
やってみたんですが「%252F」から「%2F」になったままです・・・

もしかしたらほかの部分に問題があるのかもしれません
調べてきます
ありがとうございました
573Name_Not_Found:2007/02/10(土) 15:19:34 ID:???
>>572
いや、その正規表現と合わせて使っても駄目だよ?
  alert( unescape(unescape("%252F")) );
これ自体はちゃんと / が表示されるでしょ?
変換させたい文字列をそのまま突っ込んで下さい。


  var url = "http:%252F%252Fwww.2ch.net%252F";
  var url2 = unescape(unescape(url));
  alert(url2);
574570:2007/02/10(土) 16:19:58 ID:???
ああ、レスが。どうもです
このままじゃダメで別のかたちに書き換えないといけないんですね
勉強してきます・・・
575Name_Not_Found:2007/02/10(土) 16:29:16 ID:qildVD6B
576Name_Not_Found:2007/02/10(土) 17:16:42 ID:???
>>568
"鉛筆".length == 2 のように2文字以上の場合は Text ノードオブジェクトが複数になっている場合が普通にあるから、W3C-DOM の方は、そう単純にはならないだろう。
577Name_Not_Found:2007/02/10(土) 17:28:44 ID:???
normalizeすればいいと思うけど
578Name_Not_Found:2007/02/10(土) 17:44:07 ID:???
>>577
複数の Text に分割されている場合、最も多い(というか100%と言ってよい)のは、
「<span>あいう</span>えお」 から、「うえ」を探すような場合。
579565:2007/02/10(土) 18:33:24 ID:???
>>567でFAでした。どうもありがとうございます。
580Name_Not_Found:2007/02/10(土) 21:09:58 ID:???
>>570
var nanika = '%252F';
while(nanika.match(/%[\d\w]{2}/){
nanika = unescape(nanika);
}

でどーかと思ったんだが、escape の仕様をよくわかってないんで
まずいやも
つーか元の文字列に '%' が入ってたらどうするんだろうね?
わかる人の突っ込みキボンヌ
581Name_Not_Found:2007/02/10(土) 21:17:50 ID:???
ごめん、ちょぉまずかった
582Name_Not_Found:2007/02/10(土) 22:10:29 ID:7Popa41S
だれか〜、ここ↓に答えるか、ここで、問題点を指摘してくれんか?
Yahooは、初めて使ったが、どうも人の回りが悪いようだ。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1310754628
583Name_Not_Found:2007/02/10(土) 22:29:14 ID:???
>>582
標準がXHTMLだと考えるのは構わないけど、拡張子なんて無難にしておけば良いともう。
584Name_Not_Found:2007/02/10(土) 22:34:56 ID:???
どうせIE + application/xhtml+xmlがらみでしょ。
サーバが返すMIMEタイプを変えられない環境なら.htmlでいいじゃん。
間違いじゃないし。
585Name_Not_Found:2007/02/10(土) 22:36:55 ID:???
どっかで単にXHTMLに反することやってる気ガス
firebugあたり使ったら挙動がおかしくなってる点でエラー読めたりしないかい。
586Name_Not_Found:2007/02/10(土) 22:38:58 ID:7Popa41S
>>584

いちおう、Mac OS X Tiger+Safari&Firfoxで、開発してるんです。
拡張子は、やっぱりHTMLの方が良いですかね?
587Name_Not_Found:2007/02/10(土) 23:11:00 ID:???
>>586
現象が再現する最低限のソースを出せや
588Name_Not_Found:2007/02/10(土) 23:15:29 ID:7Popa41S
>>587 へいっ!
<script src="scripts/prototype.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
function loadDataFile(fName)
{
new Ajax.Request(fName, { method: 'get', onComplete: displayData });
}
function displayData(httpObj)
{
$("outputarea").innerHTML = httpObj.responseText;
}
//]]>
</script>

こんな感じっす。<div id="outputarea"></div>の間に出力するということです。
589Name_Not_Found:2007/02/10(土) 23:17:42 ID:???
あんたはアメリカ人か
590Name_Not_Found:2007/02/10(土) 23:19:27 ID:7Popa41S
>>589
どういうこと?
591565:2007/02/10(土) 23:23:07 ID:???
>>565>>567>>579の続きなんですが、
「鉛筆」が文章中に複数ある場合、必ず1個目のほうが
選択状態になりますよね?

2個目以降は選択できないんでしょうか。

調べたら、findTextのオプションの引数で指定できるようなのですが、
findText('鉛筆',1)でも
findText('鉛筆',2)でも両方1個目が選択されます。
環境はXPのIE6です。
592Name_Not_Found:2007/02/11(日) 01:45:00 ID:???
>>591
findTextの第2引数の意味が分かってんのかね。referenceを読め。
とりあえず込み入った方法で選択したいのならtextareaの内容を
まず調べてどの位置を選択するか決め、moveで位置決めして
moveEndで範囲の後ろを調整し最後にselectするとかかな。
まあがんばって。referenceのありかはテンプレにあるだろ。
593Name_Not_Found:2007/02/11(日) 02:02:15 ID:V978gkxf
prototype.jsを始めてみようと思い、
http://www.prototypejs.org/よりダウンロードしたものを
使っているのですが、
簡単なソースファイルを書き、FireFox + FireBugsを使って様子を見てみると、
次のようなエラーがでて、うまく動きません。
>>illegal character (prototype.js line 1)

一方、IE6で試してみたところ、とくに問題なく動きました。

私は、prototype.js自体に問題があると考えているのですが、
ソースファイルを見てみたところ、特に問題があるとは思えません。
どなたか原因・解決法をご存知の方がいらっしゃれば、教えてください。
594565:2007/02/11(日) 03:00:50 ID:???
>>592
第二引数は検索の方向ですか・・orz
英語のリファレンス見てたので早とちりしてしまいました。
何とかやってみます。
595Name_Not_Found:2007/02/11(日) 03:54:35 ID:???
>>593
もし文字エンコードの相違が原因であれば、HTMLのSCRIPT要素のCHARSET属性を明記すれば解決する。
596Name_Not_Found:2007/02/11(日) 05:09:10 ID:HwFCKy8g
>>560

createRangeを使えば簡単だと思ってるやバカが多いみたいだけどIEじゃ結構面倒。
面倒だから教えないけど。
597Name_Not_Found:2007/02/11(日) 09:54:14 ID:5jaI0ZdV
質問【オンマウスでリンク画像(文字)が跳ねるようにしたい】
↓これでは駄目だった
<HEAD>
<link rel="stylesheet" href="style.css" type="text/css">
<SCRIPT LANGUAGE="JScript" type="text/jscript" charset="shift_jis" src="jmplink.js">
</SCRIPT>
</HEAD>
<BODY onLoad="jmplink();">
<a href="" target=_blank onfocus="this.blur()"></a>
598Name_Not_Found:2007/02/11(日) 10:25:10 ID:???
>>596
それで >>501 は自分とこでは動作するんだけど他の人のとこ
ではだめなのでしょうか…
>>597
そのJSの中身を公開せずに質問に答えられるESPなんかいない。
帰れ。
599Name_Not_Found:2007/02/11(日) 11:34:18 ID:???
>>595さん
解決しました。ありがとうございました。
600Name_Not_Found:2007/02/11(日) 12:11:52 ID:???
ツリー形式のメニューを作りたいのでツリー型のオブジェクトを作り、
再帰呼び出しで表示しようとしたのですが、全部の項目が表示されません。
データはキチンと格納されているようなので、再帰呼び出し処理にバグが
あると思いますが、余計な処理を削ぎ落として極力シンプルにしてエラーを
見つけやすくしても、どこにもおかしな所が見付けられませんでした。

<html><head><script language="javascript">
function MenuData(text,href) {
this.text = text;
this.href = href;
this.children = new Array();
this.addChild = function(text,href) {
length = this.children.length;
this.children[length] = new MenuData(text,href);
return this.children[length];
};
}

Cmd = new Array();
Cmd[0] = new MenuData('項目0','menu0.htm');
Cmd[1] = new MenuData('項目1','menu1.htm');
Cmd[2] = Cmd[0].addChild('項目00','menu00.htm');
Cmd[3] = Cmd[0].addChild('項目01','menu01.htm');
Cmd[4] = Cmd[1].addChild('項目10','menu10.htm');
Cmd[5] = Cmd[1].addChild('項目11','menu11.htm');
Cmd[6] = Cmd[2].addChild('項目000','menu000.htm');
Cmd[7] = Cmd[2].addChild('項目001','menu001.htm');
Cmd[8] = Cmd[3].addChild('項目010','menu010.htm');
Cmd[9] = Cmd[3].addChild('項目011','menu011.htm');
601Name_Not_Found:2007/02/11(日) 12:12:54 ID:???
Cmd[10] = Cmd[4].addChild('項目100','menu100.htm');
Cmd[11] = Cmd[4].addChild('項目101','menu101.htm');
Cmd[12] = Cmd[5].addChild('項目110','menu110.htm');
Cmd[13] = Cmd[5].addChild('項目111','menu111.htm');
Menu = new Array(Cmd[0],Cmd[1]);

function List(Nodes, depth) {
for(i=0;i<Nodes.length;i++) {
buff = "";
for(j=0;j<depth;j++)buff = buff + '■';
buff = buff + Nodes[i].text + '<br>';
document.write(buff);
if(Nodes[i].children.length > 0)List(Nodes[i].children, depth+1);
}
}
</script>
</head>
<body>
<span>
(関数による再帰呼び出し表示)<br>
<script language="javascript">
List(Menu, 0);
</script>
</span>
<hr>
602600-601:2007/02/11(日) 12:15:16 ID:???
<span>
(非再帰呼び出し表示)<br>
<script language="javascript">
buff = "";
for(i=0;i<Menu.length;i++) {
buff = buff + Menu[i].text + '<br>';
for(j=0;j<Menu[i].children.length;j++) {
buff = buff + '□' + Menu[i].children[j].text + '<br>';
for(k=0;k<Menu[i].children[j].children.length;k++) {
buff = buff + '□□' + Menu[i].children[j].children[k].text + '<br>';
}
}
}
document.write(buff);
</script>
</span>
</body>
</html>

どこかおかしな点が見付けられる人がいたら、知恵を借りたいと思います。
自分の頭ではこれが限界です。お願いします。
603Name_Not_Found:2007/02/11(日) 12:45:06 ID:???
内容みてないけど
変数全部グローバルだね
604Name_Not_Found:2007/02/11(日) 13:34:32 ID:???
グローバル化社会ですから。
605Name_Not_Found:2007/02/11(日) 13:48:18 ID:???
>>603
関数の外で宣言しなくてもグローバル変数扱いになるんですね。
関数の中で宣言したら、ローカル変数になりました。
メニューもキチンと表示されます。

ありがとうございました。
606Name_Not_Found:2007/02/11(日) 14:15:54 ID:7MPwvs99
質問です。
Div要素に、アルファチャンネル付きPNG画像を表示させているんですが
フィルタを使用したくなって、適用してみると、アルファチャンネルが透けなくなってしまいました。。。

どちらも使うのは無理なのでしょうか?
607Name_Not_Found:2007/02/11(日) 17:39:24 ID:hU8PO4pZ
恥ずかしい質問ですがご容赦を。
いつもDWで作業してますが、手打ちはソースを確認するくらいです。
そして今DWがなくて違う場所にいます。
そしてどうしても解決したい機能がありまして質問させていただきます。
1)ブログの過去記事が増えてきて、ジャンプメニューでさっとアクセスできるようにしたい。
2)「バックナンバー」というリンクを押したら別窓で小さなリスト一覧が出る。
3)そこで特定の記事を選ぶと、メインの窓でその記事が表示される。
その小さな窓の中でなら表示はすぐ出来るのですがメイン画面に表示させる術を知らないのです。
ターゲットとかbody IDなどは分かってきたのですが実際に組むとなると頓挫してしまいました。
head内に書くjavascript内になにか指定をしたりするのでしょうか?
手取り足取りお願いすることになっていますがどうかよろしくお願いいたします。
608Name_Not_Found:2007/02/11(日) 18:07:35 ID:???
window.opener
609Name_Not_Found:2007/02/11(日) 18:09:02 ID:???
>>607
window.opener.location.href = 行き先URL;
610607:2007/02/11(日) 20:59:06 ID:???
>>608-609
感謝です。
こういうのがあったとは…勉強不足でした。
そして勉強になりました。
ありがとうございました。
611Name_Not_Found:2007/02/12(月) 02:43:27 ID:???
HPをアップロードした再に
検索中のページは、アクセス時に無効なメソッド (HTTP 動詞) が使われたため、表示できません。

と表示される箇所があったのですが
具体的にどのような不具合な箇所があるのでしょうか?
612Name_Not_Found:2007/02/12(月) 03:04:58 ID:???
>>611
初心者スレへ。
613Name_Not_Found:2007/02/12(月) 06:39:12 ID:???
>>611
どこがJavaScriptと関係あると判断したんだね?
614611:2007/02/12(月) 10:45:56 ID:???
javascriptで作ったページだったのでこちらで
聞いてみました。
初心者スレで聞いてみます。
615Name_Not_Found:2007/02/12(月) 11:27:59 ID:???
>>614
次に来る時は「エラーが出る最小限のソース」を作って貼るようにね。
それができないならここで質問しないでくれ。
616Name_Not_Found:2007/02/12(月) 16:02:42 ID:???
var textareas = document.getElementsByTagName('textarea');

みたいにinput type の text だけ取得できる?


・・・、 の が()にみえて変な感じ。
617Name_Not_Found:2007/02/12(月) 16:23:29 ID:???
もうちょっとわかりやすく質問してくれ
618Name_Not_Found:2007/02/12(月) 16:32:45 ID:???
目的は

<input type="text" value="" name="" />

っていうのだけを取得することなんだけど、
var hoge = document.getElementsByTagName('input');

しかできないのかな、

<input type="button" value="" name="" />
まで取得しちゃうのが悩ましくて。

if ( this.getAttribute("type") == "text")
で試したけれども、数が多いと表示に時間がかかってしまう。うーん
なんかもっとシンプルにしたい!というところで挫折中。
619Name_Not_Found:2007/02/12(月) 16:39:14 ID:???
>>616
できません。どっちかというとtype="button"を使うかわりに
<button>...</button>を使えばいいんでないの?
620Name_Not_Found:2007/02/12(月) 16:46:10 ID:???
>>619
ありがとう〜 無理だったか。

<button>、そのとおりなのだけど、
既存サイトなもので書き換えができないのよ〜。

getAttributeより早そうな他の手段を考えてみるわー
621Name_Not_Found:2007/02/12(月) 18:18:56 ID:???
誰の目にもDOM-XPathの使い所じゃないか。
しかし、DOM-HTMLでtypeプロパティを条件にグレップしても全然遅くないけどな。
622Name_Not_Found:2007/02/12(月) 19:21:35 ID:???
遅くないなら結構なことだな。
623Name_Not_Found:2007/02/12(月) 23:14:27 ID:???
>>621 なるほど、Geckoで動くね。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
var r, x, a = [];
if(document.evaluate) {
r = document.evaluate('//input[@type="text"]', document, null, 0, null);
while(x = r.iterateNext()) { a.push(x); }
for(var i = 0; i < a.length; ++i) { a[i].value = 'X'; }
}
}
</script>
</head><body>
<form action="#" onsubmit="return false"><div>
<input name="b0" type="button" value="Test" onclick="test()">
<input name="t0" type="text">
<input name="b1" type="button" value="Test"><input name="t1" type="text">
<input name="b2" type="button" value="Test"><input name="t2" type="text">
</div></form></body></html>
624Name_Not_Found:2007/02/12(月) 23:39:12 ID:???
>>623
そういう風に使うならXPathResultをスナップショット系にするようにすれば
whileで配列に入れなくてもよくなるよ
あとXPath式を相対パスにしてコンテキストノードをdocument.bodyに絞ってevaluateした方が速い
625Name_Not_Found:2007/02/13(火) 00:35:24 ID:cdRia9UT
javascript:if("AB".match(/(.*?)*?B/)){alert(RegExp.lastMatch);}
これページに埋め込むとFirefoxではクラッシュ。IEではメモリ使いまくりで大変なことになりますね。

(Firefoxでは1.5.0.3で修正されてますhttps://bugzilla.mozilla.org/show_bug.cgi?id=330352 )
626Name_Not_Found:2007/02/13(火) 01:12:11 ID:???
(相対パス) && (コンテキストノード) // >>624が指摘済み
&&
( <input> も <input type="text"> も、DOM-HTML の type プロパティが "text" )

==> 'descendant::*[(local-name()="INPUT" or local-name()="input") and (not(@type) or @type="text")]'
627Name_Not_Found:2007/02/13(火) 01:31:03 ID:???
擬似的に画面内にウィンドウを表示するようなフレームワークが
あったと思うんですが名前をど忘れしてしました

英語のサイトだったと思うんですが・・優しい人だれか教えてくだちい
628620:2007/02/13(火) 01:55:11 ID:???
>>627
LightBox系かな?
http://fortysomething.ca/mt/etc/archives/005400.php
とかにまとまってたよ

>>626
それだとtype=text取得できる?・・・げっ、難しくて読めないけどぐぐって調べてみる
629627:2007/02/13(火) 02:23:06 ID:???
>>628
ビンゴです!ありがとう!

今見たんですがlightboxは画像だけなんですね
LITBoxでエロいことしてみよう・・・
630Name_Not_Found:2007/02/13(火) 03:05:08 ID:???
>>626
要素名が大文字かそうじゃないか(text/htmlかapplication/xhtml+xmlか)はXPath式の外で判定した方が
無駄がなくなるんじゃないかな
判定方法はルート要素が大文字かどうか調べるのでもdocument.xmlVersionの有無でも
Gecko拡張のdocument.contentTypeでも何でもいいけど

var n = document.documentElement.localName;
var input = (n != n.toUpperCase()) ? "input" : "INPUT";
var expr = 'descendant::*[local-name()="'+input+'"][not(@type) or @type="text"]';
631Name_Not_Found:2007/02/13(火) 04:37:05 ID:???
>>630
// [... and ...] を JS に訳す。
Array.filter(document.body.getElementsByTagName('*'),
             function (e) {return e.localName == input && e.type == 'text';});// (!e.getAttribute('type') || e.getAttribute('type') == 'text')
// [...][...] を JS に訳す。
Array.filter(document.body.getElementsByTagName('*'),
             function (e) {return e.localName == input;})
     .filter(function (e) {return e.type == 'text';});// (!e.getAttribute('type') || e.getAttribute('type') == 'text')

* HTMLInputElement のリスト作成と保持、
* HTMLInputElement の個数分のループ増分、
のせいで、変数 input を作って省いた無駄が帳消しされる。

結局、微小な無駄を省くための無駄な努力を本気でやるなら、
IF (text/html) {
  IF (HTML) descendant::INPUT[...];
  ELSE IF (html) descendant::input[...];
} ELSE {
  descendant::*[... and ...];
}
のような分岐を JS で書くことになるかな。
632630:2007/02/13(火) 08:04:41 ID:???
>>631
すごい勉強になった。ありがとう
これだけちゃんと知ってる人が居るんなら自分ももっと質問しようかな
633Name_Not_Found
JSで、rubyのString#scan()に相当するものはありますか。
input = ".....";
while (m = input.scan(/(¥w+)=(¥d+|¥w+.¥w+)/)) {
...
}
のようなかんじで、つづけてマッチングさせたいんです。