+ JavaScript の質問用スレッド vol.57 +at HP
+ JavaScript の質問用スレッド vol.57 + - 暇つぶし2ch297: ◆.PT9876/4U
07/06/23 15:41:20 R24aA9AM
>>296
了解,
取り合えず, "条件で row の display を切り替える script" の完動するものを作る.
その他詳細は先方で...

298:284
07/06/23 15:45:43
>>294
色々スクラップ&スクラップしていたら解決しました!
ID指定で放り込む前に、
fuction loading(id){
 document.getElementById(id).innerHTML = "Loading...";
}
という小細工関数を外したらthisをちゃんと扱えるようになりました。
このloading()関数を実行したことにより、引数で渡したthisが変わってしまったのでしょうか、、?

もしかすると前にも意見を頂いた方のような気がします。ホントに感謝です!

299:266
07/06/23 17:00:29 rKv4NEsu
>>297
本当にありがとうございます。
あちらの方にレス返しておいたのでチェックよろしくお願いします。

300:Name_Not_Found
07/06/23 17:17:49
質問です
あるノードが持つイベントリスナの一覧を取得する方法(メソッドなど)はないでしょうか?
あれば方法を教えてください

DOM2 Eventsにはそういったようなものはないようなので
ベンダ拡張のものでも構いません(ラッパーを作成してそれに取り入れたいと思っています)

301:Name_Not_Found
07/06/23 17:26:14
>>300
そのノードのすべてのイベントをチェックしてfunctionが返ってきたら…っていう方法はどう?

302:Name_Not_Found
07/06/23 17:29:27 8ibfAcbw
<FORM>(略)
<INPUT TYPE=SUBMIT VALUE=投稿する onClick=seigyo();'>
</FORM>
でSUBMITボタンを押した後に前回投稿より30秒しか立ってなかったら
ダイアログを出すようにしているのですが、ダイアログが出たあとOKを押したら
そのまま投稿してしまいます。どうやって投稿を中止させたらよいのでしょうか?
よろしくお願いします。

303:Name_Not_Found
07/06/23 17:38:14
>>302
return

304:Name_Not_Found
07/06/23 18:06:52 8ibfAcbw
>>303
動いてしまいました^^;
return;を関数の中に入れたのですが間違ってますか?

305:Name_Not_Found
07/06/23 18:13:01
IEならretur false

306:Name_Not_Found
07/06/23 18:20:41
>>301
ありがとうございます
イベントハンドラとしてしか関数を追加できない環境の場合はそれでいいと思うのですが、
DOM Eventsを実装している環境に対してはaddEventListenerを使用したいのです
やはりprototype.jsのようにすべて自分で管理する以外ないのでしょうか?

307:Name_Not_Found
07/06/23 18:35:05
>>306
ないだろうな
addEventListenerに[[ReadOnly]]が付いていないブラウザだったら
onloadで強制的に書き換えてしまうというのも手だけど

308:Name_Not_Found
07/06/23 21:06:32
>>307
ありがとうございます。ないですか…
イベントリスナ一覧が取得できるようなメソッド
(あるとすればEventTarget#getEventListeners(type)のような…
getEventListenersByEventTypeでしょうか?)が
独自の実装としてでもあっていいような気がするんですけどね

>onloadで強制的に書き換え
これは具体的にどのようになるのでしょうか?

309:Name_Not_Found
07/06/23 23:25:14
JavaScriptのパスワードを教えてほしいです。
サイトに書いてあるのはよく分からんので、この天才の集い2chに聞こうと思いました。
よろしくおねがいします。

310:Name_Not_Found
07/06/23 23:32:25
右に2左に4

311:Name_Not_Found
07/06/23 23:52:03
三回まわってワンと吼える

312:Name_Not_Found
07/06/23 23:53:20
イロイッカイヅツ

313:Name_Not_Found
07/06/24 07:25:31
おまえらのはパスワードじゃないだろw
真のパスワードはこれだ、
ゆうていみやおうきむこうほりいゆうじとりやまあきらぺぺぺぺぺぺぺぺぺ…

314:Name_Not_Found
07/06/24 11:15:27
いや, 真のパスワードはこれだ.

