+ JavaScript の質問用スレッド vol.63 +at HP
+ JavaScript の質問用スレッド vol.63 + - 暇つぶし2ch557:Name_Not_Found
08/03/28 21:11:17
>>555
その表をdivで囲んでinnerHTMLを表示させてチェックしてみ。
それで間違いがないようなら、そのinnerHTML文字列を別の
divのinnerHTMLに突っ込めば印刷できるんじゃないかな。
>>554
JavaScript言語にはそんなのない。よそのスレへいけ。

558:Name_Not_Found
08/03/28 21:24:21
>>555
生成したエレメントを含むページ全体をinnerHTMLで取得し、
それをHTMLに保存して、各ブラウザでの出力結果を比較。
・違っていれば違う個所を検証。ついでにIE6での出力結果を他のブラウザで表示してみる。
・同じであればブラウザ毎のHTML解釈の差なので、それが解消されるような形式にする。

559:Name_Not_Found
08/03/28 21:30:28
JavaScriptでもHTMLでも無く、単にCSSの問題ではないかという気もするけれど。

560:555
08/03/28 21:42:22
みなさん、レスありがとうございます。

>>557 さんや>>558 さんの言われたように、生成されたHTMLを出力してみました。
すると、問題は、複数ページにまたがる表を印刷することにあるようでした。
どのブラウザでも、生成されたHTMLを表示することはできますが、
IE7やFirefoxなどのページにフィットするように印刷を調整するような
利口なブラウザは印刷ができないようでした。

その発想はなかったです。
問題の切り分けができました。
ありがとうございました。

561:Name_Not_Found
08/03/28 23:50:36
質問です。

下記のようなコード (ボタンを押すと、■■■ が徐々に消える) の時、
ボタンを連続して押すと、前の動作が終わる (opacity が 0 になる) 前に
後にボタンを押した動作と重なって動いてしまいます。
何か解決方法はあるでしょうか?



<div id="test">■■■</div>

<button onclick="anime();">ボタン</button>

<script type="text/javascript">
function anime() {
var elmTest = document.getElementById('test');
var elmTestStyle = elmTest.style;
elmTestStyle.zoom = 1;
elmTestStyle.filter = 'alpha(opacity=100)';
elmTestStyle.opacity = 1;
var numOpa = 100;
var objTimer = setInterval( function() {
numOpa -= 10;
elmTestStyle.filter = 'alpha(opacity=' + numOpa +')';
elmTestStyle.opacity = numOpa / 100;
if (numOpa == 0) {
clearInterval(objTimer);
}
}, 50);
}
</script>


562:Name_Not_Found
08/03/29 00:38:56
>>561
var objTimer = null;
function anime() {
if ( objTimer ) return;
var elmTest = document.getElementById('test');
(略)
if (numOpa <= 0) {
objTimer = clearInterval(objTimer);
}

ボタンを押す度に新規にopacity100から開始したい場合は、最初のチェックでreturnの代わりに、
if ( objTimer )
objTimer = clearInterval(objTimer);
とか。

563:Name_Not_Found
08/03/29 00:45:16
> var elmTestStyle = elmTest.style;

誰得

564:Name_Not_Found
08/03/29 03:47:08
質問です。
最近JavaScriptの勉強を始めたものですが、
ページトップへのスムーズなスクロール移動を実現したくて、
下記のようなソースを見つけました。

function jumpToPageTop(e) {
UAGENT = navigator.userAgent.toUpperCase();
if (UAGENT.indexOf("MSIE") >=0) {
pos = event.y;
} else {
pos = e.pageY;
}
pageScroll(pos);
}
function pageScroll(posi) {
dist = posi / 6;
nPos = parseInt(posi - dist);
scrollTo(0,nPos);
if (nPos > 0) {
setTimeout("pageScroll(nPos)",10);
}
}

565:Name_Not_Found
08/03/29 03:47:39
自分的には、こっち記述の方が正確だと思うんですけど

g_TopPos = 0; //ページトップの座標
function jumpToPageTop(e) {
UAGENT = navigator.userAgent.toUpperCase();
if (UAGENT.indexOf("MSIE") >= 0) {
g_TopPos = event.y;
} else {
g_TopPos = e.pageY;
}
timerID = setTimeout("pageScroll()", 10);
}
function pageScroll() {
nPos = parseInt(g_TopPos - g_TopPos / 6);
scrollTo(0, nPos);
if (nPos <= 0) {
clearTimeout(timerID);
}
}
これだと動作しません。
setTimeout()は、指定時間ごとに指定した処理を繰り返すのではなく、
指定時間後に指定した処理を実行するのですか?

566:Name_Not_Found
08/03/29 04:09:39
564,565です。
すいません書き込みしてから気づきました。
g_TopPos = 0; //ページトップの座標 ではなく ページトップへのボタンの座標です。

567:Name_Not_Found
08/03/29 06:09:49
>>566
動くかどうか試してみて

function jumpToPageTop(evt) {
  if (!evt) return true;
  var pos = evt.pageY || evt.y || 1024;
  var timer = setInterval(function() {
    scrollTo(0, pos = pos / 6 * 5 | 0);
    if (!pos) clearInterval(timer);
}, 50);
  return false;
}

<a href="#top" onclick="return jumpToPageTop(event);">top</a>

568:Name_Not_Found
08/03/29 06:26:55
>>567さん どうもです。
動きました。
setInterval()は指定時間ごとに指定した処理を繰り返す。
setTimeout()は指定時間後に指定した処理を実行する。
という解釈でいいということですね。
どうもありがとうございました。

569:Name_Not_Found
08/03/29 06:39:05
561です。

>>562
おーなるほどーそういうことですか!
事前にタイマー用の変数を null にセットしとくと!
ありがとうございます!

>>563
setInterval など、短時間で繰り返し処理が行われる場合、
「 . 」 によるアクセスを1つでも減らして、高速してるかも?
という魂胆です。

570:Name_Not_Found
08/03/29 07:07:17
>>568
もしかしてそれが聞きたかっただけ?
URLリンク(developer.mozilla.org)
せめてこれくらいは読んでから始めたほうがいいと思うよ


571:Name_Not_Found
08/03/29 08:37:05
>>557
URLリンク(www.mozilla-japan.org)
suffixの"L"は、JavaScript2.0の仕様、実装されるかどうかは知らんが…
ES4には、long系の仕様は採用されてないみたいだがな。

572:Name_Not_Found
08/03/29 09:56:53 BTzKmwRa
一つのボタンを作って、
押すと片方は普通に表示されて、もう片方は半透明に、
もう一回押すと逆になる…

という事はどうやるのでしょうか?

573:Name_Not_Found
08/03/29 10:07:07
一つのボタンの片方とは?

574:Name_Not_Found
08/03/29 10:11:29
作文の勉強から始めろ

575:Name_Not_Found
08/03/29 10:56:35
>>572
このスレは他のJavaScriptができるだけの技術オタクの板とちがって言語
一般に五月蝿い。教養ある人間の読むスレとしてはそこがよい。

>一つのボタンを作って、
まず、ボタンを作るとはどういうことかを定義すること。
最も簡単なのはHTMLを例示する。

>押すと片方は普通に表示されて、
「普通に」とはあなたにとっての普通のことに過ぎない。
最も簡単なのはその「普通」を具体的な表現で例示する。

>もう片方は半透明に、
プログラムでは突然「もう片方」という言葉が出てきた時点で
停止する。人間のことばも同じ。

半透明とは何か。filter効果なのか背景画像処理なのか。
自分がわかっているだけでは人には伝わらない。

>もう一回押すと逆になる…
もう一回どこを押すのか。もう片方の何かか。最初に押したボタンか。

自分でもわからないことは人にもわからない。

576: ◆.PT9876/4U
08/03/29 11:07:38 1pXhFFKV
>>572
誘導:
JavaScript 手取り足取りスレッド
スレリンク(hp板)l50

スレッドの性格上, 一件落着までには時間が掛り,
現在 3 件の未解決問題を抱えているため... かなり迷いました.
"駄目もと" って気分で尋ねてちょ.

577:Name_Not_Found
08/03/29 11:30:46
>>572
var bFoo = true;
function toggle()
{
document.getElementById('foo').style.opacity = (bFoo?0.5:1);
document.getElementById('bar').style.opacity = (bFoo?1:0.5);
bFoo = !bFoo;
}
<input type="button" value="ボタン" onclick="toggle()" />
<div id="foo">片方</div>
<div id="bar">もう片方</div>

質問の趣旨が不明なので超簡易版。opacityの関係上IE6では機能せず。
JavaScript自体にあまり馴染みが無いなら>>576のスレへ。

578:Name_Not_Found
08/03/30 17:24:46
配列のpopというのがありますけど、辞書で見てみてもこの単語とJavaScriptの
意味がいまひとつピンと来ません。どういうことでpopなのか教えていただけま
せんか。


579:Name_Not_Found
08/03/30 21:04:09
>>578
そもそもPerlあたりから来てるんじゃないの。だから
スレ違いのような来もするけどな。スタックって習ったことない?
スタックとはLIFO(Last In, First Out --- 最も最近に入った
データが取り出される)ようなコンテナで、データを末尾に付け
加える操作をpush、末尾にあるデータを取り出す(取り除く)操作を
popと呼ぶならわし。で、配列のpushとpopを使うと配列をスタック
として利用できる。

580:Name_Not_Found
08/03/30 21:09:07
質問です。

onloadイベント内でinnerHTMLにタグ(外部から取得する為固定)を挿入した後、
レンダリング完了を待ってから、挿入したタグ(チェックボックス等)の操作を
したいのですが、レンダリング完了を取得する方法はないでしょうか?

レンダリング前だとObjectの参照が出来ないようです。
その為、タイマーで一定時間待機してから操作を行っていますが、
もう少し確実な方法はないでしょうか?

対象のブラウザはIE6以降です。

581:Name_Not_Found
08/03/30 21:13:04
>>580
そういうのって、setTimeoutで待ち時間「0」で大丈夫というか
十分確実なんじゃないの。

582:580
08/03/30 21:18:03
>>581 レスありがとうございます。
それが待ち時間500msくらいに設定しないと上手く動いてくれないんです。
IEのデータバインド機能も使っているせいかな。。。

583:Name_Not_Found
08/03/30 21:33:17
>>582
うーんそうなんだ? innerHTMLの一番最後に適当な要素をIDつきで
用意し、document.getElementById()でそのIDが取れるようになる
まで一定時間間隔で繰り返しチェックとか。

しかしどっちかというと、innerHTMLを使うよりdocument.write
で当該箇所に書き出して完了は普通にonloadで見るという方が
素直な気もするけど。何回も差し替えるならinnerHTMLでないと
駄目だけどね。

584:578
08/03/30 22:19:05
>>579
そうですね。Perlはよくわからないです。でも会社の
研修のとき簿記でそんなの習った記憶あります。
わかりやすいご説明ありがとうございました。

585:580
08/03/30 22:21:52
>>583

>innerHTMLの一番最後に適当な要素をIDつきで
>用意し、document.getElementById()でそのIDが取れるようになる
>まで一定時間間隔で繰り返しチェックとか。

ありがとうございました。
そのような方法あったんですね!後者の方も含めて試してみます。


586:Name_Not_Found
08/03/30 23:48:42
テンプレにある以下のページの見方を教えてください。

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

たとえば、DOMFocusInがFireFox3で存在して、FireFox2では存在しないかを確認したいのですが、
どこをチェックすればよいでしょうか?

587:Name_Not_Found
08/03/30 23:58:57
>>497
parseIntは32bitまでの制限がかかる。
また頭が0から始まる文字列の場合8進数と誤認する可能性がある。
一方Math.floorは32bit以上の数値でもOK。ただ、引数が文字列のとき未定義の動作?
なので、Math.floor(Number(num))がよいかも。
parseFloatは小数点切り捨ててくれない。
例:parseInt("033.3") = 27。
Math.floor(Number("033.3"))=33。
parseFloat("033.3")=33.3
こういう違いがあるみたい。

588:Name_Not_Found
08/03/31 00:04:48
>>585
一定間隔でTimerで繰り返しってJSでは最後の手段だよね。
その間にユーザがチェックしちゃったりしそう。
画像(IMGタグ)とかオブジェクトタグで外部にファイルを取りに行くやつは
onreadystatechange使って解決してる。
このイベントで気をつけるべきは、onerrorかonabortもハンドリングした方がいいってこと。
キャッシュから読む場合にonreadystatechangeが発動しない時があったと思った。

589:Name_Not_Found
08/03/31 00:22:15
>>546
wrapの呼び出し側を変更しない方法として
wrap = function(){
return (new Function("f", "return function (){ f.apply(this, arguments); };")).apply(this, arguments);
};

でよいかも。
今のところこれでFireFoxのcaller制限が解除出来るのはポイントだな。
return functionしているかつコールスタック上で2か所以上現れるものって
prototype.jsでいうbindとかぐらいだし。

>>588
補足。onreadystatechangeが発動しないときは、上記のどっちかが発動するみたい。
あとFireFoxではこのイベントがある要素とないタグあるから注意。
たとえば、imgタグにはあるけど、linkタグにはないみたい。>だれかご存知でしょうか?

590:Name_Not_Found
08/03/31 01:08:50
JavaScript始めたばかりです。
Cでいうところの、%3.3d = %2.2x はJavaScriptだとどう書き換えられる
るんでしょうか。どうしてもうまくいきません。

591:Name_Not_Found
08/03/31 01:39:46
「JavaScript printf」でぐぐったやつじゃダメなの?

592:Name_Not_Found
08/03/31 04:15:30 XN7dDV5G
iframeで呼び出した先のページがステータスバーに文字を表示させているのですが、
これのせいで自分のページのステータスバーにも同じ文字が表示されてしまいます。

これの消し方はどうしたらいいのでしょうか?

593:Name_Not_Found
08/03/31 04:26:57
そんな糞ページは呼び出さなければいい

594:Name_Not_Found
08/03/31 04:49:19
どういう目的でそのページを表示させているのですか?

595:Name_Not_Found
08/03/31 10:12:09
>>592
他人のページを自分のページの一部として勝手に利用してるなら文句言わない。


596:Name_Not_Found
08/03/31 10:17:53 tBapcs7W
JavaScriptでクエリを取得するにはどうすればいいですか?
(正しくは文字列をわける方法かもしれません)

以下のようなアドレスから「1=%u592A%u90CE」、「5=%u307E%u306A%u307F」
を取得したいです。
URLリンク(***.***.***)

597:Name_Not_Found
08/03/31 10:40:00
>>596
?でぶった切ってさらに&でぶった切る

598:Name_Not_Found
08/03/31 10:52:36 tBapcs7W
>>596
ありがとうございます。

&でぶった切るにはどうすればいいですか?
簡単なコードを示していただけませんか?

599:Name_Not_Found
08/03/31 11:04:46
>>598
スレリンク(hp板)
恐らくこっちのスレの方で答えを貰えると思われ。

600:Name_Not_Found
08/03/31 11:08:11 tBapcs7W
>>599
わかりました。
紹介してくださったスレで再度質問してみます。

601:Name_Not_Found
08/03/31 11:53:16
>>596-600
そんなの振るまでもないと思うけどなあ。
a = str.split('?'); // ?のところで分ける
b = a[1].split('&'); // &のところで分ける
これであなたが必要としている文字列がb[0]とb[1]に入るでしょ。
あとはsplitのリファレンスを見て理解してくれればおっけーかと。

602:597
08/03/31 11:55:14
>>601
別におれは振ったつもりはないけどな。一緒にしないでくれ。

603:Name_Not_Found
08/03/31 11:56:03
すまなかった。今は反省している。

604:Name_Not_Found
08/03/31 12:20:41 dFXWPTO8
>>601-603
ワラタ


605:Name_Not_Found
08/03/31 12:49:53
ほんとpipiは素人丸出し

606:Name_Not_Found
08/03/31 13:01:35 tBapcs7W
>>601
ありがとうございます。

文字列を分割するときはsplit関数を使うんですね。知りませんでした;
var a = location.search.split("&");

607:Name_Not_Found
08/03/31 20:28:23 TVi8RYxA
えっと、簡易的なパスワードメーカーを作ろうと思うのですが、
まずファイルを一つ作って設定などをして、その設定をクエリにつけて別ページで開く方式にしました。

で、URLリンク(www.xxx.net)
にアクセスさせて、
set = location.href.split("?")[1].split("&");//URLの?以降を取得し&で分割
word = set[0].split("=")[1].split("");    //setの&より前の=以降を取得
number = set[1].split("=")[1];        //setの&以降の=以降を取得
って感じに設定を読み込むところまで行きました。

そのあと、wordをnumberの分だけランダムに表示するにはどのようにすればいいでしょうか?
それ以前の設定取得に問題があれば指摘お願いします

608:Name_Not_Found
08/03/31 20:41:42
location.search.substring(1) だろ。わけわかんねえゴミ書いてんじゃねえよタコ。rfc読んで来いボケ。

609:Name_Not_Found
08/03/31 21:19:16
>>608
横からスマンけど、
DOM Level0なwindow.locationがRFCに書かれてたっけ?
URLリンク(www.ietf.org)
には当然のように無いけど。

610:Name_Not_Found
08/03/31 21:22:23 TVi8RYxA
そうなんですかー…
自分はURLを取得するのがlocation.hrefってことしか知りませんでした;

set = location.search.substring(1).split("&");//URLの?以降を取得し&で分割
word = set[0].split("=")[1].split("");    //setの&より前の=以降を取得
number = set[1].split("=")[1];        //setの&以降の=以降を取得

って感じですか?


611:Name_Not_Found
08/03/31 21:33:29
>>608
タコに謝れ

612:Name_Not_Found
08/03/31 21:36:58
>>608
イカん

613:Name_Not_Found
08/03/31 23:08:04
>>610
for(i=0;i<number;i++){
document.write(word[Math.floor(Math.rondom()*word.length)]);
}

無理あるかも。

614:Name_Not_Found
08/03/31 23:43:13
protothickbox-js-3.1の質問です。
設定は終って普通に動作してるんですが、画像をクリックして
ウインドウが開く→閉じる
この時に、何故かリロードしてしまいます。
画像一覧がページの下まで続いているんですが、
毎回一番上まで戻ってしまってこまっています。。。
いじった部分は、サムネイル画像にcssで枠とかの装飾をしただけです。
誰か、原因がわかる方はいらっしゃいませんでしょうか?

615:Name_Not_Found
08/03/31 23:44:12
>>607
wordをnumberの分だけランダムに表示する、とはどういうこと?
wordは配列だよね。


616:Name_Not_Found
08/03/31 23:46:56
>>614
テンプレは全部読んだかね。

617:614
08/04/01 00:16:51
>>616
読みました。どれか答えが書いてあるんでしょうか???
よくわからないのですが。。。

618:Name_Not_Found
08/04/01 00:39:58
>>586
これよろしく。もし、誰も使い方が分からないならテンプレに入れるべきじゃないんじゃ?

619:Name_Not_Found
08/04/01 01:04:10
>>609
たしかにJavaScriptってRFCみたことないな。DOMだけだと思った。


620:607&610
08/04/01 01:21:12 YqB2oWd3
>>613ありがとうございました!

設定ページを作る際で再び質問なんですが、
<form name="passMake">
<input type="checkbox" value="1">1
<input type="checkbox" value="2">2
<input type="checkbox" value="3">3
<input type="text" value="">文字数
<button onclick="makePass()">生成</button>
function word(){
for(i=0;i<3;i++){
document.forms[0].elements[i].value
}}
ってなかんじにHTML出力して、makePass()を
window.open('./make.html?'+word()+','document.forms[0].elements[4].value');
にしても出来ませんでした。
どうすればいいでしょうか?

621:620
08/04/01 01:22:49 YqB2oWd3
書き忘れました。
pass()の値がundefinedになって返されます。

622:Name_Not_Found
08/04/01 01:30:52
何を言っているんだい?

623:Name_Not_Found
08/04/01 01:37:02
>>621
pass()なんて関数が見つからないな。
word()じゃないの?

624:620
08/04/01 01:43:52 YqB2oWd3
>>623
すいません、間違えました。word()です

625:Name_Not_Found
08/04/01 01:46:10
>>621
word 関数で return してない
ちなみに elements[4] なんて存在しない

626:620
08/04/01 01:49:08 YqB2oWd3
elements[4]は文字数のところが扱われるみたいなのですがー…

627:Name_Not_Found
08/04/01 01:59:46
ひゃー、がんばれ回答者!

628:620
08/04/01 02:03:11 YqB2oWd3
document.フォーム名.コントロール名.valueでフォームの内容って呼び出せるんですか?

629:620
08/04/01 02:18:10
>>628
すいません、自己解決いたしました。
>>625
ありがとうございました!

630:Name_Not_Found
08/04/01 02:43:11
人の話を聞かないバカは一生バカなんだよな
教えてもらっといて自己解決とか言ってるよコイツ
一人でできたと思ってるからバカから脱出できずにここまで来たわけか

631:Name_Not_Found
08/04/01 02:58:19
横入りですまんが、
620は628の件をいつ教えてもらってるのだろうか。(簡単なことだけどね

632:Name_Not_Found
08/04/01 03:07:22
>>630
馬と鹿に謝れ

633:Name_Not_Found
08/04/01 03:21:58
>>599で誘導した判断は正解だったという事か。

634:Name_Not_Found
08/04/01 03:23:25
人それぞれさ。

635:Name_Not_Found
08/04/01 03:25:56
えっと、ランダム表示する際に
Math.floor(Math.random()*x);
で、なんまでのランダムかっていうのはxで決められるのですが、
xからyまでのランダム表示ってどうやるのでしょうか?

636:Name_Not_Found
08/04/01 03:32:03
Math.random() * (y - x + 1) + x | 0

637:Name_Not_Found
08/04/01 03:46:22
負数のこと考えてなかった
(Math.random() * (y - x + 1) | 0) + x

638:Name_Not_Found
08/04/01 04:07:53
<input type="file"> で表示できる、ファイル選択ダイアログの
「ファイルの種類」をJS側で指定する方法を教えてください。
よろしくお願いします。

639:Name_Not_Found
08/04/01 04:10:00
できますん

640:Name_Not_Found
08/04/01 06:15:23
何度この質問が繰り返されるのだろうか
そろそろテンプレ入れとけよ

641:Name_Not_Found
08/04/01 08:52:47
>>637
なぜ1足す必要がある?>>635からすると乱数の範囲にxは含まれて
いないはずだが。

642:Name_Not_Found
08/04/01 11:23:11
>>641
たとえば「3から5までの乱数」っていったら 3,4,5 じゃないの?

643:Name_Not_Found
08/04/01 11:42:05
|ってなんですか?

644:Name_Not_Found
08/04/01 11:45:05
>>643
[必読]ガイド

645:Name_Not_Found
08/04/01 11:49:55
ビットごとのor?

646:Name_Not_Found
08/04/01 11:53:20
637でやってみたのですが、xに5、yに10を代入したのですが、
なぜか05,15,25,35,45,55...などが出てきてしまいます

647:Name_Not_Found
08/04/01 12:02:19
>>646
おまえは1から10まで面倒見てやらんと駄目なのか

Math.random2 = function(a, b) {
  a = Number(a) | 0, b = Number(b) | 0;
  if (b < a) {
    var tmp = a;
    a = b;
    b = tmp;
  }
  return (Math.random() * (b - a + 1) | 0) + a;
};

648:Name_Not_Found
08/04/01 12:11:12
>>647
すいません、ありがとうございました

649:Name_Not_Found
08/04/01 12:12:07
ところでビットORを使うと32ビット整数の範囲に限定されちゃうけどそれでもいいの?

650:Name_Not_Found
08/04/01 12:12:11
いや。洩れはそんなのより、>>646がやったというコードにすごく興
味がある。もしかして、JavaScriptの重大なバグなのかもしれない。

651:Name_Not_Found
08/04/01 12:32:42
>>646のソース漏れも知りたいかも

652:Name_Not_Found
08/04/01 12:33:46
安易に正解を晒した>>647が悪い。

653:Name_Not_Found
08/04/01 12:37:49
646のソースがわかったぞ!(一つの可能性として

654:Name_Not_Found
08/04/01 12:38:36
x、yが字列型なだけだろ

655:Name_Not_Found
08/04/01 12:38:54 kmS3TLCh
javascriptでMath.floor(Math.random()*3000)だと3000という数字はでないですよね?
0から2999までが表示されるんですよね?

656:Name_Not_Found
08/04/01 12:39:30
どう見ても文字に加算しただけだろ

657:Name_Not_Found
08/04/01 12:46:59
Math.floor(Math.random()*3)で試せばいいじゃん

>>646
頑張っていろいろやってみたけど
var num = "10.5".split(".");
でnum[0]とnum[1]を呼び出すとそうなるみたいだね。
結局は数字として扱わないとダメなんだな

658:Name_Not_Found
08/04/01 12:50:56
結局>>653の公表は無し

659:Name_Not_Found
08/04/01 13:31:25
>>655
ごく稀な確率ででるよ。
Math.ceil(乱数)-1にすれば予想外の数値は出ない。

660:Name_Not_Found
08/04/01 13:41:55
ごめん-1がでちゃうな。


661:Name_Not_Found
08/04/01 13:59:36
>>659
出るようならその処理系が糞なだけ。
URLリンク(www2u.biglobe.ne.jp)

662:Name_Not_Found
08/04/01 14:20:38
馬鹿に教えるのはもったいないから放置

663:Name_Not_Found
08/04/01 14:48:12
>>659
確率の問題じゃないよ。だからrandom()は怖いんだ。

そもそも論でいうと、こんなsplit()も知らなかった素人に付
き合って振り回されているのが原因だろ。いい加減にして保水。

664:Name_Not_Found
08/04/01 14:56:52
ヒント: 日付

665:Name_Not_Found
08/04/01 15:02:06
random()は怖くないでしょ

666:Name_Not_Found
08/04/01 17:19:51
全角文字は出ないと思うが。

667:Name_Not_Found
08/04/01 17:43:27
何の話だ

668:Name_Not_Found
08/04/01 17:44:28
Math.gundom()の話らしい

669:Name_Not_Found
08/04/01 18:31:31
Math.randam()って書いてるバカがネットには45人いるね。
みんな日本人。

670:Name_Not_Found
08/04/01 20:30:22
SJISコードのCSVファイルをjavascriptでブラウザに一覧表示する方法が
あれば、ご教授頂けないでしょうか?

prototype.js等でCSVファイルの一覧表示は可能ですが、
CSVファイルの文字コードがSJISの場合は文字化けしてしまいます。
CSVファイルの文字コードがUTF-8の場合は正常表示します。

※データバインド機能はIE依存のため採用できません。
 また、perl、PHP等サーバサイドの言語は利用できません。

671:Name_Not_Found
08/04/01 21:38:13
45人いたw

672:Name_Not_Found
08/04/01 21:54:09
>>669
なんでその単語で検索しちゃったの?

673:Name_Not_Found
08/04/01 22:47:24
パスメ作ってた奴です。
URLリンク(whss.biz)
こんな感じに完成したのですが、なぜかword_3()に9が入りません。
それと、make.htmlの問題だと思うんですが、大文字が選択されてないとエラーになります。

どうすればいいでしょうか?

674:Name_Not_Found
08/04/02 00:00:08 ftT/9j8C
質問です
あるサイトを開いたら画面下の方に、エラーが発生しました、と出ました
またそのサイト内にある動画を見れるメディアへのリンクをクリックしても、
javascript:void(playMedhia2~うんちゃらかんちゃら~)という表示が出てしまい、
見ることができません。詳細を見たらオブジェクトを指定してくださいと出たのですが、
見れるようにするためには一体どのような方法を取ればよいのでしょうか

ご教授よろしくお願いします。

675:Name_Not_Found
08/04/02 00:03:59
>>674
そのサイト管理者に連絡

Javascriptエラー吐くような糞サイト作ってんじゃねーぞヴォケが
とやさしく教えて差し上げましょう

676:Name_Not_Found
08/04/02 02:46:27
>>673
name を適当に(しかも同じのを)付けるからそうなる
見通しが悪くて修正もしにくい
例えば
name="word_A" とか name="word_a" とか name="word_0" とか付けといて

function piyo(){
var word ="";
for(i=0;i<document.forms["passmaker"].elements.length;i++){
var matched=document.forms["passmaker"].elements[i].name.match(/^word_(.)$/);
if(matched) word+=matched[1];
}
return word;
}

あと make.html の方は
location.search が決まったフォーマットに則っていることを前提にしか
正しく動作しないのでこれはちょっと危うい
そもそもページを遷移させる必要もないんじゃないか?

677:Name_Not_Found
08/04/02 12:03:30
動的にscript作る時の質問です。

今まで、下のようにdocument.bodyにappendChildしていたんだけど、
最近document.lastChild.appendChild(script);という書き方で
lastChildにappendChildしてるを見かけました。
document.bodyだとマズいパターンがあるということなのかわかる方いますか?

「bodyという名前を付けないことでbodyがなくても大丈夫だから」
と、一瞬思ったのだけど、そんなサイトそもそもダメだろうと思いなおした。

//=============サンプルコード===================
var url = <scriptのURL>
var script = document.createElement('script');
script.charset = 'utf-8';
script.src = url;
document.body.appendChild(script);

678:Name_Not_Found
08/04/02 13:24:40 0lnjP7c7
Visual Web Developper 2008 Express Editionで本の通り「プルダウンメニュー」を作ろうとしたら、メッセージ《’X’は既に定義されています》《’Y’は既に定義されています》
と出ます。エラーではない?どこかおかしい??

var gCurrentMenuID = null;
function viewMenu(objID)
{
hideMenu();
document.getElementById(objID).style.visibility = "visible";
gCurrentMenuID = objID;
}

function hideMenu()
{
for(var i=1; i<=maxMenu; i++)
document.getElementById("pMenu"+i).style.visibility = "hidden";
gCurrentMenuID = null;
}

No.1

679:Name_Not_Found
08/04/02 13:25:12 0lnjP7c7
No.1の続きNo.2

function checkOut(evt)
{
if (gCurrentMenuID)
{
if (document.all)
{
var X = event.x;
var Y = event.y;
           }else{
var X = evt.pageX;
var Y = evt.pageY;
}
var obj = document.getElementById(gCurrentMenuID);
var sx = parseInt(obj.style.left);
var sy = parseInt(obj.style.top) - mHeight;
var ex = sx + parseInt(obj.style.width);
var ey = sy + parseInt(obj.style.height) + mHeight;
if ((X < sx) || (Y < sy) || (X > ex) || (Y > ey)) hideMenu();
}
}
document.onmousemove = checkOut;


No.2

680:Name_Not_Found
08/04/02 14:20:02
ちゃんと言語の勉強しなよ。エラーメッセージまんまじゃないか。
言語の勉強もせずに開発しようなんて片腹痛いぞ。

681:Name_Not_Found
08/04/02 14:28:55 0lnjP7c7
参考書丸写しでこの結果です

682:Name_Not_Found
08/04/02 14:43:21
>>679
簡単に言うと、JavaScriptはfunction内でvar X, varYの宣言は一回で良いのだよ。
その辺がperlとかと違う。
「スコープ、ブロック、JavaScript」とかでググると出てくる。

と言うことで、誰か>>677を知りませんか。

683:Name_Not_Found
08/04/02 15:39:24
>>682
その記述がある時にdocument.bodyは存在してるの?
オレならbodyでもlastChild(html)でも無くheadにappendChildするかも。


>>679
if (document.all)
{
var X = event.x;
var Y = event.y;
  }else{
var X = evt.pageX;
var Y = evt.pageY;
}
の部分を
if(!evt) evt = event;
var X = evt.x || evt.pageX;
var Y = evt.y || evt.pageY;
に置き換えたらどうなりますか?

684:Name_Not_Found
08/04/02 16:40:38
メッセージ表示がなくなりました
ありがとうございます!!

685:Name_Not_Found
08/04/02 17:26:07
var zero = 0;
var undef;
alert( zero || undef );

論理演算子でfalseと判定されるのは、
null,undefined,false,0,NaN,''
だっけか。''(空文字列)は結構忘れられやすいので、潜在的なバグとなる可能性も。

686:Name_Not_Found
08/04/02 17:35:17
お、そうだね。
0のケース全然考えもし無かったよw

orz

687:Name_Not_Found
08/04/02 17:40:05
evt.x || evt.pageX || 0 とか

688:Name_Not_Found
08/04/02 18:15:49
>>687
そだね。それで大丈夫だろね。


全く無関係だが >>669
今、シュミレーションを検索したら 3,540,000件もあったぞ。
ここまでくると日本語として成立してしまってるのか・・・な?


689:Name_Not_Found
08/04/02 19:08:40
>>688
JS覚える前に、まずは日本語英語を覚えような

 × シュミレーション
 ○ シミュレーション

690:Name_Not_Found
08/04/02 19:16:23
>>689
>>669は見た?
688は 良く間違われる言葉「シュミレーション」を検索したら
こんなにでてきちゃったよ。って内容なんだけど・・・

スレとは無関係すぎるけどなw

691:Name_Not_Found
08/04/02 19:30:53
ぁー早漏な漏れスマソ

692:Name_Not_Found
08/04/02 19:31:37
>>688
なんでその単語で検索しちゃったの?


693:Name_Not_Found
08/04/02 19:52:30
>>691 んにゃべつにw
>>692
アナウンサーまで含めて日本人が良く間違う言葉だから。
669を見て、ふと数を調べてみたくなったから。

面白い答え思いつかなくてゴメン

694:Name_Not_Found
08/04/02 20:15:28
うん。スレ関係で言うと、リファラの英語綴りも多いね。まちがい。

695:Name_Not_Found
08/04/02 20:37:31
CGIでHTTP_REFERER使うけどJavaScriptだとreferrerだから
今でもたまにRが抜ける事はある。

696:Name_Not_Found
08/04/02 20:49:03
>>677
HTML的に妥当でない。

>>687-688
この話題も繰り返し出る気がするが、A || B || C は A が真になりうるなら A を返し、後ろを評価しない。
evt.x || evt.pageX || 0 という順番はこれで良いのか。無駄が多すぎないか。

そもそもスクロール量を加味しない evt.x と、スクロール量を含む evt.pageX を等価に並べていること自体がおかしい。
Fx 以外は evt.x で引っ掛かり、スクロール量を含めるのは Fx だけという分岐になるわけだが、果たしてそれが望む処理なのか。
スクロール量が不要なら、IE から DOM Level 2 Events にインポートされた clientX を見れば分岐など不要だ。
今どきNetscape Navigator 4対応などという幻想を抱いているわけでもないだろうに。

697:Name_Not_Found
08/04/02 20:55:06
>>677
すまん間違えた。妥当でなくはない。
document.body が null である事態を想定し、load を見ずに挿入する工夫なのだろうが、
document.lastChild が HEAD|BODY 要素である保証はない。
広告付きレンタルスペースなどは平気で HTML 要素の後に広告を付加したりするからな。

698:Name_Not_Found
08/04/02 21:04:10
TagIndexで来訪者を減らしてる匿名くんの語調にそっくりだな


699:Name_Not_Found
08/04/02 21:21:51
>>677
すまん間違えた。やはり HTML 的に妥当でない。
# document と documentElement を混乱していた。

700:Name_Not_Found
08/04/02 21:25:54
HTML的にどうこうっていうかDOM木の時点でだめじゃないのか
真っ当な実装ならHIERARCHY_REQUEST_ERR出ると思うが

701:Name_Not_Found
08/04/02 21:31:59
>>700
document.lastChildがHTML要素ならHIERARCHY_REQUEST_ERRは出ないぞ
Textノード(要素内容空白)だったら出るかな

702:Name_Not_Found
08/04/02 21:34:38
>>695
RefererはHTTPの仕様なんだよなw
単語としてはreferrerが正しい

703:Name_Not_Found
08/04/02 22:17:44
>>675
レス遅くなってすみません
アメリカのサイトなんですが、スレ内の他の人達は問題なく見れているので、
おそらく俺個人のPCの問題だと思うんです・・・色々試してはみたんですが
結局何の進展もない状況ですorz

704:Name_Not_Found
08/04/02 22:25:00
古いブラウザでサポートされてないメソッドとか使ってるとか
見るだけなら Firefox でも入れればいい

705:Name_Not_Found
08/04/02 22:33:52
即レスサンクスです
古いバージョンの可能性はあるかもしれないです・・・
firefoxってのを入れてみます、ありがとうございました

706:673
08/04/02 22:36:54
>>676様が教えてくださったのですが、理解力が足りませんでした。
一応少しは直ったのですが、なんかおかしいところありますか?

URLリンク(whss.biz)

707:Name_Not_Found
08/04/02 23:42:29
FireFoxでよくある「NS」って何ですか?
hasAttributeNSとか。hasAttributeではなく、hasAttributeNSを使いたくなる場合とは?

708:Name_Not_Found
08/04/02 23:51:36
>>618
FireFox3 beta4じゃDOMFocusIn使えねぇっぽいな。
Safariも対応してるってのに、いつ対応するんだよww

709:Name_Not_Found
08/04/03 01:00:44
>>706
無駄に3周回るがこんなんで十分なんじゃないか
URLリンク(www2.uploda.org)

710:Name_Not_Found
08/04/03 05:29:59
up し直し
URLリンク(www2.uploda.org)

711:Name_Not_Found
08/04/03 08:18:52
>>707
NSはNameSpaceでしょ。NameSpaceを使いたくならないのなら(知りも
しないのなら)気にしなくていいんじゃないの。

712:Name_Not_Found
08/04/03 11:22:22
>>707 泡姫の名前の横に書いてあったら『生』って意味

713:Name_Not_Found
08/04/03 15:53:12
htmlで
<div id=test>
<button></button>
</div>
スクリプトで
alert($('test').childNodes.length);
とすると2と表示されるのですが何故ですか
例えば
<div id=test>
<span></span>
</div>
ならちゃんと1と表示されるのですが
buttonの時だけchildlenNodes.lengthでおかしな数字が帰って来ます


714:Name_Not_Found
08/04/03 16:18:35
#text

715:Name_Not_Found
08/04/03 17:45:59
>>713
その「ちゃんと」ってのは何さ。divの開始タグとspanの開始タグ
の間に改行がはさまってるよな。spanの終了タグとdivの終了タグの
間にも。それをちゃんとテキストノードで表すべきなのをさぼってる
ブラウザは「ちゃんと」じゃないだろ。あんたの都合いいように
なるのが「ちゃんと」だと思ったら大間違いだ。

716:Name_Not_Found
08/04/03 18:17:31 LHY03GGQ
<input id="hoge" type="hidden" name="date" />

があり、

window.onload = function(){
$('hoge').value = '123'
};

があるときに、Firefoxで

$("hoge") has no properties
$('hoge').value = '123';

と言われてしまいます。なんででしょうか?

IEだと

'null' は Null またはオブジェクトではありません。

とか言われます。同じやり方でエラーにならないケース
もあったりしてわけが分かりません。。。

717:Name_Not_Found
08/04/03 18:57:15
>>716
一見問題なさそうに見えるとこだけ抜き出して愚痴られてもねえ。
そのエラーが再現する最小限のサンプル(動かして見られるもの)を
貼る。それを作るのが嫌ならあきらめる。

718:Name_Not_Found
08/04/03 19:24:04
>>714>>715
改行もテキストノードとして扱われるということですね
ありがとう御座いました

719:Name_Not_Found
08/04/03 20:10:37
じゃないだろ。UA依存。

720:お願いします。
08/04/03 22:39:51 CXJ2+/Q2
質問させてください。
<input type="text" name="A">、<input type="text" name="B">、<input type="text" name="C">
のようにnameが複数ある場合、
このA~Cにあたる部分をselectで切り替える方法はありませんか?
お手数かけますが教えていただけると嬉しく思います。

721:716
08/04/03 22:57:41
>>717の言うとおりで。

実際は
<input id="hoge" type="hidden" name="date" />
が、<td></td>タグの間に挟まれてたのだが、それを
<td></td>外に出したら解決した。

何が悪いのか分からんよ。

722:Name_Not_Found
08/04/03 23:35:14
>>720
「selectで切り替える」って単にAとBとCという表示のある
selectを作るっていう意味かね。それとも個々のinputの
nameをselectメニューで切り替えるという意味かね。しかし
inputは3つあるんだよな。3つそれぞれ切り替えるように
selectメニューが3つあるのかね。その場合nameが同じに
ならないように選ぶ時に他のselectに使われているnameは
自動的によけたりするのかね。自分の日本語がいかにいい加減
か認識すれ。

723:Name_Not_Found
08/04/03 23:37:23
>>721
もっかい元に戻して問題が再現したら残り部分を
全部削って最小限にして貼る。

724:お願いします。
08/04/03 23:43:34 CXJ2+/Q2
>>722さんへ。
本当に私の日本語のいい加減さと非礼を深く詫びます。
申し訳ございませんでした。
722さんが最初におっしゃった通り、
<input type=text>の部分は1つでnameの3つある部分のみをセレクトで
切り替える、という方法を教えていただきたいと思いました。
<input type=text>が3つあるとレイアウト的にも見劣りしますし、
なにかと不便だと思ったのでお聞きした次第です。
それ以前に不透明な質問内容と、教授してもらう聞き方でなかったことを
深く詫びます。申し訳ございませんでした。

725:Name_Not_Found
08/04/04 00:28:04
>>724 ホレ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function chg(i) {
var a = ['A','B','C'];
document.getElementById('i0').name = a[i];
}
</script>
</head><body>
<form method="get" name="f0" action="#"><div>
<select onchange="chg(this.selectedIndex)"><option>A</option>
<option>B</option><option>C</option></select>
<input id="i0" type="hidden" value="xxx" name="xxx"><button>submit</button>
</div></form></body></html>

726:お願いします。
08/04/04 00:32:32 bD1ssLAl
>>724
おおおお!!!!すごいです!
ちゃんと動作確認取れました!
本当に!本当に!ありがとうございます(;;)

727:お願いします。
08/04/04 00:33:26 bD1ssLAl
>>725さんでした!
本当に助かります!ありがとうございました!

728:Name_Not_Found
08/04/04 01:09:16
>>711
NameSpaceを使いたくなる時っていうのはどういうときさ?

729:初心者です
08/04/04 01:33:34 C0iAFWZQ
調べたんですけどネストすればいいというのはわかりました。だけど方法がわからなくて。
とりあえず乗っけると、こうなるんですけど。
<html>
<head>
<title>テスト</title>
<script language="JavaScript"><!--
function conv()
{
txt = document.myFORM.moto.value;
data = txt.replace(/test/g,"テスト");←これ
document.myFORM.saki.value = data;
}
// --></script>
</head>
<body>
テスト<br>
<form name="myFORM">
変換元:<textarea rows="4" name="moto">
</textarea><br>    
<input type="button" value="変換" onClick="conv()"><br>
変換後:<textarea rows="4" name="saki"></textarea>

</form>
</body>
</html>
なんです。どこから乗っければいいかわからなくなったので全部乗せたんですが。
あと、とりあえず2あたりも読みましたので初心者が嫌われるというのはわかっています。
なのでレベルが低すぎる質問ならスルーして下さって結構です。
基本を学んでいる途中で自分のやりたいことにかなり近いサンプルコードを見つけたので手を出してしまった次第です。

730:Name_Not_Found
08/04/04 01:46:57
何が知りたいのよ

731:729
08/04/04 01:49:43 C0iAFWZQ
頭が混乱してました。
矢印のあるreplaceで(今はtestをテストに置き換えている)同じようにたとえば「てすと」を「tesuto」
に置き換えたいのです。
もう一個replace追加したらエラーが出たので。


732:729
08/04/04 01:59:22 C0iAFWZQ
ちょっと目が覚めたので自分の質問をまとめると、「矢印のreplaceを動作するようにネストする方法を教えてほしい」
だと思います。わかりにくくてすいません。

733:Name_Not_Found
08/04/04 03:32:01
>>729
こんな感じでreplace繋げたいってこと?
data = txt.replace(/test/g, "テスト").replace(/てすと/g, "tesuto");

734:Name_Not_Found
08/04/04 03:33:35
>>728
文書がXMLのとき以外ないだろう

hasAttribute("href") //hrefという名前の属性があるか調べる

hasAttributeNS("URLリンク(www.w3.org)", "href") //XLinkのhref属性があるか調べる

getElementsByTagName("*") //すべての要素を取得する

getElementsByTagNameNS("URLリンク(www.w3.org)", "*") //SVGのすべての要素を取得する

とかさ

735:Name_Not_Found
08/04/04 08:36:09
>>729
俺は変換部分を変数化したいという意味と受け取ってみた。
var convLists = {
"test": "てすと",
"てすと": "tesuto"
}

function conv()
{
txt = document.myFORM.moto.value;
for(var p in convLists){
txt = txt.replace(new RegExp(p), convLists[p]);
}
document.myFORM.saki.value = txt;
}

736:Name_Not_Found
08/04/04 10:26:50
悪質サイトを告発しようとしていますが、ソースで分からないところがあるので質問します

if (!window.navigator.userAgent.match(//firefoxi)) {
code = '7661722064617461203d206e65772041727261792822687474703a2f2f7777772e6869726f696d6f6e6
f2e6e65742f6a702f696d672e70687022293b646f63756d656e742e777269746528223c646976207374
796c653d5c22706f736974696f6e3a6162736f6c7574653b20746f703a203070783b206c6566743a203
070783b5c222069643d5c22696672616d655c223e22293b7661722073656c656374203d204d6174682
e666c6f6f72284d6174682e72616e646f6d2829202a20646174612e6c656e677468293b646f63756d65
6e742e777269746528223c696d67207372633d5c2222202b20646174615b73656c6563745d202b2022
5c222077696474683d5c22315c22206865696768743d5c22315c223e22293b646f63756d656e742e77
7269746528223c2f6469763e22293b';
var txt = "";
var ret = code.match(/.{2}/g);
for (var i = 0; i < ret.length; i++) {
var two = ret[i].charAt(0);
if (two >= "a" && two <= "f")two = two.charCodeAt() - "a".charCodeAt() + 10;
else two = parseInt(two);
var one = ret[i].charAt(1);
if (one >= "a" && one <= "f")one = one.charCodeAt() - "a".charCodeAt() + 10;
else one = parseInt(one);
var num = two * 16 + one;
txt += String.fromCharCode(num);
}
eval(txt);
}

これはどういうプログラムなんでしょうか?code=''内は実際には改行無しです。

737:Name_Not_Found
08/04/04 10:57:55
そういうのはevalをalertに変えてみれば解るよ

738:729
08/04/04 12:24:30 C0iAFWZQ
>>733の方が書き込んで下さったものです。どうもありがとうございます。
並べて書けばいいんですね。
自分はdata = txt.replaceからもう一回書いていたので。
>>735さんもありがとうございます。
これから基礎から精進して皆さんのようになりたいと思います。
本当にありがとうございました。

739:736
08/04/04 14:03:13
>>737
おお、何か出てきたwどうもです
つまりこれは暗号化プログラムということですか?

740:Name_Not_Found
08/04/04 14:47:25
>>736
for (var i = 0; i < ret.length; i++)
txt += String.fromCharCode( parseInt(ret[i],16) );
と書けば良さそうなものだけど、わざわざ長くして判り辛くしているとかか。
どこかの業者のコードを添削するのもアレだけど。

741:Name_Not_Found
08/04/04 15:53:09
くだらない質問かもしれないけど、JavaScriptで
ページが読み込まれるまでの間、プログレスバーでその時間を表現することって出来るかな?

マイクロソフトなんかだと、修正パッチを読み込む画面なんかがわかりやすいんだけど
横にプログレスバーが動き続けていると思うんだけど、そういった処理をしたい。
一応、ぐぐったりして静的(自分で動かす)ことは出来るんだけど
ページの読み込み&描画と連動するのはよくわからなくて・・


742:Name_Not_Found
08/04/04 16:01:16
>>741
ページの先頭のプログレスバーを入れておいて、あと指定したパーセント
に表示を設定する関数(たとえばprogress(p))を定義しておいて、
HTMLの要所要所に
<script>progress(10)</script>
...
<script>progress(20)</script>
...
と埋めておくのはどうだろう。最後は100で。

743:Name_Not_Found
08/04/04 16:07:21
>>742
おー面白い発想ですね!ちょっと試してみます。
ありがとうございました。

# M$もたかがサイト1個に、結構技術使ってるんだなぁって思った今日この頃。
# ソースのぞくだけで、結構色々参考になります。

744:Name_Not_Found
08/04/04 16:53:32
たかがサイト1個か

745:Name_Not_Found
08/04/04 18:14:52
関数から、引数に取った変数の値を変更するにはどうすればいいのですか?
初めてのJavaScriptには、配列などのオブジェクトを関数に渡すと参照呼出しになると書いてあったのですが、基本データ型の入った変数の値を変更したい場合についてはどうすればよいのでしょうか。

746:Name_Not_Found
08/04/04 20:34:59
>>745
それはできないから、配列やオブジェクトを渡してその中の
値を書き換えるようにするか、返値で返してもらうか。
このあたりはJavaなんかでもおなじだから。

747:745
08/04/04 20:49:19
>>746
わかりました。returnで返して変数に代入することにします。ありがとうございました。

748:Name_Not_Found
08/04/04 21:11:23
IEでmouseoutイベントでevent.toElementを参照する場合に、
ブラウザの外側に移動するとnullになります。
FireFoxやSafari、OperaのrelatedTargetも同じ仕様で統一されているか
確認された方はいますでしょうか?
なお、MSDNでtoElementがnullになるという記述は見当たりませんでした。
ブラウザの外に移動する以外にnullになる条件が他にあるかご存じの方は教えてください。

749:Name_Not_Found
08/04/04 23:40:17
>>748
<object>, <embed> あたりを調べてみれば

750:Name_Not_Found
08/04/05 19:33:15
みなさんはcharとsrcをそれぞれどう読んでいますか?ぼくはシャーとスルクな
んですが、昨日先輩からそれはないだろと言われ落ち込んでいます。

751:Name_Not_Found
08/04/05 19:37:35
ちゃー、えすあーるしー。解決

752:Name_Not_Found
08/04/05 19:41:00
ちゃー そーす

753:Name_Not_Found
08/04/05 20:46:21
キャラ、ソース

754:Name_Not_Found
08/04/05 21:21:00
キャラクタ、ソース

755:Name_Not_Found
08/04/05 23:40:07
キャラメル、ソース

756:Name_Not_Found
08/04/05 23:48:49 qcXVmAEN
var hoge = function(fuga1, fuga2, ・・・) {
 this.fuga1 = fuga1;
 this.fuga2 = fuga2;
 ・・・
};
var h = new hoge();

こんな(↑)感じでクラスを作る時に、定義したいプロパティの数がもっと膨大だとして、
ひとつひとつ一行一行記述していたのですが、もっといい書き方があるのではないかとふと思い、
コードをシンプルにまとめたいと考えたのですが、いまひとつまとめ方が解らずにいます。

なんとなく、こんな(↓)のを漠然と想像したのですが、自分の今の知識では先に進めませんでした。

var hoge= function() {
 for(i = 0; i < arguments.length; i++) {
  (中をどう書くのかはちょっと解らないですが)
 }
};
var d = new hoge(fuga1, fuga2, ・・・);

そもそも私の想像が全くの的外れなのかもしれませんが、
こういう場合のシンプルなコードの書き方についてアドバイスいただけないでしょうか。

757:Name_Not_Found
08/04/06 01:40:30
ないんじゃない。定義したいプロパティの数が膨大である限り。

代案として、呼び出し元でプロパティを定義していいなら、
var hoge= function(options) {
 for(var prop in options) {
  this[prop] = options[prop];
 }
};
var d = new hoge({fuga1: fuga1, fuga2:fuga2, ・・・});
っていう風にするのもありかもね。
特に省略可能引数が多い場合。

758:Name_Not_Found
08/04/06 02:07:51
>>756
定義したいプロパティをいくつかのタイプに分けて、
そのタイプごとに別なクラスにして、継承なり包含なりすると多少良くなる。

759:Name_Not_Found
08/04/06 04:07:01
引数の変数名→プロパティ名。うーん、実装依存か。

var hoge = function(fuga1, fuga2, fuga3) {
var argNames = arguments.callee.toString().match(/\(([^)]+)/)[1].match(/[^,\s]+/g);
for (var i = 0; i < argNames.length; i++) this[argNames[i]] = eval(argNames[i]);
};

760:Name_Not_Found
08/04/06 12:01:22
連続した数値を一部に持つ変数とそれに対応する同じ数字をもつIDを
forでまわして処理しようとして断念した事あるなぁ。

761:Name_Not_Found
08/04/06 14:44:57 SmkJqvj5
>>757-760
>>756です、皆さんレスどうもありがとうございました。
いただいたレスを参考にいろいろ試してみたいと思います。

762:Name_Not_Found
08/04/06 15:07:51 2z1zyTvl
jQueryで、生成したHTMLを対象としたアクションを行いたいのですが
うまくいきません。

$(function ()
{
//クリックして<select>を生成する
$('.clieck').click(function(){
var id = $(this).attr('title');
var dummyHTML = '<select class="hoge"><option value="aaa">aaa</option><option value="bbb">bbb</option></select>';
$('#add_' + id).html(dummyHTML);
});
//<select class="hoge">を対象に変更されたらalertをだす
$('.hoge').change(function(){
alert($(this).val());
});
});
<span class="click" title="1">クリック</span>
<div id="add_1"></div>

普通に<select class="hoge">を記述すると、alertがちゃんと出ます。
こういう場合はどうすれば良いのでしょうか?

763:Name_Not_Found
08/04/06 16:34:50
>>762
$('#add_' + id).html(dummyHTML);を実行した後に、
$('.hoge').changeを設定しないとダメだお( ^ω^)

$(function ()
{
//クリックして<select>を生成する
$('.clieck').click(function(){
var id = $(this).attr('title');
var dummyHTML = '<select class="hoge"><option value="aaa">aaa</option><option value="bbb">bbb</option></select>';
$('#add_' + id).html(dummyHTML);
//<select class="hoge">を対象に変更されたらalertをだす
$('.hoge').change(function(){
alert($(this).val());
});
});
});

764:Name_Not_Found
08/04/06 19:03:03
>>748
特にFireFoxでも書いていないな。
URLリンク(developer.mozilla.org)
でも、試してみるとrelatedTargetはnullが返却されるみたいだな。
ifremeとか、frameも怪しいね。

765:Name_Not_Found
08/04/06 20:17:48
           >>763
              ∩_ 
             〈〈〈 ヽ
             〈⊃  }
       ____   |   |
     /⌒  ⌒\  !   !
   /( ●)  (●)\!   !    こいつら最高にアホ
  /::::::⌒(__人__)⌒:::::|  /
  |     |r┬-|    /
  \      `ー'´   /
  / __      /
  (___)    /



766:Name_Not_Found
08/04/06 20:31:12 NJKYQvFh
javascriptでcookieを操作しているとブロックしたマークが出てきてcookieが適用されません。
IE7でプライバシーレベルは"低"にしています。Firefox2では問題ありませんでした。

ローカルホストでは正常に作動しますが、レンタルページにうpするとダメです。
perlなどサーバサイドからcookieを吐かすとちゃんと受け取ってくれるようなのですが、
何が足りないのかさっぱり見当がつきません。

現在のプライバシーレベルの状態でcookieを受け入れさせるにはどうすればよいでしょうか?
どうかご教授お願いします。

767:Name_Not_Found
08/04/06 20:42:57 GW44gjgn
Informationってインフォメーションだよね。
Infoはインフォなんだよね。
よく管理者メールに使われるinfoって何なのだろう。
アドレスの最後を.infoにすることをなぜ望むのだろう。
もしかしたらinfo@abc.infoみたいな素晴らしいアドレスが出来上がるかも。
だがそれには独自ドメインinfoの取得がいる。
そのサイトは.infoでinfomationにinfoがインフォメーションのためのinfoによるいんふぉがある。
そこにはInfomationがインフォメーションでインフォはInfoのいんふぉっぽいいんふぉめーしょんだった。
そこでinfoで検索するとinfoは☆の数ある。
☆の数?知るかボケ。

768:Name_Not_Found
08/04/06 20:44:55
>>766
ドメイン指定が間違っているんじゃまいか。

769:Name_Not_Found
08/04/06 20:51:40 GW44gjgn
クリックしたときにイベントを起こすのはonclickだと思うんですが、
ダブルクリックしたときにイベントを起こすにはどうすればいいのでしょうか?

770:766
08/04/06 20:53:56
>>768
とほほに省略した場合は 現在のWebサーバー名が入ると書いてあったので
現在domain=無指定、path=/(独自ドメインのためルート指定)でした。
しかしためしにサーバのドメイン指定してもダメでした。

771:Name_Not_Found
08/04/06 20:58:06
>>769
ondblclick
URLリンク(msdn.microsoft.com)

772:Name_Not_Found
08/04/06 21:16:12
URLリンク(gdata.youtube.com)

JavaScript1.6 な環境でこの全文を返す関数 get があって、
var xml = new XML(get().replace(/<\?xml.*?\?>\s*/, ''));
としたのですが、
xml['openSearch:totalResults'] や xml.entrx が空で返ってきてしまいます
xml..*.length() はたくさんありました
名前空間が関係していることまでは分かりましたが、具体的にどうすればいいのか見当もつきません
どうか御教示お願いします

773:766
08/04/06 21:35:23
自己レス。どうやらCookieは受け入れられていたようです。
script側での受け取る方法に問題がありました。

大変お騒がせしました。

774:Name_Not_Found
08/04/06 23:44:20
function hoge( foo ){ ... }

この引数fooにある時は文字列が入り、ある時は文字列の配列が入るときがあると仮定し、
文字列の場合はそれをそのまま返し、配列の場合はfoo[0]を返す場合、どのように書けばよいですか?

775:Name_Not_Found
08/04/06 23:47:24
すみませんできました。
var bar = foo;
if( foo[ 0 ] != null ){ bar = foo[ 0 ]; }
return bar;

776:Name_Not_Found
08/04/07 00:32:25
>>775
if (foo instanceof Array) とかの方がよくねか。
あと、fooが文字列ならfoo[0]はundefinedかと。

777:776
08/04/07 00:40:05
と思ったが、JavaScriptだと文字列は文字配列みたいになるらしい(非ECMA)。
知らんかったー。ややこしやー。

foo = 'abc';
alert(foo[0]); // ←'a'

778:Name_Not_Found
08/04/07 03:05:07
>>772
var os = new Namespace('URLリンク(a9.com)');
alert(xml..os::totalResults);

779:Name_Not_Found
08/04/07 05:59:50
>>778
おおおありがとうございました!

780:Name_Not_Found
08/04/07 07:58:58
あまりJavaScriptには関係ないと思うのだが,JavaScript
使ってる人はFireBugsも使ってそうなので,ここで質問させていただきたく...

実は,TTPDから画像を取得して,表示するまでの時間を測定したいのだが
FireBugsのNetというところでそれがわかるのだと思う.
このデータを外部に吐き出させて,加工して,ほかのデータと突き合せ
たいのだがこの部分だけ何とかテキストデータなりXMLなりで外部にファイル出力
することはできないのだろうか?

加えて,とにかく「HTTPDから画像を取得して,表示するまでの時間を測定する」
というのが目標なので,「もっといい方法があるよ!」という人はぜひ教えて欲しい.

781:Name_Not_Found
08/04/07 08:17:43
>>780
普通のブラウザのJavaScriptでできるんじゃないの?
1. 別窓をブランクで開いておく
2. 時刻を記録
3. onloadハンドラつきで画像を表示開始
4. onloadハンドラが呼ばれたら再度時刻を記録
5. 2つの時刻の差を別窓にdocument.writeで追記
この2~5を沢山やればある程度安定した値が取れるのでは。
最後は別窓の内容をコピペなりで保存する。

782:Name_Not_Found
08/04/07 09:04:39
>>781
おお,それは良い案ですね.ちょっとやってみます.

783:Name_Not_Found
08/04/07 09:33:40
>>781
ありがとうございました.データが取れました

784:Name_Not_Found
08/04/07 12:30:08
ピリオド使うのやめれ.

785:Name_Not_Found
08/04/07 12:55:41
あはは...

786:Name_Not_Found
08/04/07 14:02:05
IE6ではじめ開いたときは普通に動くくせに、リロードするとスクリプトエラーが出て動かなくなる。FxやSafariはおk
--
ライン:2
文字:1
エラー:オブジェクトを指定してください。
コード:0
--
var target = document.getElemtnById('xxx');

if (target) { ~省略 }
else { ~省略 }

target.innerHTML = bb.join('\n');
--
↑ここらへんの記述を削除したらリロードしてもエラーが出ないんだが、ここ削除すると動かなくなるのよね……
何かヒントください。

787:Name_Not_Found
08/04/07 14:05:31
>>786
targetがない状態のelseの中で何してるの?
targetがなくても結局最後の行を実行するような動きだったらおかしいような気がするけど。

788:Name_Not_Found
08/04/07 14:08:54
>>787
あ、elseには何も書いてないです。余計でした。
コピペせず打ったので間違えました。ごめんなさい。

if (target) {
~省略

target.innerHTML. = bb.join('\n');
}

正しくはこうです。

789:Name_Not_Found
08/04/07 14:11:15
再度タイプミスりました。連レスごめんなさい。

target.innerHTML. ×
target.innerHTML ○

790:Name_Not_Found
08/04/07 14:30:07
そのまま動かして試せる、なおかつ問題が発生する
最小限のサンプルを作って貼れ。嫌なら2度と来るな。

791:Name_Not_Found
08/04/07 15:14:19
>>790
>>1 このスレに書き込むことが許されるものは以下のとおり
に加えては?


792:Name_Not_Found
08/04/07 15:41:38
>>790
最小限でも大きくなっちゃうもの……('A`)

きっと他のところが悪さしてるんだな。わからんけどもうそのままでいいやww

793:Name_Not_Found
08/04/07 16:26:14
>>792
JavaScript 手取り足取りスレッド
スレリンク(hp板)

794:Name_Not_Found
08/04/07 18:37:09
プルダウンメニューで任意のページへ飛ぶ方法ですが、
(選んだだけで飛ぶのではなく、「GO」などのボタンを押して飛べるようにする)

新しいウインドウを開きながら、スクロールバーなどを出さずに、
閲覧者のモニターサイズを取得して最大表示するにはどうすれば良いでしょうか。

URLリンク(www.red.oit-net.jp)
ここを参考に、新しいページを開くところまでは行くのですが、
ツールバーなどの隠し方以下がわかりません。

795:Name_Not_Found
08/04/07 18:46:57 vX7ULVsJ
BASICにある READ~DATA に該当する命令はないでしょうか?

796:Name_Not_Found
08/04/07 19:03:00
>>794
window.openでってこと?
ウィンドウのサイズを強制的に変更されるのは使う側からするとあんまり気分良くないよ?
自分でも使ったことあるだろうからわかるだろうけど。
leftがscreen.width,
topがscreen.height,
widthがscreen.availWidth,
heightがscreen.availHeight
って感じかな。

あとは
URLリンク(developer.mozilla.org)
この辺も読んだ方が良いですね

797:Name_Not_Found
08/04/07 20:17:38
>>796
特にどの方法で、というのはないのですが、
794のページだと、以下のところにどのように足せばよいでしょうか。

function myGo2(){
mySelect = document.myForm2.myMenu2.selectedIndex;
window.open(document.myForm2.myMenu2.options[mySelect].value);

}


798:Name_Not_Found
08/04/07 21:12:09
>>797
window.open()から返される値はウィンドウオブジェクト。
それを変数に保管して、大きさ変更のメソッドを呼ぶ。まあ
少しは自分で勉強しなよ。ここは「おんぶにだっこ」嫌われるからね。

799:Name_Not_Found
08/04/07 21:38:42
>>795
何に使うんです?

800:Name_Not_Found
08/04/07 22:47:52
>>795
配列リテラル(言語仕様上は配列イニシャライザ)を使えば。
var a = [1,2,3,4,5,6,7,8,9,10,
...,999,1000];
まあデータの個数は千個くらいまでにしておくのがいいと思うけど。

801:Name_Not_Found
08/04/07 23:40:20
>>799
簡単なデータベースみたいなものです。
データは1度読み込んで条件により表示して終わりです。

>>800
有難うございます。試してみます。

a[0]= a[1]= みたいにしておくと途中にデータを追加した場合
数字の振りなおしが大変になると思いましたので。

802:Name_Not_Found
08/04/08 00:03:40 MMyv8/8a
<body onLoad="setInterval('doko()',1000)">
function doko(){}
この中でどの要素がフォーカスを持っているかを知ることは出来ますでしょうか?
ブラウザはFirefox2を使っています よろしくお願いいたします

803:Name_Not_Found
08/04/08 00:09:27
FF2なら全要素にfocusイベント張れば出来る。
一か所でやりたいなら、FireFox3じゃないと無理。
document.activeElementを見ればいい。
上の方でも言及されてるけど、DOMFocusInイベントはまだ拾えないみたい。
IEならactiveElementでもいいし、onactiveteなどのイベントでも拾うことができるぞ。
イベントで拾う場合はsetIntervalする必要はない。

804:Name_Not_Found
08/04/08 00:33:52
>>801
BASICの仕様を今見てきた。
速度とか見た目とかメンテナンス性の兼ね合いだけど、
//DATAの定義の代案
var arr = [];
for(var i = 0; i < 100; i++){ arr.push(i); }
//READ
var num1 = arr.shift();
ってイメージだと思った。

805:Name_Not_Found
08/04/08 00:44:12
>>803
ちょっと分かりにくい書き方になっているので補足。
FireFox2ではフォーカスがどこにあるかの取得するためのAPIが不十分で、
がんばらないと、うまく出来ないという問題があったと思ってる。
そこで、FireFox3(まだbetaだけど)では、activeElementサポートと
バブリング可能なイベントを用意することにしたというのが経緯。
どうしてもFireFox2でやりたいなら、
以下のように自分でactiveElementを作るなどの「がんばり」が必要だと思う。

var els = document.getElementsByTagName("*");
for(var i = 0, len = els.length; i < len; i++){
els[i].onfocus = function(){ document.activeElement = this; }
}

806:Name_Not_Found
08/04/08 00:58:04
>>803>>805
バブルしないイベントにもキャプチャフェーズっていうのがあるんだぜ

807:Name_Not_Found
08/04/08 01:06:09
>>806
おお!キャプチャーフェーズで拾えるのか!
言われてみれば確かに。
頭いいな。俺はずっと出来ないと思ってたww
キャプチャーフェーズはIEがサポートしてないんで
正直封印していたけど、考え直すわ。

808:Name_Not_Found
08/04/08 01:17:58
>>802
解決策提示するの忘れてたw
コードはこんな感じなのをdoko()が走る前にやっとけばいいと思う。
document.addEventListener("focus", function(){ document.activeElement = this; }, true);
で、dokoが走った時に、activeElementを見れば、そこがフォーカスになるはず。

809:Name_Not_Found
08/04/08 10:59:19
jsからwordを起動して、ローカルにあるcsvを差し込んで
差し込み印刷するという、なぜそんな・・・というものを作っているんですが、
どうもjsからやると、レコード長が長すぎると差し込めないようなんです。
挙動を見る限りですが・・・。どなたか聞いたことありませんか?

jsからではなく、普通にwordを起動してから、同じdoc、csvを用いて
差し込みすると正常に出力されるんですよね・・・なぜ・・。

ブラウザはIE7です。

810:Name_Not_Found
08/04/08 13:17:43
substrとsubstring、どっちか非推奨で使わない方が良いってのを昔どこかで見た記憶があったのだけど、
知ってる人いない?

URLリンク(developer.mozilla.org)
URLリンク(developer.mozilla.org)

811:Name_Not_Found
08/04/08 13:42:19
>>810
その2つのページを見てもわからないのか?

812:Name_Not_Found
08/04/08 13:59:05
>>810
非推奨≠使うな
恐らくあんたが生きている間は大丈夫。

813:Name_Not_Found
08/04/08 14:45:42
substrのが使いやすいんだよね

814:Name_Not_Found
08/04/08 17:15:49
>>811
substrの方に
> ECMA バージョン: 無し。しかし、ECMA-262 第3版 には、substr と類似のセマンティクスを取り上げている非標準のセクションがあります。
くらいしか見当たらなかったんだけど、何か見落としてる?

>>810
どうもです。

815:814
08/04/08 17:16:29
まちがって自己レスしてた。>>810でなく>>812

816:802です
08/04/08 20:34:30
>>808
いろいろ考えていただいてすみません
やってみたのですが、フォーカス移動しても [object HTMLDocument] が
入るのみで要素の特定に至らないようです(私のやり方がいけないのかもです…)

ただ非常に参考になることをたくさん書いていただいたので、
とりあえず今回は別のアプローチで行くことにしました
本当にありがとうございました

817:Name_Not_Found
08/04/08 21:31:07
非推奨=制作者は使うな、だが過去の互換性のために実装はサポートしろ
substrは非推奨ではなく非標準、将来の実装がサポートする保証がない

>>816
×this
○e.target
関連箇所も直せ

818:Name_Not_Found
08/04/08 22:28:50 bigkx21P
<style type="text/css"><!--
ul {margin-left : 0;padding-left : 0;}
li {padding : 2px 5px;margin-bottom : 1px;border : 1px solid #ff0000;background-color : #ffeeee;list-style-type : none;cursor : move;}
--></style>
<script type="text/javascript" src="lib/prototype.js"></script>
<script type="text/javascript" src="src/scriptaculous.js"></script>
<script type="text/javascript"><!--
window.onload = function() {Sortable.create('menu');}

function serialize() {alert(Sortable.serialize('menu'));return false;}
// -->
</script>
<ul id="menu">
  <li id="menu_1">メニュー1</li>
  <li id="menu_2">メニュー2</li>
  <li id="menu_3">メニュー3</li>
  <li id="menu_4">メニュー4</li>
  <li id="menu_5">メニュー5</li>
</ul>

でメニューを並べられるようにしてるのですが、
この順番をCookieで保存して次見たときも同じ順番で表示されるようにするには
どのようにすれば良いでしょうか?

819:Name_Not_Found
08/04/09 00:26:32
>>810
substr使いまくり。substringなんて使わん。
それに、例えサポートしないブラウザが登場しても、
>>817の言うように、String.prototype.substrを定義すればいいよね。

820:Name_Not_Found
08/04/09 01:34:30
>>818
setSequenceで順序指定できるから、
Sortable.serialize('menu'))で得られた文字列を
次の関数の引数にどうぞ。

function deserialize(cookieStr) {
var list = cookieStr.split('&'), seq = [];
for(var i = 0; i < list.length; i++){
seq.push(list[i].split('=')[1]);
}
Sortable.setSequence('menu', seq.reverse());
};

821:Name_Not_Found
08/04/09 01:36:04
ごめん、最後の1行へんなのいれちゃった。
設定したのと逆になっちゃうじゃん。。。

× Sortable.setSequence('menu', seq.reverse());
○ Sortable.setSequence('menu', seq);

822:Name_Not_Found
08/04/09 01:54:09
>>819
IE専のDHTMLコードでもElement.prototypeとかgetterとか弄れば問題ないという意見?
少なくとも、ネイティブ実装とユーザー定義とではパフィーマンスで比べ物にならないから
なくなったら後で定義すれば良い、には賛成できない
だったら、最初からなくなる可能性のない方を使っておけと

substrがなくなる可能性はないとは思うが、こだわる理由もないなあ

823:Name_Not_Found
08/04/09 03:03:44
色々比較。

○google検索
JavaScript substr -substring の検索結果 約 1,370,000 件中 1 - 10 件目 (0.21 秒)
JavaScript -substr substring の検索結果 約 607,000 件中 1 - 10 件目 (0.19 秒)

○有名ライブラリ(substr/substring/合計)
prototype.js 0/3/3
jQuery 1/2/3
Yahoo 24/70/94
ExtJS 34/77/111

824:Name_Not_Found
08/04/09 04:12:09 KIQCxBAs
れがしー。れがしー

825:Name_Not_Found
08/04/09 11:33:49 0zzXFwbU
prototype.jsを使って、よくあるボタンをクリックすると
DIVのブロックを丸ごと隠す機能を実装してみたんだけど、
そのページが表示された時点でデフォルトで隠れるようにしたい。

で、BODYのonLoadでターゲットを隠すfunctionを実行するようにしたけど
それだと 一瞬表示される → 隠れる というアクションになって見苦しい…
どうしたらいいかな? IE6以上、FF1.5以上、サファリ最新に対応で、、
アドバイスお願いします 

826:Name_Not_Found
08/04/09 11:44:09
>>825
>>790

827:Name_Not_Found
08/04/09 11:52:45
>>825
そんなもんにprototype.js使う必要あるの。そのdivを最初
visibility:hidden (か、display:none) にしておけばいいんでしょ。
それが分からないという時点であまりにも勉強不足すぎ。

828:Name_Not_Found
08/04/09 13:45:27
JavaScript以前の問題だわさ

829:Name_Not_Found
08/04/09 14:23:40
>>825
JavaScriptが無効な場合にコンテンツがなくなってしまう事も考えると、HEAD内に
<script>document.write('<style>#DIVのID { display:none }</style>');</script>
と書いておく。
タグのtype指定などはちゃんとやってね。

830:818
08/04/09 16:56:37 cEfmOp6U
>>820-821
どんな感じに埋め込めばいいですか?

831:Name_Not_Found
08/04/09 17:03:28
>>830 は常連全員を敵に回したな。そうやって1から10まで
書いてもらおうとするんじゃねーよって。

832:Name_Not_Found
08/04/09 18:46:07
>>830
Sortable.serialize('menu') で得られた文字列を
deserialize の引数にどうぞ。

833:Name_Not_Found
08/04/09 18:55:38
>>830
Sortable.create( 'menu', {'onUpdate':serialize} );
serializeの中でSortable.serialize('menu'))の文字列をCookieにセット。
window.loadやらreadyStateなどで、
Cookieの情報を取ってきて>>820の方法で復元。

>>831
匿名掲示板で常連とか言っているのは非常に気味が悪いね。
このスレには、>>689あたりの激烈馬鹿な説教じじいが2,3人常駐しているようだけど。

834:Name_Not_Found
08/04/09 19:11:38
確かJSも駄目だったような・・・

835:Name_Not_Found
08/04/09 19:11:57
>>831=>>689はいつもの文盲だから気にするな

836:Name_Not_Found
08/04/09 19:42:40
そろそろJS終わった君 登場の予感

837:Name_Not_Found
08/04/09 20:46:15 7QdzTjvz
jQueryで
<input type="text" name="aaa" value="あいうえお" class="checkItem" id="aaa" />
<input type="text" name="bbb" value="かきくけこ" class="checkItem" id="bbb" />
<input type="text" name="ccc" value="さしすせそ" class="checkItem" id="ccc" />
のような class="checkItem" の <input />タグの value を一気に取得したいのですが

$(function (){
$(".checkItem").ready(function(){
alert(this.val);
});
});

だと取得できません。
どのようにすればできますか? keyupとかのイベントであれば取得できるのですが…。

838:837
08/04/09 20:53:59
非常に簡単に出来ました…

alert($(".checkItem").val());

スレ汚しすいません。

839:Name_Not_Found
08/04/09 21:20:24
質問。
下のように関数の始めで引数をvar宣言した変数に入れ直すコードを結構見てて、
自分も何となくそうしていたのだけど、jQueryのコード見てたら普通に引数idを使ってた。

「で、これは何の意味があるのだろう?」と今さらになって思うようになりました。
理由がわかる方いますか?

推測としては、関数の外にある変数を参照するように効率が悪いのかなと思ったのだけど、
引数は関数の中のものだからそうじゃないのかと思ったりで確かめようもわからず。

function a(id) {
  var id = id

  var element = document.getElementById(id);
   ・
   ・
}

840:818
08/04/09 21:41:13 cEfmOp6U
>>833
分からないです・・・
ソース張ってください・・・

841:Name_Not_Found
08/04/09 22:24:20
常連とかそういうのはどうでも良いのだけど(常連じゃないし)、、
何かの相談事で回答する方が長い文章で、回答してもらう方は短文。
「わからないです」「動きません」
で済ませる奴って他人事ならがらえらいムカつくw

842:Name_Not_Found
08/04/09 22:34:35
>>840
JavaScript 手取り足取りスレッド
スレリンク(hp板)

843:Name_Not_Found
08/04/09 22:37:53
そう、ムカつくよね。手取り足取りやりたい奴はよその
スレへ行って欲しいね。
>>839
引数をローカル変数に入れ直すなんてなんの意味もない。
誰か馬鹿な奴が始めたのを意味もなくおうむ返ししてるというか。
一応計測してみたけど差はないね。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
function test(i) {
var j = i;
var t0 = new Date().getTime();
while(i > 0) --i;
var t1 = new Date().getTime();
while(j > 0) --j;
var t2 = new Date().getTime();
document.writeln('time1: ' + (t1-t0));
document.writeln('time2: ' + (t2-t1));
}
test(1000000);
</script></pre>
</body></html>

844:Name_Not_Found
08/04/09 22:43:46
>>841
質問スレでムカつくとは、2chの質問スレを理解していないのでは。
>>833で書いたように、誰にも必要とされていないのにわざわざ煽りに来る馬鹿の同類?

845:Name_Not_Found
08/04/09 22:46:40
>>844
このスレにはこのスレのローカルルールがあって、それが
テンプレに書かれている。63スレに渡ってこれでやっている。
これと違うことをやりたいなら別のスレでどうぞ。
>>839
function a(id) {
var id = id;
...
これは無意味。var idは新しい変数を作らない。だからこれは
function a(id) {
id = id;
...
と同じ。つまりあんたは無駄に代入を実行しているだけ。

846:Name_Not_Found
08/04/09 22:58:05
>>844
オレは>>833に書いてる事は同意なんだ。
初心者をからかって余計なレス入れるやつの方が嫌い。
初心者は初心者で何がわからないかもわからないケースもある。
スレの趣旨と多少ずれてもからかう気はなかった。

でも 833の回答に対して、質問者が入れたレスが
『分からないです・・・ ソース張ってください・・・ 』
これをみて、それは無いだろ・・・・ってムカついただけw

『すみませんクッキーのくの字もわからないので、書いてもらえませんか?」とか
自分の能力の提示なり、自分が書きかけたソースなり、何らかの情報を貼って
自分のレベルや状況など説明すべき事柄が常識的にはあるだろうって事。
そうすりゃ、>>842の様に誘導してくれる人もいるだろうに。
「どうちたの~」「どこがいたいの~」って聞かれるまで泣いてるだけってのは
JavaScriptの理解度以前に問題ありだと思って書いてみた。
普段は一応辛抱強い方なんだけど、>>840を読んだとたんに切れちまった。
すまんなw


847:Name_Not_Found
08/04/09 23:37:37
そうそう、レベルの問題じゃない、自分で勉強する気が
あるヤシなら易しい質問でもちゃんと回答がついてるよね。
初心者をからかってなんて、そんな回答ないだろ。
甘えている奴に甘えるなと言ってるだけ。

848:Name_Not_Found
08/04/09 23:51:46
IE8beta1をインストールしてるんだが、
JavaScriptベンチマークとか見てみると、随分早くなったとあったんで、
jscript.dllのバージョンを確認したんだが、IE7と同じだった。
エンジン自体は同じなのかね。

849:839
08/04/10 10:27:05
>>843,>>845
ありがとう。ありがとう。
回答してもらったおかけで、
いつの間にかthisへの代入をvarと勘違いしたまま理解したんじゃないかという推測にたどり着きました。

function a(p) {
  this.p = p; // プロパティのセット
}
var obj = new a()

とか言うのを、

funcion b(p) {
  var p = p;
}
b();

とかだと思い込んだまま理解してしまったんじゃないかと。
昔は関数ばっかでオブジェクトとか一切理解してなかったし。
本当に助かりました。ありがとう。

850:Name_Not_Found
08/04/10 10:31:12 Y6asS45U
DOMでoption生成するのってどうしてる?
(かなり古いのは置いておいてどのブラウザでもちゃんと動くものとする)

var select1 = document.createElement("select");
  var op1 = document.createElement("option");
    op1.setAttribute("value", "1");
    op1.appendChild(document.createTextNode("1"));
    select1.appendChild(op1);
  
  var op2 = document.createElement("option");
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
なんか冗長でいやなんだけど。。。

selectエレメントだけ作っといてあとは
select1.options[select1.length] = new Option("1", "1");
select1.options[select1.length] = new Option("2", "2");
select1.options[select1.length] = new Option("3", "3");
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
上よりマシだけど"1", "1"がみっともないような。

function mkOpts(){
//第1引数 parentElementの参照
//第2引数~ 生成optのvalue値
  for(i=1;i<mkOpts.arguments.length;i++){
    var op = document.createElement("option");
    op.setAttribute("value",mkOpts.arguments[i] );
    op.appendChild(document.createTextNode(mkOpts.arguments[i] ));
    mkOpts.arguments[0].appendChild(op);
  }
}
でmkOps(select1,"1","2","3","4","5".....);とするのがいいのかなぁ。
なにかいい方法があれば教えて。

851:Name_Not_Found
08/04/10 11:58:54
IEを考えるなら、new Option以外の選択肢は無い気が。

852:Name_Not_Found
08/04/10 12:03:27
>>850
var a = [1,2,3,4,5];
なんとか.innerHTML = '<select ...><option>' +
a.join('<\/option><option>') + '<\/option></select>';
とかね(w

853:Name_Not_Found
08/04/10 12:35:20
>>852
ま た お 前 か

854:Name_Not_Found
08/04/10 15:28:36
だからIEだけみれればいいんじゃないんだって。
innerHTML不可でおながいします。
>>851
普通にDOMでoption生成するのはIEじゃまずいの?
俺も元々IE使いだからめんどいって感覚は分かるよ
俺だってほんとはHTMLを組んどいてinnerHTMLしたい気は山々だが
それは今回できないから困ってるんだ。なんかいい方法ないかな?

855:Name_Not_Found
08/04/10 15:49:03
>>854
各ブラウザの実装に微妙な違いはあるが、
innerHTML=IEのみでは無いけれど。
URLリンク(www.quirksmode.org)

DOMLevel2準拠で、innerHTMLが無い(ある程度メジャーな)ブラウザってあったっけ?

856:Name_Not_Found
08/04/10 15:53:31
why isn't there anything wrong with new Option

857:Name_Not_Found
08/04/10 16:46:38
850は何にこだわってるって言う話なの?
コーディングのスマートさ?

858:818
08/04/10 19:01:46 j245cZz6
どんなに頑張ってもdragdrop.jsの600行目にオブジェクトが無いとか言われます

859:Name_Not_Found
08/04/10 19:14:30
>>858
こっちで聞けば答えを貰えると思われ。
JavaScript 手取り足取りスレッド
スレリンク(hp板)

860:Name_Not_Found
08/04/11 00:33:26
>>850
その関数の時点でほぼ必要最小限の引数になってるように見えるので、
(強いて言うなら、"1","2","3","4","5".....の部分が配列などのオブジェクトになっていない)
そこにあるもので十分に見える。
それ以上に最適化したいなら、サービス全体を把握すれば、もっとよりよいものができると思う。

innerHTMLがダメならdocument.write()で書き込んで移動させるのはどう?

861:Name_Not_Found
08/04/11 01:22:48
var select1 = document.createElement("select");
function mkOpts(a){
for(var i=1; i<a.length; i++){ a[0].options[i-1] = new Option(a[i],a[i]); }
}
mkOpts([select1,"1","2","3","4","5"]);


862:Name_Not_Found
08/04/11 12:55:57
なるほどまあこのくらいなんだね。
色々意見くれてありがとう。

>>857
コーディングのスマートさ。
>>855 Macの方が心配だ。
>>860 >document.write()で書き込んで
・・・・・

863:Name_Not_Found
08/04/11 13:00:07
>>862
・・・・・・・・・・

864:Name_Not_Found
08/04/11 13:33:30
>>862
Mac版IEなどは、
>かなり古いのは置いておいて
の時点で除外されると思っていたけれど。

ちなみにAppleの見解としてはこんな感じ。
URLリンク(developer.apple.com)

865:Name_Not_Found
08/04/11 14:07:26
MacではIEだけがたよりです!あとはNN4位しかありません!
マシンが壊れたらもう修理も不可能なのでさよならです。PCを触ることはなくなるでしょう。
WindowsなんてMacもどきのカスは死んでも触りませんから。

え?Safariがあるって?
OSXはMacじゃなくてWindowsもどきのゴミなので知ったことではありません。

866:Name_Not_Found
08/04/11 15:38:03
いや。MacはWindowsに一目置いてるよ



 ┌───┐
 │Free TIbet
 │         |
 │China Free │
 (ヨ─∧_∧─E) 
  \(* ´∀`)/
    Y     Y 

867:Name_Not_Found
08/04/11 16:19:33
Safari 1.xだか2.xだかでは
new Option, new Imageで生成されるオブジェクトと
createElement('OPTION'), createElement('IMG')で生成されるノードは
異なるもので、イベント周りか何かで少し悩んだ記憶がある。
今は知らん。

868:Name_Not_Found
08/04/11 18:40:12 BE:19786526-2BP(2)
ぶっちゃけ、createElementなどでDOM操作するよりも、
innerHTMLで直接スクリプト内にタグ打ちした方がいい?
スピードとか、コーディングのしやすさとかの面からどうかな?

<object>タグの中の<param>タグの属性を配列から生成するプログラム作ったら、
FireFoxでは展開されるのに、IE7で<param>の属性が理解不能な値に化けた。

確かこんな感じだったような。
var params = [
['default', '00'],
['param1', '01'],
['param2', '10'],
['param3', '11'],
];
var div = document.createElement('div');
var object = document.createElement('_____'); //IEではobjectタグをDOM操作で生成したときに実行されないのでダミーのタグを作る
object.classid = "clsid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
object.type = "application/x-oleobject";
div.appendChild(object);
for(var i=0; i<params.length; i++) {
var param = document.createElement('param');
param.value = params[i][1];
param.name = params[i][0];
object.appendChild(param);
}
div.innerHTML = div.innerHTML.replace(/(<\/?)_____/ig,'$1object'); // objectタグに書き換え

objectタグに変換するあたりでデーターが化けるらしい。DOMはよくわからん・・・。

869:Name_Not_Found
08/04/11 20:22:06
date = ["a_0.あ.か","b_0.い.き","c_0.う.く","d_0.え.く","e_0.お.こ"];
と言う配列があって、
location.search.substring(1)で取得したアルファベットに応じて、
for文の中でdate[i].split(".")[0]の先端の文字部分と同じアルファベットがある時に、
[1]と[2]を表示させたいです。

例としては、hoge.html?a になっていれば"あ" と "か"を出力して
hoge.html?b なら"い" と "き"を出力したいです

870:Name_Not_Found
08/04/11 22:19:20
var now = new Date();
var year = now.getFullYears();

で、yearに今だと2008ってのが出ると思うのですが、08だけ取りだすにはどうすればいいでしょうか

871:Name_Not_Found
08/04/11 22:20:25
>>868
おれは、投入したい内容で決めてる。
複雑になればinnerHTML。createElementにはこだわらない。
ただし、innerHTMLするとしても
イベントとスタイルはinnerHTMLの後がほとんどのパターン。

872:Name_Not_Found
08/04/11 22:25:22
>>869
そうですか、そういうことがしたいのですね。分かりました。
ぜひ頑張ってください。

ところで、その?の後のアルファベットは必ず1文字だけ?

873:Name_Not_Found
08/04/11 22:33:22
>>869
そこまで理解しておきながら。。。まぁ1文字だけなら。

var date = ["a_0.あ.か","b_0.い.き","c_0.う.く","d_0.え.く","e_0.お.こ"];
var sa = "b";
for(var i = 0; i < date.length; i++){
var m = date[i].split(".");
var m0 = m[0].split('_');
if(m0[0] == sa){
alert(m[1] + ":"+ m[2]);
}
}

>>870
(new Date).getFullYear().toString().substring(2)

874:Name_Not_Found
08/04/11 22:36:15
>>872
他の情報を載せたクエリも付きますが、情報を決めるアルファベット自体は1文字です。

875:Name_Not_Found
08/04/11 22:39:42
>>873
ありがとうございます!

876:870
08/04/11 22:47:06
>>873
ありがとうございます。

何回も同じ質問してる感じがするんですが、
var now = new Date();
var month = now.getMonth();
で(month+1)で数字は何とかできるんですが、桁数が1桁だったり2桁だったり変わるので、
00,01,02.....08,09,10,11 って感じにならないですか?

877:Name_Not_Found
08/04/11 22:58:30
>>876
var month = String(101 + new.getMonth()).substring(1);

878:870
08/04/11 23:03:26
>>877
今月がなぜか041となってしまいました・・・
何故でしょうか

879:870
08/04/11 23:04:18
>>878
(mon+1)を書きっぱなしでした。
すいません

880:Name_Not_Found
08/04/11 23:19:19
>>868
innerHTMLは、とてつもなく"遅い"。
DOMに継ぎ足すのも、フラグメントを作って、そこに継ぎ足して、まとめてDOMに放り込むのが一般的。

881:Name_Not_Found
08/04/11 23:56:56
きちんと理解してればDOMよりinnerHTMLのが速いってば

882:Name_Not_Found
08/04/12 00:05:01
だな。

883:Name_Not_Found
08/04/12 00:06:55
createElementを100回呼ぶのと
innerHTMLに100回代入するのだったら
innerHTMLのほうが遅いかもしれないけど、
innerHTMLへの代入は1回にまとめられるから。

884:Name_Not_Found
08/04/12 01:13:01
Range, DocumentFragment, Node.cloneNode()で格段に効率が違う

DOMの存在理由の一つはsyntaxを考えずにノード操作に専念できること
XMLほど厳格ではないにしてもHTMLのsytaxだってそんなにゆるくない
innerHTMLへの代入値がsyntax errorの糞断片なら返す値も中途半端なんてのはザラにある

文字列操作したいならうまくやれ
最近少しだけ改善されたがJScriptでの+連結は遅いぞ

885:Name_Not_Found
08/04/12 01:15:08
計時してはっきり見せてやれ。俺はこのスレで何十回もそうしてきた。JS終了だからもう俺は書かないが、JS終了に気付いていないお前らはごちゃごちゃ言葉を並べずにコードを書いて示せ。


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