16t{Qen+s|G2P8oj9[OFQbxR;[ClPU[N3mjSV}2hB}DkF[Az[AbE)[D[K
l[N(IL3B(a38[B7ROag[Mp[Lr-[CrG6-E[B7dNxVGlSy[Fko2Rd=1[G.=m
dGPe:w9[C8[FsEuB[FyQDy[Jz;[BJUq~[MavF[L~xTjV9PUc=[Lu/mM[I-J
6^Jv%Gi[O[N+yi0+_C7o[K[I8[F-Fcd[AVI%jE2/-eD[KOF9ez[CM1f3|1
0eu8EEk[IZcfXX[LwAjRcG9m_P$8[J[L[K2d[GT[O=Df-$ykQ5Gmb9g7r
5z[E|Lm[G2*LiZ^Y[CFe^;T2YK0tf4nuTp`jMfe[FNzfbWQM+lMu:o
b;K`ozaaAnjFZLOb45zgBC_a~xSrL9x%j8,dBz2c0jh;,8%3`.
B(`|Lh_w:wdm[H[N%1ggbHFYNhMyPU+r1R0d^l[I{:934[E[LFp[O_AN
o$/7[Fp[H|sFh%[C#vGKp`qd%d.oyXvONG5qoFA?([Ide[N_lOy`p6x
ki[F`YoCmEux~c!MqL[Ko(6j![KOfpV|fG[H[MfHC:`^co9^ZiE[O[L[A[G
3q(,%EgnP[Fk[N%X[O6tU1Dau3{EG:y[M_j;dpcpc[C-*
@v2:,@3|m|g8y(CPd+I|[G*p[KY[M

315:Name_Not_Found
07/06/24 11:21:49
>>306
>イベントハンドラとしてしか関数を追加できない
それは追加じゃないだろ。書き換えだろ。

そして、関数式や関数名を右辺に書いてイベントプロパティに代入するしかないブラウザは、IE4、Opera6、NN4、などに限られる。
今のインターネット人口の何マイクロパーセントが、果たしてこれらを実使用したことがあるかなw

316:Name_Not_Found
07/06/24 11:46:10
1マイクロパーセント=1億分の1。
いくらなんでも少なく見積もりすぎだろ。
今使っている人でも1パーミルくらいはいるんじゃないか?

317:Name_Not_Found
07/06/24 15:10:32 eWafetu7
質問です。


z-index=0の<TD>要素AとBがあって
| A |
---
| B |

そこにz-index=5の<DIV>要素Cを重ねます。
| C |
|  |

このとき、Cの上側にマウスを持っていったらAのonMouseOver
Cの下側にマウスを持っていったらBのonMouseOverを起こしたいのですが
マウスをCの上側にしても下側にしても必ずAのonMouseOverが起こってしまいます。

うまくA,Bのonmouseoverイベントを取得するにはどうしたらいいでしょうか?
よろしくお願いします。

318:Name_Not_Found
07/06/24 15:25:14
>>317 やってみたら問題なくできるんだが。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<table border="2" sumary="test"><tbody>
<tr><th onmouseover="alert('A')">AAAAA<br>AAAAA<br>AAAAA<br>AAAAA</th></tr>
<tr><th onmouseover="alert('B')">BBBBB<br>BBBBB<br>BBBBB<br>BBBBB</th></tr>
</tbody></table>
<div style="position:absolute; z-index: 5; top:40px; width: 200px; background: y\
ellow">
CCC<br>CCC<br>CCC<br>CCC<br>CCC</div>
</body></html>

319:Name_Not_Found
07/06/24 15:34:25
>>317
marginとかpaddingの問題は?

320:Name_Not_Found
07/06/24 15:59:28
>>317
AとBは重なっていないのにB上でAのイベントが発生するってこと?
HTMLを見直したほうがいいかも

321:Name_Not_Found
07/06/24 17:57:06
ある変数の値を100~0~100という風に往復させる
スマートな方法を教えて下さい。

322:Name_Not_Found
07/06/24 18:04:38
>>321
スマートっていうのが何を求めているのかわからないけど、
ある変数を往復させるとき100ずつ変化させたらスマートじゃない?

var a = 100;

a -= 100;
a += 100;

スマート?

323:Name_Not_Found
07/06/24 18:14:13
>>322
すみません、説明不足でした
setIntervalの中で100→99→98……0→1→2…
という風にしたいのです
なるべく増加中・減少中のフラグ無しでやりたいのですが…

324:Name_Not_Found
07/06/24 18:21:52
>>323
function (){
    var i = 100;
    while(i > 0){
        i--;
    }
    while(i < 100){
        i++;
    }
}

あんまスマートじゃないかもしれないけどこれをひたすらsetIntervalでまわしてくれ!
100→99→98……0→1→2…ってなるから。

325:Name_Not_Found
07/06/24 18:24:25
やりようはいくらでもあるだろうけど
スマートなやり方があるなら私も知りたいな

私が考えたのはこれ

for(var i = 1000; i < 2000; i++){
var j = i.toString().match(/(\d+)(\d{2})/);
j[2] = (j[1] % 2) ? 100 - j[2] : j[2] - 0;
document.write(j[2] + "<br>");
}

326:Name_Not_Found
07/06/24 18:40:14 yEcW/1/6
イベントがどうもよくわからないので質問させてください
ここにあるような感じでオブジェクト指向をもちいて、URLからXMLを取得するクラスをつくりました
URLリンク(ishikawa.arielworks.com)

http_obj.onreadystatechangeのイベントが一回しか呼ばれず
http_obj.statusの値が「1」にしかなっていません
URLにアクセスして読み込みが終了して、http_obj.statusが「4」になったときもイベントが起こりそうなのですが
起こらない状態です
どういうことなのでしょうか?

[html側]
<script type="text/javascript">
var xml_request = new GetXML();

function PrintXML(xml){
  alert(xml);
}

function Test(){
  var url = 'XMLを取得するURL';
  var query = 'XMLを取得するときのクエリ';
  xml_request.ConnectURL(PrintXML, function(){xml_request.CallBack();}, url, query, 'GET');
}
</script>

327:326
07/06/24 18:41:18 yEcW/1/6
[JavaScript側]
function GetXML(){
  this.http_obj = new XMLHttpRequest();
}

GetXML.prototype.http_obj;
GetXML.prototype.KeepFunction;

GetXML.prototype.ConnectURL = function ConnectURL(FuncSuccess, FuncCallBack, url, query, method){
this.KeepFunction = FuncSuccess;

this.http_obj.open(method, url, true);
this.http_obj.onreadystatechange = FuncCallBack;
this.http_obj.send(query);
}

GetXML.prototype.CallBack = function(){
  if(this.http_obj.readyState == 4){
    if(this.http_obj.status == 200){
      this.KeepFunction(this.http_obj.responseXML);
    }else{
      alert("URL接続失敗");
    }
  }
}


328:Name_Not_Found
07/06/24 18:44:27
var i = 100, d = -1;
setInterval(function(){
document.getElementById('count').innerHTML = i;
i += d;
if (i == 0 || i == 100) d = -d;
}, 100);

329:Name_Not_Found
07/06/24 18:45:44
>>321
普通にやっちゃだめなん?
var a = 100;
var d = -1;
function () {
<何か処理>
a += d;
if (a == 0 || a == 100) d = -d;
}

>>324
ならないだろ。常に100。

330:329
07/06/24 18:51:33
考えることは同じだな。まあ普通か

331:328
07/06/24 18:51:57
>>329
結婚を前提としてお付き合いさせてください!

332:321
07/06/24 18:56:01
皆さんありがとうございます。

全部試しましたが、やはり>>328-329でいきます。
ありがとうございました

333:Name_Not_Found
07/06/24 22:36:14
n個の数値から重複しない順列
たとえば n = 3 のとき
012 021 102 120 201 210 のように
全て列挙(配列に格納でもOK)するとして
この n の値をできるだけ大きくしたいのです。
何か良いアルゴリズムはありませんか。

334:Name_Not_Found
07/06/24 22:46:32
>>328-332
vol.41の598でガイシュツだったねー。

335:Name_Not_Found
07/06/24 22:52:33
たまにアルゴリズムの話になるんだけど、どっかにアルゴリズムスレはないの?

JavaScript特有の書き方の話までいけば「へぇ」って思うことはあるんだけど、
完璧にアルゴリズムだけの話になるとスレ違いな気がする


336:Name_Not_Found
07/06/24 23:04:56
>>335 主張は分かるけど頻繁じゃないし追い返す程でもないでしょ。
>>333 ホレ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<script type="text/javascript">
function perm(elts, seq, pos) {
if(pos >= elts.length) { seq.push(elts.join('')); return; }
perm(elts, seq, pos+1);
for(var i = pos+1; i < elts.length; ++i) {
var z = elts[i]; elts[i] = elts[pos]; elts[pos] =z;
perm(elts, seq, pos+1);
}
}
var elts = [0,1,2,3,4,5], seq = [];
perm(elts, seq, 0);
document.writeln('<p>' + seq.join(' ') + '</p>');
</script>
</body></html>

337:Name_Not_Found
07/06/24 23:06:08
でも、このスレでそんな質問するようなレベルのやつは
アルゴリズムがわかってもjavascriptで書けないんじゃないかな

338:Name_Not_Found
07/06/24 23:10:10
>>336 げげっ! 全然間違っている、少々お待ちを…

339:Name_Not_Found
07/06/24 23:15:01
>>336-338 1行抜けていた…
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<script type="text/javascript">
function perm(elts, seq, pos) {
if(pos >= elts.length) { seq.push(elts.join('')); return; }
perm(elts, seq, pos+1);
for(var i = pos+1; i < elts.length; ++i) {
var z = elts[i]; elts[i] = elts[pos]; elts[pos] =z;
perm(elts, seq, pos+1);
z = elts[i]; elts[i] = elts[pos]; elts[pos] =z;
}
}
var elts = [0,1,2,3,4,5], seq = [];
perm(elts, seq, 0);
document.writeln('<p>' + seq.join(' ') + '</p>');
</script>
</body></html>

340:Name_Not_Found
07/06/24 23:17:01
>>335-337
言葉足らずですみません。
JavaScriptで書くことを前提としての質問です。
たとえば>>336のプログラムでも n = 8 程で
かなりの時間がかかってしまいます。
これをできれば n = 10 以上でもすぐ列挙を
できるようにしたいのです。
繰り返し処理がメインなので書き方次第で
速度もかなり違ってくるのではと思いましたが
JavaScriptでは速度的に難しいのでしょうか・・・


341:Name_Not_Found
07/06/24 23:25:19
>>340
あのさあ、n = 10 だと全部配列に生成したら3628800通り
だからその要素数の配列が必要になるわけだよ。そんなのC
だって遅いだろ。全部要るわけじゃなくて最初からちょっとだけ
使うとかなわけ?

342:335
07/06/24 23:30:50
>>340
>>336見て、「優しい人がいるもんだなぁ」と思ってたが見事な台無しの仕方だな

まずjavascript前提の質問だったら何でそんなことが必要なのよ?
CGIでやらせるんじゃダメなわけ?遷移するのが嫌ならAjax使うとかでもいいだろうし。
目的がわからないと答える方も二度手間になるよ?

343:Name_Not_Found
07/06/24 23:37:06
>>335みたいにヒントも与えられず
答えもしないのに文句だけ言う奴が最近多いな

>>333
根本的に無理。
そこまでいくとアルゴリズムでどうにかできる範囲じゃない

344:Name_Not_Found
07/06/24 23:50:19
洩れも>>335すっこめと思った。CGIでやったって400万の配列
生成してどーすんのよ? ピント外れも甚だしい。
これって完全にnullのパターンだよな…

345:Name_Not_Found
07/06/25 00:07:58
実は、nullでした。バレました?

346:Name_Not_Found
07/06/25 00:12:32
null は意地でも
気持ち悪い半角句読点を使うから
別人でしょ

347:333
07/06/25 00:12:56
>>341-344
どうやら大きい数の列挙は無理そうですね。
諦めます。ありがとうございました。

>>336,338-339さん
せっかく組んで頂いたのに申し訳ありません。
ありがとうございました。

348:Name_Not_Found
07/06/25 00:25:21
>>343,344
不快な気持ちにさせてしまったのか申し訳ない。
最近やけに多くなってレスが埋まるなって思ってしまいつい。
CGIって言ったのは、javascript側でやるよかCGIでやる方が速いだろって思ったんだよ。

>>347
何か個人攻撃っぽくなってしまったごめん

349:Name_Not_Found
07/06/25 00:27:40
ホレ氏乙

350:Name_Not_Found
07/06/25 01:14:38
結局何がしたいのかわからんかったな

351:Name_Not_Found
07/06/25 02:08:25
function p(n) {
    if (n < 2) {
        yield [0];
    } else {
        let N = n - 1;
        let g = p(N);
        while (true) {
            let u = g.next();
            for (let [v, i] = [, 0]; i < n; i++) {
                (v = u.slice(0)).splice(i, 0, N);
                yield v;
            }
        }
    }
}

js> let g = p(30);
js> g.next()
29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
js> g.next()
28,29,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
js> g.next()
28,27,29,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0

352:Name_Not_Found
07/06/25 12:44:35
>>321
出遅れたけど思いついたんで書いとく。

var v = -1 ;

function vibration() {
  v = (v + 1) % 200 ;
  return Math.abs(v-100) ;
}

353:Name_Not_Found
07/06/25 12:56:40 aSAdCUdR
質問です。

●●.htmlから○○.htmlをiframeで読み込んで、
○○.html内の画像のスワップイメージで●●.html上の画像を変える事は
できないんですかね?
やり方を教えてください。

354:321
07/06/25 12:58:55
>>352
これです!!絶対値までは思いついていたんですが、あと一歩が出なかったんです!!
最高にスマートです!!ありがとうございました!!!

355:Name_Not_Found
07/06/25 13:02:31 yjW/+9fS
しっかりこちらに漂着.
さて, 回答する人はいるのか ? (わくわく)

356:Name_Not_Found
07/06/25 13:10:12
null がすりゃいいダロ

357:Name_Not_Found
07/06/25 13:29:43
>>353
2つのHTMLが同一鯖ならできるが別鯖なら絶対不可能。
frames.IFRAMEの名前.document.images.IMGの名前.src = '画像のURI';

358:Name_Not_Found
07/06/25 13:32:51
>>355
もしかして >>317-318 のことを言っている?質問者逃げたかも。

359:Name_Not_Found
07/06/25 17:19:39 u7Jcm1wx
<input type="text" name="hoge" id="piyo" onFocus="~">と同じ動作を
document.getElementById("piyo")で処理させたいのですが、

var aaa = document.getElementById("piyo");
aaa.onfocus = function(){~}

とすると動いてくれません…。どうすればいいのでしょうか?

360:Name_Not_Found
07/06/25 17:23:03
>>359
そのdocument.getElementById()は「当該要素piyoが読み込まれた後で」
実行されるようになってるんだろうな?

361:Name_Not_Found
07/06/25 17:31:38 yjW/+9fS
>>356
我が辞書に "frame" の文字なし

>>355
WebProg 板にも出没.
結局, 誰にも相手にされず...

>>359
window.onload=function(){
document.getElementById('piyo').onfocus=function(){~}
}

362:Name_Not_Found
07/06/25 22:40:18
URLリンク(www13.plala.or.jp)
のブロック崩しのソースコードを読んでいます。
"index.html"の下に"main.html"と"sub.html"の2つのフレームが置いてあり、
計3つのHTMLファイルでJavaScriptが動いています。

"sub.html"の中に下のような部分があるのですが、これは何をしているのでしょうか?
コールバックのトリガーみたいなのですが、仕組みがよくわかりません。
特に、「this.call = function()」「parent.callback = new CallBack()」のところが。
"callback"というのは、親フレーム(index.html)の変数で、兄弟フレームからも参照されています。
詳しい方、よろしくお願いします。

function CallBack() {
  this.call = function() {
    parent.fGame_init();
    parent.timerID = setTimeout( "gamemain()" , 0 );
  }
}
parent.callback = new CallBack();

※各URL
URLリンク(www13.plala.or.jp)
URLリンク(www13.plala.or.jp)
URLリンク(www13.plala.or.jp)

363:Name_Not_Found
07/06/25 22:46:32
>>362
典型的な OOP 記述.
function CallBack() は いわゆる constructor と呼ばれるもの

364:362
07/06/25 23:02:00
OOP関係ですか。知りませんでした。
少し調べたのですが、ちょっとすぐには理解できなさそうです。
勉強し直します。ありがとうございました。


365:Name_Not_Found
07/06/26 00:35:25 3/vkJzX1
あの、javascriptで2chとまったく同じデザイン、機能や仕様の掲示板って
作れるのでしょうか?

366:Name_Not_Found
07/06/26 00:38:05
はい?

367:Name_Not_Found
07/06/26 01:22:12 rDYL9hqk
URLリンク(q.hatena.ne.jp)
ここに書いてあることと同じことをしたら
>newDoc.getElementById("NotUnique")
この部分で
「getElmentById is not a function」
とエラーが出てしまいました
どうしてなのでしょうか?

368:Name_Not_Found
07/06/26 01:29:28
>>367
そのエラーメッセージはコピペしたんだよな?
だったら、getElmentByIdというメソッドが存在しないから。

369:Name_Not_Found
07/06/26 01:36:20 3/vkJzX1
javascriptでwebの掲示板作りって可能なんですよね?では2ちゃんねるの
ようなデザインに掲示板を作れるのですか?

370:Name_Not_Found
07/06/26 01:37:51
はい?

371:Name_Not_Found
07/06/26 06:46:05 /5OlroJP
>>367
"要求された id の element を探したけど見つからなかったぜ ゴルァ"
と言ってるのだと意訳しましょう.
getElementById() method では ありがちなエラーなのだ.

372:Name_Not_Found
07/06/26 07:30:19
>>369
>javascriptでwebの掲示板作りって可能なんですよね?
ダウト

373:Name_Not_Found
07/06/26 07:42:36
>>371
newDoc も document.getElementById('newDoc') みたいに getElementById で取得する実装になっているなら
まさに "要求された id の element を探したけど見つからなかったぜ ゴルァ" だが、
>367 の URL を見る限り、newDoc は document.createDocumentFragment() で生成されるようだから、見当違いだな。

>>367
URLリンク(q.hatena.ne.jp)  ここにある

> var TargetDiv = document.getElementById("Unique2");
> var newDoc;
> newDoc = document.createDocumentFragment();
> newDoc.appendChild(TargetDiv.cloneNode(true));
> alert(newDoc.getElementById("NotUnique").innerHTML);
> newDoc = null;

これを実行したものと仮定するが、ここで newDoc には DocumentFragment が入っている。
名前が紛らわしいが DocumentFragment は Document インタフェースを継承しないので
Document#getElementById メソッドは持っていない。だからエラーが出る。

直接は関係無いが、この URL に書いてあるような
同じ ID が何度も出てくる XML 文書を使うのはやめたほうがいい。理由は面倒なので書かない。

374:Name_Not_Found
07/06/26 08:01:49
>>371
元質問を良く見ろ。大嘘な解説偉そうにしてんじゃないよ半可通。

375:Name_Not_Found
07/06/26 08:05:26
>>369
javascriptではサーバ内に何か保存することは原理的に不可能。
だからアンタのブラウザ上だけで動作し、アンタ一人が書き込む
という掲示板しか作れないがそれでいいなら見た目は2ちゃんに
似せることもできるだろう。終了。

376:Name_Not_Found
07/06/26 09:42:27
対応するCGIプログラムをサーバ側に置けばかなり使いやすい物が出来るでしょう。
当然全員JavaScript有効が前提条件になるけど。

しかし2ch型2ch型と、いったいこれのどこが使いやすいのかね。
最低最悪のデザインと低スキル丸出しなバグの山と下痢便のようなファイル構成。
まだblogを掲示板代わりに使った方が便利だと思う。

377:Name_Not_Found
07/06/26 09:55:14
そうだね、お家帰ろうね

378:Name_Not_Found
07/06/26 11:29:06
おじいちゃん、こんなとこにいたんですね。
お薬の時間ですよ。さ、行きましょう。

379:Name_Not_Found
07/06/26 11:50:23 3JjgAU5G
質問です。
toSourceメソッドってIEでも動きますか。異環境なのでチップスお願いします。

380:Name_Not_Found
07/06/26 12:11:50 IQXeVWkY
みなさん返事ありがとうございます。では2ちゃんねるの管理人
ひろゆき氏はどのwebプログラミング言語でこの掲示板を作った
のですか?質問ばかりで申し訳ございません。

381:Name_Not_Found
07/06/26 12:43:05
perlじゃね?
ちなみに2chのクローンなんてのは沢山有るから、今更作っても全然需要無いよ

382:Name_Not_Found
07/06/26 12:43:48
最初はPerlだったかな

383:Name_Not_Found
07/06/26 13:05:11
>>379
IEでは動きません。終了。

384:379
07/06/26 17:05:27 o0Xsq1qy
>>383
ありがとうございます。やっぱ動きませんか。
実装予定はいつごろですかね?
ついでにsetAttributeとaddEventListnerもお願い
します。

385:Name_Not_Found
07/06/26 17:58:36
誰にいってんの?

386:379
07/06/26 18:59:42
>>385
あ、すいませんでした言葉足らずで。
ビルゲイツがいたもんですから。


387:Name_Not_Found
07/06/26 21:32:23
そのバスに乗ってた人はもうみんな死んだんですけど。

388:367
07/06/26 22:26:15
>>368>>371>>373
ありがとうございます

URLリンク(q.hatena.ne.jp)
ここに書いてあることは嘘だったんですね・・・
>値取得できました!
>ありがとうございました。
って書いてあるのに・・・


389:Name_Not_Found
07/06/27 02:25:14 lkiXFTix
*script内の処理
function erase()
{
document.test.file_name.value = "";
}
*body内の処理
<form name="test">
<input type="file" name="file_name">
<input type="button" value="削除" onClick="erase()">
</form>

input type="file"で入力したファイル名を、ボタンを押すことによって
テキストエリアから削除ができるようにしたいんですけど、削除できなくて困っております。
input type="text"時は上記のやり方で削除出来たんですけど…
どなたか方法を教えて下さい。お願いいたします。

390:Name_Not_Found
07/06/27 02:27:04
name使わないで><

391:Name_Not_Found
07/06/27 02:33:31
document.test.file_name

document.forms['test'].elements['file_name']
だよな?

392:Name_Not_Found
07/06/27 02:44:21 lkiXFTix
レスありがとうございます。しかしまだ解決dきていません。無知で申し訳ありません。

>>390
name使ったらダメなんですか?
>>391
document.forms['test'].elements['file_name'] = "";
で出来るわけじゃないんですよね?

393:Name_Not_Found
07/06/27 02:49:15
>>392
いやそれは知らん。
まあ.valueが抜けてるけど関係ないだろう。
ググったら直ぐに出ると思うけどなあ

394:Name_Not_Found
07/06/27 06:23:21
>>393 小島善雄でつか?

395:Name_Not_Found
07/06/27 08:39:16
>>389-393
なんで皆こんなに無知なの? <input type="file">のvalue
はscriptからは*絶対に*書き換えられない。書き換えられたら
パスの分かっている重要なファイルとか取られ放題になるだろ。

空にするだけなら、その<input type="file">を独立した
formの中に入れてそのformをreset()することでできるが、
formが分かれるとまずいということだと難しいよね。

396:Name_Not_Found
07/06/27 08:43:41
>>388
documentFragmentに対してdocument.getElementById()が使える
という「標準外の機能を持った」ブラウザがその時使われて
いたとかじゃないですかね。だからその書き込みは嘘じゃない
けどあなたには役に立たないとか。

397:Name_Not_Found
07/06/27 08:50:29
上のやり取りを見て質問です。
フォーム部品を指定するとき、どの書式が望ましいですか?

1 document.test.id.value
2 document.forms['test'].elements['id'].value
3 document.getElementById('id').value

3>2>1?

398:Name_Not_Found
07/06/27 08:52:02
>>395
嬉しそうだなぁ。。
質問者がいきなり自演して自分にウソを教えればこのバカバカしい習性を利用できる。

399:Name_Not_Found
07/06/27 08:55:20
>>397
は?
1に決まってるだろ(呆)

400:Name_Not_Found
07/06/27 08:57:46
>>367
l の後ろの e が抜けている、つまり getElmentById じゃなくて getElementById
ということではないだろうか。
368 も同じことを言っているように見えるが。

401:Name_Not_Found
07/06/27 08:58:51
>>398
なるほどね、注意します ^_^; でもtype="file"の質問は
よく出るからFAQに入れてもいいかも。
>>397
1はIE専。その代替として
document.forms.test.elements.id.value
を勧めますが2でも3でも1よりマシでしょ。

402:Name_Not_Found
07/06/27 09:10:06
ダウト>javascriptではサーバ内に何か保存することは原理的に不可能

不可能なのはクライアントPCのファイルを操作すること

403:Name_Not_Found
07/06/27 09:13:27
>>402
だからさ、CGIとかと連携すればできるけど、そうじゃなかったら
ブラウザ上のJavaScriptでサーバ上の操作はできないでしょ。
CGIとの連携の話?それともサーバ上のJavaScriptの操作の話をしているわけ?
クライアントPCのファイル操作だってActiveXとかWSHとか言い出したら
話が別なわけで、前提をはっきりさせようよ。

404:Name_Not_Found
07/06/27 09:26:30
>>402
>ダウト
>ダウト
>ダウト

405:Name_Not_Found
07/06/27 09:53:10
>>401
1はIE専ってわけじゃないだろ
他ブラウザでも動くことは動く

406:Name_Not_Found
07/06/27 10:07:34
>>402
jsで鯖のファイルが弄れたら、やりたい放題無法地帯じゃねーかw
何その夢の技術ww

407:Name_Not_Found
07/06/27 20:13:29
ばかばっか

408:Name_Not_Found
07/06/27 20:21:39
オマエモナー

409:Name_Not_Found
07/06/28 03:40:09
質問させてください。

同ページ内に複数の<a>があるとして、
現在focusされている<a>が
document.getElementsByTagName('a')の配列の何番目なのか
取得する事って出来ないでしょうか。

よろしくお願いします。

410:Name_Not_Found
07/06/28 04:49:32
>>409
a element で focus と言う表現はおかしいと思わないか ?
それと getElementsByTagName('a') で得られるものは
"配列" ではなく, a element collection.
よろしくお願いされても答えようがない.

411:Name_Not_Found
07/06/28 07:01:19
>>409
forcus event で取得した、event 発火 element と、getElementsByTagName で取得した nodeList(配列)の要素を逐次比較。

めんどくさいな。

412:Name_Not_Found
07/06/28 07:18:08
何故 <a>で? って疑問があるが、
<input>でもフォーカスされているかどうか調べること出来たっけ?
あったらそれで、無けりゃイベントに何か仕込んで、
for (n in anchorElements)
でループしたらn番目って判断できそうだけど。

>>410
言いたいことはわかるが、>>409でも十分通じるんじゃね。

413:Name_Not_Found
07/06/28 07:38:08
>>412
煽り口調になってしまったけど,
"リンクの何番目" と言うことに重要性があるとは思えない.
もしかすると onmouseover で逆引きをやりたいのかも知れない.
"どうしても" というのなら index 用の array を用意して
onload で Index[A[i]]=i; (A: a element collection) てな感じで

414:Name_Not_Found
07/06/28 07:50:55
ついでだけど,
for(i in A) 形式は
A が element collection の場合は使えない.
それに対して A が array ならば OK.

415:Name_Not_Found
07/06/28 07:57:37
prototype.js使ってたら使えないけどね

416:Name_Not_Found
07/06/28 08:22:03
>>414
for(i in getElementsByTagName('TAG'))
でも動いてるんですけど...?
ダメなの?

417:Name_Not_Found
07/06/28 08:46:13
>>409
XPathを使えるなら『現在focusされている<a>』のpreceding::Aの個数を求めるのがおそらく最速。

>>414
element collectionなる造語はどこからでてきた。

for..inはDontEnum属性を持たないプロパティを列挙する。
ECMAScript実装上のNodeList[n]、HTMLCollection[n]が列挙不可かどうかはホスト依存。
少なくともGeckoは可能。Opera、Safariは不可。

まぁ配列を回すときはfor..inではなくindexを数えろというなら同意しなくもないが、
JavaScriptのArrayはindexが飛ぶこともある。
NodeListはindexが飛ぶことはないが生きている。

418:Name_Not_Found
07/06/28 09:20:28
また変なのが居着きそうだな

419:Name_Not_Found
07/06/28 16:54:34
>JavaScriptのArrayはindexが飛ぶこともある
ソースがわからんのだが

420:Name_Not_Found
07/06/28 17:38:49
>>419
ソースって情報元?ならECMA。

プログラムコードが見たいなら以下でどうぞ

var a = [];
a[1181542658] = "hello";
// コメント外したらブラクラ for(var i = 0; i < a.length; i++) { alert(a[i]); }
for(var i in a) { alert(a[i]); }

421:Name_Not_Found
07/06/28 18:16:17 meL89RVE
特定のブラウザでのみHTMLの一部を改変して表示させたいのですが、具体的にどういった方法でできるのでしょうか?

422:Name_Not_Found
07/06/28 18:22:03
改変するのと表示するのでは全く別のこと

423:Name_Not_Found
07/06/28 18:37:04
>>420
配列の中の定義された値だけを走査する、という状況なら index が飛ぶこともあるだろうが
配列を走査する、という状況なら 0 .. a.length - 1 まで全ての添え字で処理されるべき。
その点後者は、undefined も含めた全ての値にアクセスするわけではないので処理が“飛んでいる”と言えるな。
そもそもそういう使い方なら Array でする意味はないってことはわかって書いてるんだろ?

424:Name_Not_Found
07/06/28 18:39:20
>>421
1.サーバ側でブラウザ別に違うソースを書き出す
2.クライアント側でブラウザ別に違うソースを読み込む
のどっちかだね
このスレ的には2だから、あじゃあじゃ

425:Name_Not_Found
07/06/28 21:41:07
framesすべてに何かしたい時は
for(i in frames)でおk?
なんで試してみないのかというと、これでを使って
何かをしようというわけでもないから

426:Name_Not_Found
07/06/28 21:47:39
はい、次のかたどうぞ~

427:Name_Not_Found
07/06/28 23:09:03
>>425
だからそういうのは「保証されない」ってば。たまたま
手元のブラウザで動いたからそれでいいとか思わない方が
いいよ。保証されてない動作は他のブラウザやそのブラウザの
次のバージョンでどうなるか分からないんだから。

428:Name_Not_Found
07/06/28 23:15:44
>>427
>>425でいいじゃねーか。
他にどんな書き方があるんだよ?

429:Name_Not_Found
07/06/28 23:19:12 QOlzUv6n
質問です。
Date.parseは信用できないと聞いたのですが、皆さんは使っていらっしゃい
ますか?

430:Name_Not_Found
07/06/28 23:36:06
ま、Array#forEachを使っとけってこった。

431:Name_Not_Found
07/06/28 23:43:29
フォームに
00_00 などの文字列を貼って、submitしたら
00_00
01_01
02_02
03_03
04_04
05_05
06_06
07_07
08_08
09_09
10_10

10_0a と貼ったら
11_0b
12_0c
13_0d
14_0e
と展開してくれるスクリプトを書きたいのですが、どうやればいいでしょうか?









432:Name_Not_Found
07/06/28 23:54:18 IUjf0PIi
質問です。

二つのセレクトメニューで、現在の日付を初期値(phpで制御)として設定しています。

セレクトメニュー1  セレクトメニュー2
【2007年6月】 【28日】
2007年7月
2007年8月
  ・
  ・
それでセレクトメニュー1の値によってセレクトメニュー2の項目を
メニュー1が1月ならメニュー2に1~31日、2月なら1~28日といった感じに
変更したいのですが、メニュー1の値をどう指定すればいいかわかりません。

ご教授お願いします。

433:Name_Not_Found
07/06/29 00:01:30
ここでは教授はしない。

434:Name_Not_Found
07/06/29 00:21:54
>>431
まずその展開ルールを公開してくれ

435:Name_Not_Found
07/06/29 00:48:32
>>434
rubyのString#succやInteger#succで作ってやれば納得するだろ、おそらく。

>>432
本当に微妙な差だが、表形式のカレンダーを出力するのは、PHPの方が易しい。
だから、誰から見ても使いにくいというか使えない分割された糞セレクトコントロールじゃなくて、カレンダーを出力してもらえ。
どうせ、別の月へのリクエストはほとんど使われないんだから、わざわざJSに分散させる必要は全く無い。

436:Name_Not_Found
07/06/29 08:43:09
>>435
カレンダーにするかどうかは製作者の設計によるよね。画面の当該
領域が小さいものならカレンダーじゃなくselectというのは普通に
あるでしょ。
>>432
PHP側で「1番目のselectの何番目なら日付は何日まで」という情報を
適当な配列に生成しておいてもらい、それを参照するのが楽かと。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var days = [30, 31, 31];
function chg() {
var ind = document.forms.f0.elements.s0.selectedIndex;
var sel = document.forms.f0.elements.s1;
sel.options.length = 0;
for(var i = 0; i < days[ind]; ++i) {
sel.options[i] = new Option(String(i+1));
}
}
</script>
</head><body>
<form name="f0" action="#" onsubmit="return false"><div>
<select name="s0" onchange="chg()"><option>2007.6</option>
<option>2007.7</option><option>2007.8</option></select>
<select name="s1"><option>X</option></select>
</div></form></body></html>

437:Name_Not_Found
07/06/29 08:46:50
>>430 だからframesはArrayじゃないんですけど。
>>428 for(var i = 0; i < frames.length; ++i) ... が無難。

438:Name_Not_Found
07/06/29 10:41:49
>>431
同好の士みたいだし、オレのスクリプト分けてやるよ

439:432
07/06/29 10:55:16
>>435>>436
丁寧な回答本当にありがとうございます!
おかげさまでうまくできました。

あともう一つ聞きたいのですが、javascriptでの変数や関数をphpで使用すること
は可能ですか?
var ind = document.forms.f0.elements.s0.selectedIndex;
で取得した値をphpに渡す等

普通に代入しようとしたらエラーになってしまったんですが・・・

440:Name_Not_Found
07/06/29 11:24:31
>>439
JavaScriptはブラウザ上で動作し、PHPはサーバ上で動作してる
でしょ。だから普通に代入なんてできるわけがない。渡したければ
formの適当な要素(hiddenとか)の値としてセットしてそのformを
送信するとかでしょ。

441:Name_Not_Found
07/06/29 11:41:06
>>439
そんなときこそAJAXですよ。
まあ、渡せるのはデータであって、変数や関数じゃありませんが。

442:Name_Not_Found
07/06/29 14:31:24
>>437
Array.forEach(frames, function(f){ ... })
Array.prototype.forEach.call(frames, function(f){ ... })

MDCにあるArray#forEachの代替コードは
for (var i = 0; i < len; i++) { if (i in this) ...
添字の抜けも考慮してある

443:Name_Not_Found
07/06/29 14:48:53 LDupVtZA
質問です。
Date.parseは信用できないと聞いたのですが、皆さんは使っていらっしゃい
ますか?


444:Name_Not_Found
07/06/29 15:25:17
>>443
どんな文字列なら解析してくれるのかよく分からないんだよね。
だから実用に使うページの場合は自分で正規表現とかで解析するよな。
でないと「どういう文字列を与えればいいのか」と言われた時に答えられない。


445:443
07/06/29 15:53:05
>>444
やはりそうですか。自分できっちり設定します。
ありがとうございました。

446:Name_Not_Found
07/06/29 19:15:33 vOAzjufZ
質問させてください。
JavaScriptを利用して、一つのウィンドウを使い、内容を表示して確認、次の内容を表示して確認というようにしたいと思い、つぎようなコードを作ってみました。
実行すると、一つ目と二つ目の画面は表示できますが、二つ目の画面のボタンは動作しません。何がまずいのでしょうか?

<html><head><meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<script type="text/javascript">
function q1() { document.open();
document.write("1.ABCD");
document.write("<form><input type='button' value='2へ進む' onclick=q2();></form>");
document.close(); }
function q2() { document.open();
document.write("2.EFGH");
document.write("<form><input type='button' value='1へ戻る' onclick=window.q1();> ");
document.write("<input type='button' value='3へ進む' onclick=q3();></form>");
document.close(); }
function q3() { document.open();
document.write("3.IJKL");
document.write("<form><input type='button' value='1へ戻る' onclick=q1(); >");
document.write("<input type='button' value='2へ戻る' onclick=q2();></form>");
document.close(); }
// -->
</script><title></title></head>
<body>
<p><script type="text/javascript"><!-- q1(); // --></script></p>
</body>
</html>

447:Name_Not_Found
07/06/29 19:35:28
なにがまずいって?
// --> んなものつけてるからだろ

448:Name_Not_Found
07/06/29 19:44:36
>>446-447
どっちかというと <!-- がまずいんでしょ。そんなもん
書かないのが吉だと思うね。ところで FAQ>>3 のQ4-A4は
読んだかね?

449:Name_Not_Found
07/06/29 20:07:29 vOAzjufZ
<!--
// -->
は、JavaScript OFF にしてる場合、または JavaScript 非対応ブラウザへの対策

>448

やはり、あの方法のどれかを使うしかないようですね。

450:Name_Not_Found
07/06/29 20:48:45
>>449
> !--
> // -->
> は、JavaScript OFF にしてる場合、または JavaScript 非対応ブラウザへの対策

一体、何年前から来た人ですか?

451:Name_Not_Found
07/06/29 21:04:32
異次元だね

452:Name_Not_Found
07/06/29 21:24:37
もし仮にだな、閲覧したヤシのパソコンの画面いっぱいに

コードが大解放されたとして、別にそれでいいよ。



453:Name_Not_Found
07/06/29 21:26:02
そんなのを書いとくともっと深刻な事態になるんだから。

454:Name_Not_Found
07/06/29 21:35:37
>>449
HTML4.0が勧告されてから、そろそろ10年。
今時、script要素の中身を垂れ流してしまうブラウザなんてほぼ皆無かと。
対応ブラウザのJavaScriptをOFFにしたってscript内を表示したりはしないし、
対応していないLynxなんかも勿論、表示しない。
だいたい、それだけスクリプトに依存したページを作っておいて対策もなにも無いでしょう。

それと普通は<!--で始まってる行は無視されるから、そのコードが動くとは思えないんだけど。

455:Name_Not_Found
07/06/29 21:42:58
>今時、script要素の中身を垂れ流してしまうブラウザなんてほぼ皆無かと。
えーと、今時の携帯でもふつうに垂れ流すけど。
そして、今では携帯コンテンツのプログラムが俺の仕事の半分を余裕で超えたよ。
スクリプトをコメントアウトせずにじかに出力するとかありえないからw

456:Name_Not_Found
07/06/29 21:43:58
>>452
だから、あなたは何年前から来た人ですか?

457:Name_Not_Found
07/06/29 21:45:05
>>455
え?
最近の携帯ってJSに対応してるの?
JS使ってるって事は対応してる機種があるって事だよね?

458:Name_Not_Found
07/06/29 21:54:51
JavaScriptの話題じゃないぜ。

459:Name_Not_Found
07/06/29 21:57:58
JapanSe・だろ

460:Name_Not_Found
07/06/29 22:00:32
>>458
じゃぁCSS?

461:Name_Not_Found
07/06/29 22:11:54
>>455
ごめんね。携帯のはHTMLブラウザだと思ってないから勘定に入れてなかった。
特にi-modeとか独自路線過ぎる。
でも、なんで携帯コンテンツにscriptを?

462:Name_Not_Found
07/06/29 22:26:06
そりゃ携帯サイトにJavaScript入れるならコメントアウト
するかも知れないけどね… 入れないよなふつー。

463:Name_Not_Found
07/06/29 22:41:05
嘘だよ
垂れ流す携帯の機種言ってみろよ

464:Name_Not_Found
07/06/29 23:22:13
>>448
<!-- から行末までが無視され、// から行末までが無視されるから、
単に <!-- と //--> は別の行に書けば済むだけ。書かない方が吉ってことはない。
書き方が悪いのが問題なだけだ。

465:Name_Not_Found
07/06/29 23:56:44
XHTMLでは書いちゃだめですよ。スレ違いながら。

466:Name_Not_Found
07/06/30 00:13:40
どう見てもXHTMLじゃないし

467:Name_Not_Found
07/06/30 01:04:35
だからトラブるでしょ。現に。書いたっていいことない。まあ
どーしても書きたいというのなら止める権利はないよなー。

468:Name_Not_Found
07/06/30 01:35:01
書いちゃだめというなら
何故だめなのか理由を説明してあげたら?
そのほうが為になるよ

469:Name_Not_Found
07/06/30 01:43:51
そんなことよりソース垂れ流す携帯の機種が気になって眠れない

470:Name_Not_Found
07/06/30 07:19:12
各キャリアに問い合わせれば?

471:Name_Not_Found
07/06/30 07:32:45
ばーかばーか

472:Name_Not_Found
07/06/30 08:25:23
オマエモナー

473:Name_Not_Found
07/06/30 08:31:22 fnkN5MWo
JavaScriptで所定のノードの中にある派生ノードの数を数えるにはどのようなコードを書けば良いのでしょうか?

474:Name_Not_Found
07/06/30 08:31:52
HTMLなら書く。
XHTMLなら書かない(っつーか、外部に出す)。
これでいいだろ。
何で一緒にしちゃうんだか

475:Name_Not_Found
07/06/30 08:33:04 fnkN5MWo
今現在、

function countNodes(){

count=0;

for (n=n.firstChild; n!=null; n=n.nextSibling){
count++;
}
}

と書いているのですが、うまく動作しません…

476:Name_Not_Found
07/06/30 08:53:44
うまく動作しないってどういうこと?
まあ、そのコードは単に n.childNodes.length でいいと思うけど

477:Name_Not_Found
07/06/30 08:57:06 fnkN5MWo
>>476
function countNodes(){

count = 0;

for (i=0; i<this.childNodes.length; i++){

count++;

}

こういう事でしょうか?

478:Name_Not_Found
07/06/30 08:58:35
>>468
いや別に駄目なんて言ってないよ。でも現にそれ書いた
ために動かないというのが今回の質問者のトラブルなんでしょ。
過去スレでも同様のトラブルは何回も出ている。それでも書きたい
なら本人の勝手ということでは。

479:Name_Not_Found
07/06/30 09:07:16
いや、こういうこと。ループにするとか、複雑にする必要はない。
function countNodes(){
count = n.childNodes.length;
}

480:Name_Not_Found
07/06/30 09:09:02
>>477
「派生」という言葉をどういう意味で使っているのかが
分からないんで説明してみて。あるノードの内側にある要素の
数ということなら次のような感じだと思うけど。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function count(node) {
var c = 1;
for(var i = 0; i < node.childNodes.length; ++i) {
var n = node.childNodes[i];
if(n.nodeType == 1) c += count(n);
}
return c;
}
</script>
</head><body onload="alert(count(document.getElementById('d0')))">
<div id="d0"><p>xxx<span>yyy</span>zzz</p><div>aaa</div></div>
</body></html>

481:Name_Not_Found
07/06/30 09:19:37
>>480
おいw
1から始めるから1個多くカウントされてるぞ。

こんなバグを混入させないためにもなるべく簡単に書くのがいい。
この>>480の場合でも一行で終わる。
node.getElementsByTagName('*').length


482:Name_Not_Found
07/06/30 09:23:19
>>481
あ~、「あるノードの内側」を「あるノード以下」に読み直して
ください ^_^;; だって1にしないと内側をカウントする役に
立たないでしょ。しかし getElementsByTagName('*') ですか、
勉強になりますた。

483:Name_Not_Found
07/06/30 12:24:21
また偉そうなバカだな。

484:Name_Not_Found
07/06/30 14:09:26
>>481
それ、見当違いだと思うけど。

<div>なんとか<span>かんとか</span></div>

divの子孫ノードは何個有る?

485:Name_Not_Found
07/06/30 16:13:54
>>484
484のdivの子孫ノードの数は通常は3つ。
480は「あるノードの内側にある要素の数」であって、
「子孫ノードの数」ではないのだけれど、それを分かって質問しているんだよね?

486:Name_Not_Found
07/06/30 16:25:20
子孫ノードを数えるように直してみた。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function count(node) {
var c = 0;
for(var i = 0; i < node.childNodes.length; ++i) {
var n = node.childNodes[i];
if(n.nodeType == 1) c += count(n) + 1; else c += 1;
}
return c;
}
</script>
</head><body onload="alert(count(document.getElementById('d0')))">
<div id="d0">なんとか<span>かんとか</span></div>
</body></html>

487:Name_Not_Found
07/06/30 16:43:04
再帰処理キャ━(゚∀゚)━!!

488:Name_Not_Found
07/06/30 17:01:08
>>485
元質問読めば?

489:Name_Not_Found
07/06/30 17:11:43
>>488
481の元は480だろ。475のことを言ってるのなら476で終わってる。
それが違うのなら言ってきてもよさそうだが477以降出てきていないみたいだしな。
結局476、480の言うようにちゃんと要求を言ってもらわないと
475のしたかったことなんて分からないだろ。

490:Name_Not_Found
07/06/30 17:20:40
innerHTMLのタグの数数えたりして。


491:Name_Not_Found
07/06/30 17:31:55
うーん、なんか>>486じゃまずい気が… attributeなんかも数えて
しまうよな…それともそれもノードということでいいのかな…

492:Name_Not_Found
07/06/30 17:43:58
>>491
属性ノードは要素の子ノードではない。
つまり、>>486では属性の数など数えてはいない。

493:Name_Not_Found
07/06/30 20:32:06
質問させてください。
2次方程式x*x-10*x+20=0 の2つの根のうち、6<=x<=8にある根を計算するプログラムを作ろうと思ってるんですが、"実行しましたが、ページでエラーが発生しました”とでてきてうまくいきません。
ライン:22 文字:19 エラー:':'がありません。 コード:0 らしいです。どこが間違っていますか教えてください><
<html><head>
<meta http-equiv="Content=Script-Type" content=text/javascript">
<tittle></tittle>
<script language="JavaScript" type="text/javascript">
function f(x){
return x*x-10*x+20;};
function g(x){
return 2*x+10;};

</script></head><body>
<script language="JavaScript" type="text/javascript">
var xx=10;
var eps=1.e-8;
for(i=0,i<100,i++){
x2=xx;
xx=xx-f(xx)/g(xx);
r=Math.abs(x2-xx);
if(r<eps){
document.write("x="+xx);
break;
};
};
</script></body></html>



494:Name_Not_Found
07/06/30 21:24:41
根ってなんだよ
因数?それとも解?

495:Name_Not_Found
07/06/30 21:43:01
解だと思います。因数ってよく分からないですが。
ただ、解決しました。ありがとうござます。

496:Name_Not_Found
07/06/30 21:43:05
>>493
Firefoxのエラー表示でも本田美奈子.
> missing ; after for-loop initializer

> ソースファイル: .../test.html
行: 14, 列: 17

> ソースコード:
for(i=0,i<100,i++){

497:Name_Not_Found
07/07/01 00:34:52
二次方程式なら解の公式を使えば簡単かつ精度が上がるんだけど、そういう課題なの?
(x = 5±√5 のうち範囲内にあるものをとる)

それと、片方の解(初期値のとり方で変わる)を出してるだけで
「6<=x<=8にある」という条件が抜けているのが気になる。
おそらくg(x)は微分なんだろうけど、2*x-10じゃないし。

498:Name_Not_Found
07/07/01 00:44:39
まあ要するにJavaScript以前の問題だな
レスからも滲み出てる

499:Name_Not_Found
07/07/01 01:30:09
ニュートン法だから、g(x)はたしかにまちがっている。
しかし、そんなことよりも、回答者がここまで底辺になってしまったことのほうが問題だろうな。
たとえば、一般式を使えば精度が上がるとか、ひどい寝言だ。
いよいよJSは再び暗黒時代に突入だな。

500:Name_Not_Found
07/07/01 01:43:03
>>499
意味が分からん。
二次方程式の解の公式に誤差があるとでも思ってるの?

501:Name_Not_Found
07/07/01 02:00:06
>>499は意味が分かってないか、近似値のことを言ってるんだと思う

502:Name_Not_Found
07/07/01 04:31:17
>>500-501
これはニュートン法という計算方法だ。理系なら大学1年ぐらいで習うと思う。

確かに2次方程式には解の公式があるからニュートン法を使う意味はないが、
プログラムを作っておけば、もっと難しい(解の公式がない)方程式にも
応用出来るから、そのテストとして2次方程式を解いてみたってところだろう。

>>499 は、みんながニュートン法を知らずに的外れなことを言ってることを
言ってるんだと思う。まあ、この程度で底辺と言う方もどうかと思ったが、
意味が分かってない人が分かってる人に対して分かってないと言うのもなぁ。

503:Name_Not_Found
07/07/01 04:43:35
大二病。

504:Name_Not_Found
07/07/01 04:51:11
で、どれとどれが質問者だ?
そこまで分かってるならあとはコードにするだけじゃないか。頑張れ

505:Name_Not_Found
07/07/01 07:48:36
>>494
"方程式の根"、普通に使う表現。

506:Name_Not_Found
07/07/01 10:07:18 2f5hHirb
document.formName.inputName.valueの、
inputNameの部分を変数にしたいのですが、
どのように書けばよいのでしょうか?

507:Name_Not_Found
07/07/01 11:39:50
>>506
document.forms['formName'].elements[inputName].value

508:506
07/07/01 12:45:24
>>507
すみません。どういうことでしょうか?

簡単な例をあげると、
function funcA(a, b) {
  var sum = a + b;
  document.forms.elementsA.value = sum;
}
function funcB(a, b) {
  var sum = a + b;
  document.forms.elementsB.value = sum;
}

<form name="forms">
<input type="button" onClick="funcA(1, 2); funcB(2, 3)">
<input type="text" name="elementsA">
<input type="text" name="elementsB">
</form>

こういうことをやりたいのですが、関数の中身は同じなので、
function func(name, a, b) {
  var sum = a + b;
  //elementsのところに引数のnameを入れたい
  document.forms.elements.value = sum;
}
としたいのですが、ただ単にelementsの場所にnameと書いただけではname="name"を探しにいくので、
引数の値を入れるにはどうしたらよいのでしょうか?

509:Name_Not_Found
07/07/01 12:57:03
最低限、>>1にある、URLリンク(developer.mozilla.org) くらい、読みなさい。

リファレンスを読まずに、スクリプトを書けるわけが無い。

510:Name_Not_Found
07/07/01 13:36:20
>>508
>elementsの場所にnameと書いただけでは
アフォですか?
だから>>507

511:Name_Not_Found
07/07/01 14:09:53 e3Q1EZ72
こんにちは。質問させてください。

ブックマークレットを作っています。

formの中にhiddenとtextの2種類のinputがある場合、
テキストフィールドのみを処理する方法はありますか?

または、テキストフィールドのみにxxx_6桁の連番という
共通のnameがついているのでelementの指定の中に正規表現を
使いテキストフィールドのみ処理する方法も考えられるのですが
document.forms[0].xxx_\d{6}.value;
このようにしてもうまくいきません。
この場合はどのように書けばよいでしょうか?

教えてください。

512:Name_Not_Found
07/07/01 14:13:20
>>508
>どういうこと
そういうこと

513:Name_Not_Found
07/07/01 14:14:34
>>511
>>507

514:Name_Not_Found
07/07/01 14:14:46
最低限、>>1にある、URLリンク(developer.mozilla.org) くらい、読みなさい。

リファレンスを読まずに、スクリプトを書けるわけが無い。

ふざけんな!

515:Name_Not_Found
07/07/01 14:33:24
>ふざけんな!

失礼な!

516:Name_Not_Found
07/07/01 15:20:46
>>508
もしかして、いやもしかしなくても、FAQ>>3のQ8/A8を読んでないでしょ。
テンプレが読めない奴は2度と来るなって。

517:508
07/07/01 16:23:06
>>516
見落としてました。どうもありがとう。

それにしても低脳使用者言語ほど回答者が偉そうと聞くけどまさにその通りですね(笑

518:Name_Not_Found
07/07/01 16:53:16
>>511 下記のtest()の内容をbookmarklet化すりゃいいんじゃないの。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
var a = document.forms.f0.elements;
for(var i = 0; i < a.length; ++i) {
if(a[i].type == 'text') { a[i].value = 'text...'; }
else if(a[i].type == 'hidden') { a[i].value = 'hidden...'; }
}
}
</script>
</head><body>
<form name="f0" action="#"><div>
<button type="button" onclick="test()">TEST</button>
<button type="submit">SUBMIT</button>
<input name="a" type="text"><input name="b" type="text">
<input name="c" type="hidden"><input name="d" type="hidden">
<textarea name="e">test</textarea>
</div></form></body></html>

519:Name_Not_Found
07/07/01 17:31:26
>>517
低脳使用者言語って言葉をどこで聞いたかわかんないけど
捨て台詞はかっこ悪いからやめた方がいいよ

520:Name_Not_Found
07/07/01 17:32:09
>>517
スキルが上がってからもういっぺん>>506から読み直すことをオススメする

521:Name_Not_Found
07/07/01 17:41:27
多重配列ですが
hoge[0,0]とhoge[0][0]とはどう違うのでしょうか?

html_list = new Array();
html_list[0][0]="aaaa"
はエラー出て

html_list = new Array();
html_list[0,0]="aaaa"
はエラーが出ない と微妙に動作が違うんですよ

522:Name_Not_Found
07/07/01 17:54:40
>>521
html_list = new Array();
html_list[0] = new Array();;
html_list[0][0] = "aaaa";
で、どぞ。

html_list[0,0] ってのは完全に間違い。

523:Name_Not_Found
07/07/01 17:58:39
>>522
うーむ、一気にhoge[0][0]は使えないで
hoge[0]でまた配列に定義して…って繰り返さなきゃならんのか
遅くなりそうで心配だな


hoge[0,0]は動くことが幸運なのか。VBだったか他の言語と混ざりまくり


ありがとう

524:Name_Not_Found
07/07/01 18:05:48
hoge['a', 'b', 'c', 'd', 'e', ..., 'z'] == hoge['z']

525:Name_Not_Found
07/07/01 18:29:41
>>517
低能使用者言語ですら質問しなければわからない人乙。

526:Name_Not_Found
07/07/01 19:43:53
>>523
一気に定義するならこんな風に書ける
hoge = [["aaaa","bbbb"],["cccc","dddd"]];

これは以下の文と同じ
hoge = new Array();
hoge[0] = new Array();
hoge[1] = new Array();
hoge[0][0] = "aaaa";
hoge[0][1] = "bbbb";
hoge[1][0] = "cccc";
hoge[1][1] = "dddd";

527:508
07/07/01 22:06:20 2f5hHirb
>>517は僕じゃないです。
どうも答えてくださった方ありがとうございました。
おかげでなんとかできました。

528:Name_Not_Found
07/07/01 22:34:05
>>523
むしろ洩れは2次元配列は
var hoge = new Object();
...
hoge[x + ',' + y] = ...
hoge['0,0'] = ...
みたいに全部ハッシュ表でやるけど。大きい表だったら
考えるけど100かける100なんかならこれで十分。

529:Name_Not_Found
07/07/01 22:46:22
また多重配列ですが、AをBにコピーするにはどうしたらよいのですか?
B = A
だけじゃダメみたいなのですが、これも順番にループ回す必要があるのですか?

530:529
07/07/01 22:52:10
失礼。前言撤回。できてました


今回は順調にプログラミング中...
今度こそ完成しますように

531:Name_Not_Found
07/07/01 23:04:20
embedにsrcをセット(もしくはセットしてcreate)→読み込み→
→完了したらautostartしてhogeにnew Date().getTime()を代入
というのをやりたいんですが、いい方法を教えて下さい。

532:Name_Not_Found
07/07/01 23:05:33
>>529
コピーしたいならループ回す必要がある。


533:Name_Not_Found
07/07/02 00:03:25
a="a\ni"
a = a.replace(/\n/,"")
alert(a)
は当然aiと改行が消されるのですが
HTAでXMLHttpRequestを使って任意のページのソースを取得していると稀にこれでも消えない事があります
\n以外に改行を表すにはどうしたらよいのですか?

534:Name_Not_Found
07/07/02 00:11:23
>>533
\r

535:Name_Not_Found
07/07/02 00:17:09
>>534
replace(/(\n|\r)/,"")でも消えませんでした

html_a[i] = html_a[i].split("\n");
html_a[i] = html_a[i].join("")
だと消えたけど…分らないままなのは不安

536:Name_Not_Found
07/07/02 00:24:12
もしかして /\n/g

537:Name_Not_Found
07/07/02 00:37:52
見事それでした

スッキリ

538:Name_Not_Found
07/07/02 02:49:34 hbQsdqdg
form()でユーザーに入力してもらった値を、textinput(str)で受け取り、Texthyouji(str)
で値を表示させるスクリプトを書きました。
Firefox2で検証したのですが、ブラウザの右下のページを読み込んでるときに出る青いバーが止まりません。
キーボードのEscを押さない限りずっとバーが表示されつづけてページを読み込んでるようなんですが、
エラーコンソールやFireBugではエラーを確認できませんでした。IEとOPERAでは問題ありませんでした。
どこかおかしなところがありましたらご指摘お願いいたします。
function textinput(str)
{texthyouji(str);
}


form();

function form() {
document.write("<form action=\"\" method=\"post\">");
document.write("<input type=\"text\" name=\"inputInt\">");
document.write("<input type=\"button\" value=\"送信\" onClick=\"textinput(inputInt.value)\">");
document.write("</form>");

}


function texthyouji(str)
{document.write(str);
}

539:Name_Not_Found
07/07/02 03:21:03
ヒント:FAQ>>3 Q4

540:Name_Not_Found
07/07/02 05:04:20
>>538
document.close()

541:Name_Not_Found
07/07/02 07:01:05 N024WrJz
複数のチェックを付けると、
それに該当する内容を表示させるJSを探しています。
ご存知の方いらしたら教えてください。
イメージはこんな感じです。


例1.
[選択肢]↓ラジオボタンとかプルダウンメニュー
●赤  ●大きい  ●丸い  
○青  ○ふつう  ○四角  
○黄  ○小さい  ○三角  
--------------------------
[表示フィールド]
太陽についての説明文


例2.
[選択肢]
●赤  ○大きい  ●丸い  
○青  ○ふつう  ○四角  
○黄  ○小さい  ○三角  
--------------------------
[表示フィールド]
太陽についての説明文

リンゴについての説明文

542:Name_Not_Found
07/07/02 07:29:52
外部jsから外部jsを呼び出したいのですが可能ですか?
Javaでいうimport、Cでいうinclude、Perlでいうrequireみたいなものはないでしょうか?

543:Name_Not_Found
07/07/02 08:14:23
>>542
このスレの上の方にあったような気がする…
つかこのスレくらいひととおり目を通してないのかよ!
>>541
各ボタンのonchangeで関数を呼び出し、その関数では
各ボタンのON/OFFを全部収集してそれに対応する処理を
すればいいんじゃないの。全部そのまんま同じなんて
できあいのコードがあるような気はしないから、自分で
勉強して書くしかないんじゃないの。

544:Name_Not_Found
07/07/02 13:18:55
>>542 多重importやrequireをした事ありますか?あなた。

545:Name_Not_Found
07/07/02 13:33:18
それにしても低脳使用者言語ほど回答者が偉そうと聞くけどまさにその通りですね(笑

546:538
07/07/02 13:33:54 hbQsdqdg
>>539-540
お陰様で解決しました。今回はdocument.close()を指定するやり方をとりました。
ありがとうございました。

547:Name_Not_Found
07/07/02 13:55:18
>>545
それは理由があると思う。普通のプログラミング言語だとそれなりの
覚悟があって勉強する人が来るわけで、勉強したくない全部書けとかの
厨房は相対的に少ない。これに対し、JavaScriptの場合はHTMLだけ
勉強したけどそれでJavaScriptもすぐできると勘違いした奴が沢山
流れて来る。だからそんな甘いもんじゃないと言ってあげないと本人
のためにならない。型検査はないしプロトタイプオブジェクト指向
だしDOMとかAjaxとか言語仕様と別のことを沢山勉強する必要があるし
実は非常に大変なんだよね。だからこれからも甘ちゃんには厳しく
行きたいと思っていまつ。甘ちゃんにつけ上がらせたらロクなことない。
もちろんまっとうな質問はまっとうに回答してるとも。過去スレを
見れば証明されているよな。

548:Name_Not_Found
07/07/02 14:17:29
>>547
質問者を馬鹿にしても許される JavaScript (笑)

549:Name_Not_Found
07/07/02 14:36:45
PHPとPerlはできるけどJavaScriptはわからない

550:Name_Not_Found
07/07/02 15:44:06
'false''という文字列を真偽値に型変換できますか?

現在、str == 'true':true:false;みたいな感じでやってるんですが他にスマートな方法があれば教えてください。

551:Name_Not_Found
07/07/02 16:18:05
>>547-548
JavaScriptは釣りでいへば、フナだ。
鮒に始まって鮒に終わる。
雑草の如く生涯を貫くJavaScripterでありたい。

552:Name_Not_Found
07/07/02 17:42:34
>>550
str == 'true' だけでいい

そもそも真偽値を文字列で管理しなきゃいけない場合って何なのか、個人的に気になる

553:Name_Not_Found
07/07/02 20:37:15
>>552
文字列で出力したものを読むこともあるんじゃないかな
cookieとか

554:Name_Not_Found
07/07/02 20:59:49
HTAで
setTimeout
httpoj.onreadystatechange = function(){
if(httpoj.readyState==4){on_loaded(httpoj);}
}
httpoj.send( "" );
といったあとから来る命令を使っているスクリプト書いているんですが、こういう命令を使うスクリプトってウィンドウのクローズボタンでいきなり終了してもいいもんなんですか?
先程httpoj.sendの結果が全然帰ってこなくなり、タスクマネージャー開いてみたら
mshta.exe Microsoft(R) HTMLアプリケーション ホスト
がズラーッと20個くらい起動しっぱなしでした。ログオフしたら治ったのですがこれを防ぐにはどうしたらよいのですか?
クローズボタンじゃなくて、きちんと「終了する」を命令しないといけないもんなのでしょうか?

555:Name_Not_Found
07/07/02 21:34:20
>>554
それってイベントハンドラとその要素との間に循環参照があると
メモリリークするって IE のバグじゃないかしら
最近の Update で治ったと思っていたのだけれど、まだ治ってないみたいね
this とか使うのをオススメするわ

556:Name_Not_Found
07/07/02 22:58:23
>>555
そういうのはリークとは言わないよな。タスクが終了するような
手当は絶対に必要。だかHTAなんて知らんもんね、HTAのスレが
どっかにあったと思う。

557:Name_Not_Found
07/07/02 23:22:22
HTAってちょっとしたアプリケーション風味なコントロールができるただのHTMLでしょ。
HTMLの拡張子をHTAにしただけで動くものなんだから。

558:Name_Not_Found
07/07/02 23:25:53
htaとかhtmlは1つのファイルで完結するからいい
Visual C++ 2005 Express Editionとかなんでフォルダ作ってそん中にあちこちファイルつくんねん
しかもフォルダの位置変えたらなんかエラー出るし
その辺詳しく、詳しく開設したHPないんかな

559:Name_Not_Found
07/07/02 23:52:14
>>558
> htaとかhtmlは1つのファイルで完結するからいい
それはただの書き捨て・使い捨てスクリプトだからだろ。
作りこめば一月もすれば何であろうともファイルは増える、数十数百とな。
一つの機能のCRUDを分けた瞬間に最低でも4つのファイルが増える。
まあ、無職の日曜プログラマアに突っ込んでもしゃあないけどなw

560:Name_Not_Found
07/07/03 00:06:49 M6emMvwG
javascriptとactionscriptってどちらがゲームなどを作るのに向いているのでしょうか?

561:Name_Not_Found
07/07/03 00:10:59
アクション仮面

562:Name_Not_Found
07/07/03 00:32:01
ほほほーーい

563:Name_Not_Found
07/07/03 01:18:30
select要素内の特定のoption要素を選択不可または非表示にしたいのですが、可能でしょうか?
IE6を対象ブラウザとしていますが、options[3].disabled = trueや.style.display = "none"
は効き目なしでした。

564:Name_Not_Found
07/07/03 01:39:57
>>563
「IE option disabled」で検索したらなんかあったぜよ。
onchangeで見張って、選択されたらずらしちゃう感じみたい。
URLリンク(apptaro.seesaa.net)
URLリンク(apptaro.up.seesaa.net) // サンプル

// removeChildで消しちゃったほうが楽そう。


565:Name_Not_Found
07/07/03 01:47:58
>>563
このスレにselectの選択肢を全部消して作り直す例があるだろ。
このスレすら目を通すことができないのかね。

566:Name_Not_Found
07/07/03 04:25:15 L/mfD9ph
JavaScriptもPHPみたいに専用の関数ってあるのでしょうか?
これからJavaScriptを覚えたいのですがイメージがわきません。
たとえば、PHPでしたら文法と関数を覚えればたいていのことはできるのですが、
JavaScriptの場合は文法のほかに何を覚えていいのかイメージがわかりません。
どなたか教えてください

567:Name_Not_Found
07/07/03 04:54:36
あなたはPHPもろくに理解していないのではないでしょうか?
言っていることが支離滅裂です。

568:Name_Not_Found
07/07/03 05:07:57
>>566
>567 のような構ってチャンはシカトして良いですよ(笑)
JavaScript で何をしたいのかがよく分からないので
とりあえず幾つか例を挙げるだけになりますが……。

画面にウィンドウを表示させるなど、視覚効果に使いたい
 → DOM, CSS, Math
画面遷移をせずにデータを取ってきて表示させたい
 → XMLHttpRequest, DOM, RegExp
カレンダー
 → Date
その他いろいろ
 →各種ライブラリ

最近ではライブラリも色々出ているので、
「JavaScript ライブラリ」などで検索してサンプルを見るのも手っ取り早いです。

569:Name_Not_Found
07/07/03 05:27:22
いや理解してないだろ。
>JavaScriptもPHPみたいに専用の関数ってあるのでしょうか?
普通こんな質問しない。
PHPでOOPやってないならまずはそちらを勉強したほうがイメージわきやすいと思う。
PHPよりOOPはJavaのほうがいいけど。(PHPとJavaのOOPは比較的近いからわかると思う)

できることやることは基本的にどの言語でも一緒。
違う点はサーバサイドとクライアントサイドでできることが違ってくるという点。
そこがイメージわかないと言ってるんだとは思うが、
そこらへんはプログラムやってれば体でどういうことができないのかわかってくる。

まずは難しく考えず、クライアント側でもサーバ側でもできるスクリプトから書いていけばいい。
(例えば文字表示するだけのプログラムや計算して結果表示するプログラムとか)

570:Name_Not_Found
07/07/03 05:36:58 L/mfD9ph
なんか必死だね

571:Name_Not_Found
07/07/03 05:39:05 L/mfD9ph
>>568
ありがとうございます。
文法からはじめてみます。

572:Name_Not_Found
07/07/03 05:40:48
お前が必死だよwwwwwwwwwww

573:Name_Not_Found
07/07/03 05:49:21 Irggis4z
function method(arg) {
  if (arg == 1) {
    var str = "a";
  } else if (arg == 2) {
    var str = "b";
  }
  return str;
}

こんなのをJsLintにつっこんだところ、
エラーが出るのですが、なんでですか?

574:Name_Not_Found
07/07/03 05:56:38
>>573
どんなエラーが出るのですか?

575:573
07/07/03 05:58:30 Irggis4z
var strがブロック内に宣言できないのと、
2つめの(elseifのところ)var strが既に宣言されると言われます。

ブロック内ってなんのことやらわからず・・・orz

576:Name_Not_Found
07/07/03 06:09:11 10uVhSb2
>>575
Mozilla で JavaScript console を使えば良く判る.
この場合は str が 2度宣言されていることになるので
Error には上がらないけれど, Warnings でリストアップされる.

577:Name_Not_Found
07/07/03 06:17:33 Irggis4z
>>576
どうもありがとうございます。
同じ変数があった場合、後者のものに上書きされないのですね。
教えていただいたとおりMozillaを使ってみてみたいと思います。

578:Name_Not_Found
07/07/03 06:20:27
されるよ

579:Name_Not_Found
07/07/03 06:28:58 10uVhSb2
>>577
何か誤解されているような...

添削:
function method(arg) {
var str;
if (arg == 1) {
str = "a";
} else if (arg == 2) {
str = "b";
}
return str;
}


580:575
07/07/03 06:31:55 Irggis4z
>>579
あぁなるほど。
functionの外にvar strと書いてみたのですが、それでもエラーがでたので・・・
functionないのifブロックの前に宣言しとけってことだったのですね。
スコープの範囲を勘違いしていました。

581:Name_Not_Found
07/07/03 06:50:01 10uVhSb2
>>579
まだ話が伝わってない...
function 内での "var str" 記述は 1回 だけで良いという意味で,
2回目からは "無駄なことだ" と指摘される.
JavaScript の scope は非常に単純で function の中で使われるかどうかが重要.
function 中の どこで使われようが意味が変わることはない.

582:575
07/07/03 06:54:39 Irggis4z
頭悪くてすみません・・・
ようやく理解しました。2回目以降はstrでいいということですね。
JavaScript難しい(´ω`;)

583:Name_Not_Found
07/07/03 08:27:24
hoge1()//0
function hoge1(){
//1
hoge2()
}
function hoge2(){
//2
hoge3()
}

みたいに、今どんだけfunctionで潜ってる(?)かを調べるにはどうしたや良いのですか?

584:Name_Not_Found
07/07/03 08:32:08
URLリンク(www.red.oit-net.jp)
↑ここのjavascriptで作成された電卓をキーボードのテンキーで
入力できるように改造することは出来ますでしょうか?

585:Name_Not_Found
07/07/03 09:17:56
>>583
自作の関数だけなら、グローバル変数を1つ用意して各関数の入口で
1増やし出口で1減らすとかで数えるんじゃないの。
>>584
windowのonkeydownイベントハンドラで各キーが押されたら対応する
ボタンと同じ動作をするように手直しすればいいんじゃないの。
まあがんばって(全部は書かないけど個別に分からないところが
あれば質問どぞ)。

586:Name_Not_Found
07/07/03 12:46:30
ボタンが押されるなどのイベントが起きると、全体ではなくひとつの画像だけ更新されるようにするにはどのようにしたらいいのでしょうか?

587:Name_Not_Found
07/07/03 12:59:04
>>586
その画像がキャッシュされないようにするには、後ろに乱数をつけるとか?
document.images.画像の名前.src = '画像のURI' + '?' + Math.random();
画像ファイルは変わらず画像のURIが変わるとかなら、
後ろに何かつけたりする必要はない。

588:Name_Not_Found
07/07/03 13:11:58
>>585
> >>583
> 自作の関数だけなら、グローバル変数を1つ用意して各関数の入口で
> 1増やし出口で1減らすとかで数えるんじゃないの。
なるほど・・・

589:Name_Not_Found
07/07/03 16:37:58
text= "ab12cd";
reg_a="1[0-9]";
re = new RegExp(reg_a);
if(re.test(text)){alert("ok")}
これや
reg_a="\d";
ではok出るのに

reg_a="1\d";

reg_a="\d+";

でokが出ないのは何故なのでしょうか?

590:Name_Not_Found
07/07/03 16:43:02
>>589
ブラウザのURL欄に「javascript: alert("\d");void(0)」入れて
実行してみ。

591:Name_Not_Found
07/07/03 16:51:32
>>590
"d"となります

うーむ、正直alert("\d")が"d"を表示される事と、正規表現で\dがどのように動作するのかの関連性を理解できませんが…
これは対応していない ってことですか?

592:Name_Not_Found
07/07/03 16:54:37
>>591
だから「new RegExp("\d")」は「new RegExp("d")」と同等なの。
そしてアンタのテストデータには「d」が入っているよね。おめでとう。
「alert("\\d")」とかも試すと幸せになれるかもね。

593:Name_Not_Found
07/07/03 16:56:31
>>592
あああなーるへそ
A="\d"は内部的には"d"となっちゃうのね
A="\\d"だと内部的にも"\d"となって云々


ありがとう

594:Name_Not_Found
07/07/03 17:17:34
バカさらけ出す前にとほほでも読んで来い、ヴォケ

595:Name_Not_Found
07/07/03 17:36:52
読んだけど忘れていました^^;

596:Name_Not_Found
07/07/03 19:10:21
配列を使おうとおもうのですが、
リファレンスにかいてある、配列リテラルと、配列オブジェクト
どちらを使えばいいのでしょうか?

597:Name_Not_Found
07/07/03 19:44:31
好きなほう使えばいいと思います

598:Name_Not_Found
07/07/03 19:59:24
new Array(...)は「...」が1個でしかも数の時は
その要素数の配列ができてしまうという仕様。
[...] はそのような変わったことが起きない。
だから [...] の方を勧めるね。

599:Name_Not_Found
07/07/03 20:37:25
[...]だと「新たに配列を作る」ってことを言葉として書いてないから奨めかねる

600:Name_Not_Found
07/07/03 21:22:16
どちらも使わなければいいと思います

601:Name_Not_Found
07/07/03 21:50:05
ばか

602:Name_Not_Found
07/07/03 22:10:07
リンゴ 赤 100円
オレンジ オレンジ 70円
メロン 緑 300円
という多次元配列を作りたいのですが、

array(

603:602
07/07/03 22:13:09
途中で送信してしまった。。。すみません。

var arrayFruits = array(array("リンゴ", "赤", 100), array("オレンジ", "オレンジ", 70), array("メロン", "緑", 300);

こんな書き方はだめなんでしょうか?
ちなみにオレンジの70円
arrayFruits["オレンジ"][2](PHP風に…)をとりたいのですが、
オブジェクトを指定してくださいと言われます。

604:Name_Not_Found
07/07/03 22:16:49
array() ?

605:602
07/07/03 22:16:49
あれ・・・ちょっとおかしいですね。
PHP風だと
$arrayFruits = array(
array("リンゴ" => array("color" => "赤", "price" => 100),
array("オレンジ => array("color" => "オレンジ", "price" => 70),
array("メロン" => array("color" => "緑", "price" => 300)
);

で、
$arrayFruits["オレンジ"]["price"]ですね・・・

606:Name_Not_Found
07/07/03 22:19:01
>>603
JSONそのものだから、らくにできるだろ。

607:602
07/07/03 22:22:03
>>606
Wikipediaで調べてきました。どうもありがとうございます。
しかし不完全でみっともないPHPのコードなんて晒してすみませんでした・・・
>>605も変だ・・・しばらくやってなかったのでリハビリからはじめないと・・・

608:Name_Not_Found
07/07/03 22:27:26
リハビリというか、そろそろ4なんか捨てて5を使おうな。すれ違いだが、JSにも同じ風潮があって、このスレでもJS1.7が全く普及しない。たとえば、1.7を使えば順列列挙なんてあっさりできるのに、先月も延々と痛い議論が続いてたし。

609:Name_Not_Found
07/07/03 22:34:08
>>608
このスレで古いJavaScriptが捨てられないのならPHP4を捨てろなんて事言える立場にないだろ

610:Name_Not_Found
07/07/03 22:38:23
>>608
またおまえか

611:Name_Not_Found
07/07/03 22:42:45
Web制作板である以上、IEが対応してなければどうにもならん。
Array拡張程度なら何とかなるが。
IEでgeneratorやdestructuring assignmentを行う方法があるならぜひ聞きたい。

612:Name_Not_Found
07/07/04 00:52:16
使ってほしかったらさっさと日本語ドキュメントを書け

613:Name_Not_Found
07/07/04 03:08:51
IE の独自拡張にさんざ文句言って置きながら
Mozilla の独自拡張は諸手で喜ぶメンタリティが本気で分からない。

614:Name_Not_Found
07/07/04 04:01:14
まーた脳内で敵を作り出してるのか

615:Name_Not_Found
07/07/04 05:10:19
>>613
使うと文句言われるIE独自拡張の例を挙げてくれ

616:Name_Not_Found
07/07/04 07:55:06
洩れもECMAが対応するまではJS1.7の機能を使う気はないな。
リファレンスチェックするときECMAでチェックしてるし。

617:584
07/07/04 10:12:53
>>585
ありがとうございました。

618: ◆OVNYPzgZN2
07/07/04 11:14:47 d2uLlG6A
質問ですが、
document writeで出力する文字にHTML特殊文字があった場合にそのまま表示させるのは危険性があると思うので
HTML特殊文字のエスケープ処理を行いたいのですが、そのような関数はjavascriptにはありますでしょうか?
いろいろ調べた限り、javascriptの出力をエスケープをしているコード自体がなく困っています。


619:Name_Not_Found
07/07/04 11:28:14
>>618
ないね。もっともHTML的にトラブルになるのは「<」と「>」
だけだと思うけど。
str.replace(/</g, '&lt;').replace(/>/g, '&gt;')
じゃ不十分かな。

620:Name_Not_Found
07/07/04 12:49:29
>>619
あと半角の「&」もだよ。
半角「&」は真っ先に変換しないと < や > が二重に変換されるので注意。

621:Name_Not_Found
07/07/04 13:29:39
>>620
おお、すっかり忘れていた。アドバイス感謝。

622:Name_Not_Found
07/07/04 17:08:37
'はしなくてもいいの?
あ、sqlじゃなければいらねえかな

623:Name_Not_Found
07/07/04 17:52:31
質問です。Javascriptに排他制御は無いんですか?

624:Name_Not_Found
07/07/04 17:56:59
無いんですよ

625:Name_Not_Found
07/07/04 18:02:22
わかった、自分で実装してみる

626:Name_Not_Found
07/07/04 18:03:30
>>623
ピーターソン使えやボケが

627:Name_Not_Found
07/07/04 18:10:06
>>626
大学で習ったばかりだから、それを使う予定

628:Name_Not_Found
07/07/04 18:28:13
>>623-627
ブラウザ上のJavaScriptはシングルスレッドだから。
排他制御いらないでしょ。

629:Name_Not_Found
07/07/04 18:42:54
使いたいから使うわけで、必要か不要かはおまえ一人がきめることじゃない

630:Name_Not_Found
07/07/04 18:57:12
>>629
そりゃ結構だけど不要なのに排他制御のコードつけるって何の意味も
ないと思うよ。ま、ヘタ打って動かないもの(ブラクラ)作らないようにね。

631:Name_Not_Found
07/07/04 19:32:34
>>618
Attr の &, ', "
Text の <, &, ]]>
Comment の --, 末尾の -
CDATASection の ]]>
ProcessingInstruction の ?>

JavaScript リテラル内の ETAGO, 入れ子の文字列リテラル
CSS の url(), expression()

632:Name_Not_Found
07/07/04 20:32:27
>>630
setTimeoutがあるけどこれは処理割り込まないの?

633:Name_Not_Found
07/07/04 20:39:34
>>632
割り込まない。
というか、全体的な処理がfunctionをatomとして処理スタックにつんでいくイメージ。
再描画もたいていそのタイミング(functionの切れ目)で行われることが多い。

634:Name_Not_Found
07/07/04 21:25:34
質問させて下さい

URLリンク(www.simplexsimple.com)
はページ上部にしか移動できませんが
任意のidのフラグメントを指定した、上サイトのjavascriptは実装可能でしょうか?

よろしくお願いします

635:Name_Not_Found
07/07/04 22:11:38
>>634
どーにでもなるでしょ。idを指定してその要素の位置をoffsetTopで
取得、現在のscrollTopとの差で移動量を計算し、window.scrollBy()
で好きなように移動してけばいいじゃん。書くスキルがないのなら
勉強してね。

636:Name_Not_Found
07/07/04 23:02:18
>>635

技術的に可能という事が解りました
勉強します
ありがとうございました

637:Name_Not_Found
07/07/04 23:33:26 2HLrSMHH
質問です。
関数の中でreturnは2つ書けませんか?変数xがあるとして、
function test(){
return x;
//.....
//.....
return y
}
で、xとyを並べて表示させたいのですが。
ご教示ください。

638:Name_Not_Found
07/07/04 23:41:32
>>637
C言語でインラインアセンブラの勉強をしてみよう!

639:Name_Not_Found
07/07/04 23:56:11
return x; の時点で、関数抜けちゃうよ
return x,y; じゃだめなの?

640:Name_Not_Found
07/07/05 00:35:05
>>639
コンマ演算子は前を捨てるから、それだと y しか返らないよ。

return [x, y]; と配列にして返せば?

受け取り側が a = test(); なら、a[0] と a[1] で取り出せるだろう。

641:Name_Not_Found
07/07/05 00:48:15
>>637
普通の言語のスレでは遭遇しなさそうな質問だなあ。
function test1() {
if(Math.random() < 0.5) { return 'A'; }
return 'B';
}
では半々の確率で 'B' だけが返ったり 'A'と'B'とが
返ったりするわけか。
function test2() {
for(var i = 0; i < 10000; ++i) return 'A';
return 'B';
}
では 'A'が1万個と 'B'が1個返ったりするわけか。
あんたの脳内では。ちょっとすごいね。

642:Name_Not_Found
07/07/05 01:07:01
>>641
お前よりは尊敬できるけどな

643:Name_Not_Found
07/07/05 05:20:45
returnが呼び出されると関数は実行が即座に停止される。
つまり複数の値を返したい場合は配列を使う。

644:637
07/07/05 06:52:10
みなさんありがとうございました。納得です。

645:Name_Not_Found
07/07/05 11:06:10
>>633
じゃあyieldが実装されてしまった今は
関数単位でみればその前提は無くなるわけだね

646:Name_Not_Found
07/07/05 11:58:51
>>645
setTimeout()登録関数の途中でyieldするとどうなるわけ?
(あなたの勝手な期待ではなくどのように動作するのが仕様
かということだけど。)

647:Name_Not_Found
07/07/05 12:48:00
オブジェクト化してアクセスすりゃいいじゃん

648:Name_Not_Found
07/07/05 12:58:40
>>645
なにをいっているのかよくわからんな。
yield入りfunctionはジェネレータだから何もかわらんよ。

649:Name_Not_Found
07/07/05 14:59:15 vgqMaeo7
質問です。
function foo(){
this.myfoo=goo;
return this;
}
というコンストラクタのとき、return thisは必須ですか?

650:Name_Not_Found
07/07/05 15:14:59
>>649
必要ないです。

651:Name_Not_Found
07/07/05 17:01:48
コンストラクタの中で object を return すると
prototype やら何やら関係なくその object が返ってきちゃうんだよな
だから return this ってやると this っていう object がそのまま返っちゃうんだけど
これは結果としてコンストラクタとやってることは同じだから何も変わらないっていう、
中途半端な処理。あんまりオススメしない。

652:Name_Not_Found
07/07/05 18:39:59 bhyUg2pC
質問です。DOMの定義が今ひとつわからないんです。
DOMというのはブラウザごとにオブジェクトモデルはことなるので、
W3Cがブラウザごとに異なるオブジェクトモデルを統一するために作った
インターフェイスと言うことなのでしょうか?

653:Name_Not_Found
07/07/05 18:51:42
>>652 DOMの定義ならこれを嫁。
URLリンク(www.w3.org)
今ではブラウザとは無関係に「HTML/XMLドキュメントを操作するAPI」
ということになってる。実際Java(JavaScriptでなく)とかでもDOM使えるし。

654:Name_Not_Found
07/07/05 18:56:43
他言語で扱えるかどうかは聞いてない

655:Name_Not_Found
07/07/05 18:58:29
IDどうしたの?

656:Name_Not_Found
07/07/05 21:12:05
>>649
foo.call({}) のように使う事はよくあるだろう。
10年以上前なら意味がないと言ってもよかった。
しかし、apply()/call() 以降のここ約10年では、意味がある。
特にJScript5.5以降でこれらが採用され、それが普及したここ何年かは、意識して書き分けなければならないだろう。

657:Name_Not_Found
07/07/05 23:13:19
>>652
主にプログラミング言語からXML/HTMLを操作するためのデータモデルおよびAPI。
各インターフェイスが何を抽象化したものなのか
自分でパーサー書いてDOMツリーを構築してみれば嫌でも理解できる。
同時に標準APIの有難さと面倒くささもな。
DOMとは異なるデータモデル(XMLInfoset, XQuery/XPath等)と比べてみてもいい。

658:Name_Not_Found
07/07/06 04:42:12 IYjKoD5h
>>653 >>657

有難うございました。javascriptのdocumentオブジェクトとDOMのdocument interface
においてdocument.bgColorはどっちのアプローチになるのでしょうか?初歩的な質問
で申し訳ないです。

659:Name_Not_Found
07/07/06 08:36:59
>>658
W3C DOMの最初の版であるDOM Level 1にこういう記述がある。
URLリンク(www.w3.org)
つまりbgColorとかはDOM Leve 1では「古いから廃止」に
なってるわけで、含まれていないと考えるべき。
DOM Level 1以前の各ブラウザがサポートしていた共通
部分のことを「DOM Level 0」と通称するが、これは
あくまでも通称であってW3Cが標準化しているものではなく
何と何がDOM Level 0なのかは厳密に定まっていない。
だからbgColorみたいな古いものがDOMかどうかという質問は
「W3Cの定めるDOMではない」「W3C以前のDOMだと言うことも
できなくはない」ということかな。


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