+ JavaScript の質問用スレッド vol.65 +at HP
+ JavaScript の質問用スレッド vol.65 + - 暇つぶし2ch504:Name_Not_Found
08/06/23 17:38:16
>>503補足
"常に1つだけ"というのが、0個選択も許さないって意味だったら↓
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "URLリンク(www.w3.org)">
<html lang="ja">
<head>
<meta Http-Equiv="Content-Type" Content="text/html;charset=utf-8">
<meta Http-Equiv="Content-Script-Type" content="text/javascript">
<script>
var cblist=['a','b','c'];
function recheck(c){
for(i=0;i<cblist.length;i++){
if(!document.f[c].checked){
alert("最低1個選択してください。");
document.f[c].checked=true;
}
if(c!=cblist[i]){
document.f[cblist[i]].checked=false;
}
}
}
</script>
</head>
<body>
<form name="f">
<input type="checkbox" name="a" onClick="recheck('a')" checked>
<input type="checkbox" name="b" onClick="recheck('b')">
<input type="checkbox" name="c" onClick="recheck('c')">
</form>
</body>
</html>

505:Name_Not_Found
08/06/23 17:41:58
>>502
チェックボックスのonclickハンドラでチェックボックスがONに
なるのを検出する。で、その時自分以外のを全部OFFに変更する。
この説明で分からないなら勉強してね(ここは全部書いてあげる
スレではないので)。

506:Name_Not_Found
08/06/23 17:42:44
げげ…リロードしてなかったorz

507:Name_Not_Found
08/06/23 18:11:12
>>502
すなおに radio を使え。

>>503-504
NAME属性値が異なっているが、それは>>502がやりたいことなのか?

508:502
08/06/23 18:20:34
ありがとございます。
配列作ってってとこまではわかったんですが、渡した引数との整合(?)で躓いていたので本当に助かりました。
もっと勉強してきます。

509:Name_Not_Found
08/06/23 18:24:58
>>507
ググってみたらcheckboxも同じnameで配列でいけるのか;;知らなかった

>>504をする場合は素直にradio使った方が良いと思うが、>>503のように「0個もしくは1個選択」させる場合はcheckboxのほうが良いと思う。



510:Name_Not_Found
08/06/23 18:58:20 5YaKTodd
JSONで定義した無名ハッシュのキーリストを取り出すには
どういうメソッド/方法を使えばいいんでしょうか。
Perlのkeysみたいなのがないかなと・・・
最悪、リストを2つ用意してっていうのも考えてはいます。

511:Name_Not_Found
08/06/23 19:11:40
と思ったらまんまkeysでいいのね。ごめん。

512:Name_Not_Found
08/06/23 20:12:23
>>511
それはどこかに定義されているのだろうな。
例えば Firebug の console には keys() も values() もあるが、言うまでもなくページからは使えない。


513:Name_Not_Found
08/06/23 20:28:19
>>509
> 503のように「0個もしくは1個選択」させる場合はcheckboxのほうが良いと思う。

もし <form> の中に name="XXX" だけしかコントロールが無いのなら、JSは要らない。
デフォで何も選択しない状態にしておいて、reset コントロールを書けば済む。

JSが必要な状況は、
* <form> で囲まれていて、他の name 属性値を持つコントロールがある
* <form>で囲まれていない
の2通りあるが、これも radio コントロールを使って、単純に、...checked=false すれば良い。

結局、radio を使うのが最易。

514:467-470
08/06/23 21:49:02 DzJ84Pjg

httpObj.open("GET", fName, true);
     ↓
httpObj.open("GET", fName, false);

このようにopenメソッドの第三引数をtrueからfalseに変えたらうまくいきました。



true … リクエストを送った時点で次の処理へ進む(非同期通信)
false … リクエストからの応答があるまで待ってから次の処理へ進む(同期通信)

やっぱり、iやjがローカル変数だとかグローバル変数だとかってのは関係なかったみたいです。



っとなると、trueではどう頑張っても無理ですか??

一応、>>496のやり方も試しましたがだめでした。


515:Name_Not_Found
08/06/23 23:52:37
このおっさんしつこいなぁ

516:Name_Not_Found
08/06/24 03:58:37
>>512
ご名答、Firebugでした。やっぱりブラウザにはないのね・・・
グリモンで使おうと思ったんだけど、とりあえず使わず済ませました。
Firebugを関数リファレンスと考えちゃいけないとわかったのも収穫。

517:Name_Not_Found
08/06/24 07:13:21
>>513
>デフォで何も選択しない状態にしておいて、reset コントロールを書けば済む。
resetボタンという手があったか
そうなると、radioで無理なのは選択できるのが0~2個とか0~3個とかのときだけになるか

大した行数じゃないしjavascript+checkboxでも良い気がするが好みかな


518:Name_Not_Found
08/06/24 08:31:55
>>517
UIの統一感という意味でも、単一項目しか選択出来ないものにはradioを使った方が良いのでは。

519:Name_Not_Found
08/06/25 06:48:50
Class内のattachEventに関して質問です。
<html><head><script>
this.eTest = function(){
    this.prop = 100;
}
this.eTest.prototype.showProp = function(){
    alert(this.prop);
}
this.eTest.prototype.setEvent1 = function(){
    document.body.attachEvent("onclick",function(x){return function(){x.showProp()}}(this));
}
this.eTest.prototype.unsetEvent1 = function(){
    document.body.detachEvent("onclick",function(x){return function(){x.showProp()}}(this));
}
this.eTest.prototype.setEvent2 = function(){
    this.savedFunc = function(x){return function(){x.showProp()}}(this);
    document.body.attachEvent("onclick",this.savedFunc);
}
this.eTest.prototype.unsetEvent2 = function(){
    document.body.detachEvent("onclick",this.savedFunc);
}
var inst = new eTest();
</script></head><body>
<input type="button" value="setEvent1" onclick="inst.setEvent1()">
<input type="button" value="unsetEvent1" onclick="inst.unsetEvent1()">
<input type="button" value="setEvent2" onclick="inst.setEvent2()">
<input type="button" value="unsetEvent2" onclick="inst.unsetEvent2()">
</body></html>
1, unsetEvent1でイベント解除できないのはattachしたときの関数オブジェクトとは 別の関数オブジェクトだからという認識でいいんでしょうか?
2, こういった場合setEvent2のようにattachEventに渡す関数オブジェクトを保持しておき、detachEventに同じものを渡すというやり方で問題ありませんか?
3, メモリリークですが、detachした時点でメモリが解放されるということでいいですか?
4, 同じことを実現するのにベターな書き方はありますか?

520:Name_Not_Found
08/06/25 08:03:54
>>519
関数式(関数リテラル)は、そこを実行するごとに新しい関数
オブジェクトを生成することになっている。だから確かに
attachで渡したものをとっておいてdetachにもそれを渡すように
するのが正しそう(試してないけど)。メモリが解放されるのは
あくまでもガベージコレクションのタイミング。リークというのは
ガベージコレクションしても解放されなくなるという意味。

521:Name_Not_Found
08/06/25 10:04:09
ガベージコレクションがいつまでたっても呼び出せなくなるのがIEのリークなんじゃ?

522:Name_Not_Found
08/06/25 11:07:30
>>521
それは言い方がおかしいと思う。その言い方だとリークが起きたら
以後ガベージコレクションが起こらなくなるという意味になると
思うが、そしたらあっという間にメモリが足りなくなるだろう。
「そのリークしたオブジェクトについてガベージコレクション
されない」という意味なら、>>520 でいう「解放」がそれに
相当すると思う。まあ言葉遣いの問題なんだろうけど。

523:Name_Not_Found
08/06/25 11:20:49
デッドロックみたいなもんか

524:Name_Not_Found
08/06/25 12:04:12
>>522
横やりだけど何か違和感だったのでレス。
JavaScriptの場合「参照カウントが0になったらGCされる→メモリが解放される」
だから、「参照が循環するとGCされない(サイ本P.147)→メモリが解放されない」
なので、
>>520
> ガベージコレクションしても解放されなくなる

「GCしても」っていうところがちょっとおかしいかな?と。

525:Name_Not_Found
08/06/25 12:14:50
>>524
JavaScriptのみのオブジェクトの場合、循環参照があっても
解放される。これはマークスイープとかコピー方式のガベージ
コレクションを行っているわけだよね。一方、DOMツリーを経由
した循環参照はリークする。これはDOMツリーからたどれるオブジェクト
については参照カウントを維持していて、それが0より大きいと
「使用中」とみなされる。循環参照してしまうとどこからも指して
ないオブジェクト群でもカウントが1のまま残ってしまうというのが
このリークの本質。で、JavaScriptオブジェクトのガベージ
コレクションを実行しても、カウントが0より大きいものは回収
しないから「ガベージコレクションを実行しても解放されない」
となる。

単純なリファレンスカウントによるガベージコレクション「だけ」
の場合だと確かに>>524の言う通りだけど、この場合はそうじゃない
と理解しているんだがどうかな。

526:Name_Not_Found
08/06/25 12:43:32
俺は使い終わったオブジェクトは極力
delete オブジェクト名;
するようにしてる。

527:Name_Not_Found
08/06/25 12:46:14
GCの動作を理解してなかった

528:Name_Not_Found
08/06/25 18:15:09
勉強になる。てか、よく理解できてない俺はやっぱ自分で消そうと思った。

529:Name_Not_Found
08/06/25 21:13:05
>>526
それって
var obj = newObject;
・・・何か処理・・・
delete obj;
ってしてるってこと?
もしそうならnewObjectへの参照は消えてないよ

530:Name_Not_Found
08/06/25 22:52:29
>>529

参照?どういうことだろう…

var hoge=function(){};

req=new hoge;
req.moge="mogera";
alert(req.moge);
delete req;
alert(req.moge); //ここで、「Can't find variable: req」/「エラー: req is not defined」などのエラーが出る。
ってことは、参照が消えてるってことではないのかな…








531:Name_Not_Found
08/06/25 23:06:54
アホの会話はかみ合わない

532:Name_Not_Found
08/06/26 00:13:15
新規openについて質問します。
IE7+右クリック連携で現在開いているhtmlに対し、「選択範囲にあるURL全てを開く」という内容を考えています。

パラメータが違うURLを「別ウインドウの新しいタブ」にまとめて開きたいのですが、

//処理

for(条件で繰り返し)[
window_handle = window.open(url,target,'');
}

この形式ではIE自体は別プロセスになりますが、1つのタブ内で繰り返し開こうとしてしまいます。
(ポップアップブロックは無効に設定してます)

現在のウインドウ内でも良いので、新しいタブで各URLを開いていくような回避方法がありますでしょうか?

533:Name_Not_Found
08/06/26 00:21:10
targetの代わりに「'_blank'」を指定してみたらどうなる?

534:Name_Not_Found
08/06/26 00:25:04
>>533
for内の条件発生分だけ、IEが新規にopenしてしまいます。

535:Name_Not_Found
08/06/26 00:34:37
>>534
「_blank タブ」でぐぐれ。終了。

536:532
08/06/26 01:05:02
>>535
IE7の仕様ということみたいですので把握しましたです。

ありがとうございました。

537:Name_Not_Found
08/06/26 03:25:36
>>530
それなら消えるね
var req=new hoge; だと消えないというのを言いたかった

538:519
08/06/26 09:39:26
>>520
ありがとうござます。
メモリリークという言葉を使ったのがまずかったですが
クロージャでロックされたローカル変数はdetachしたら
解放されるのかどうかが知りたかっただけです。
プログラマはGCの正確なタイミングは知り得ませんが、
detachすればGCの対象になるのかどうかが知りたいという質問でした。

>>537
DontDelete属性の話でしょうか?
eval評価したスクリプト内のvar付き変数は
現状ではdeleteできるようですが。
ECMAScript 4ではDontDeleteつくらしいですね。



すいません話をattachEventに戻していいですか?
Class内でattachEventを使う場合は>>519よりもベターな書き方はありませんか?
みなさんどうしてるのか教えてください。


あとどの関数がどのイベントにattachされているかを知ることはできますか?
自分で管理するしかない?

539:Name_Not_Found
08/06/26 10:18:57
ベターな書き方と言われても、自分のインスタンスへの参照が欲しいなら
方法はそれくらいしか無いと思うけどなぁ
bindすれば少し読みやすくなるかと

イベント発生時の動作をあとから切り替えたいということなら
eTest.prototype.setEvent1 = function() {
  document.body.attachEvent("onclick", (function(x) {
    return function() { return x.currentFunc.apply(x, arguments); }
  })(this));
};
これでcurrentFuncをすりかえるだけでいい

540:Name_Not_Found
08/06/26 14:17:12
質問いたします。
下記のように2ページ先のフォームにあらかじめ用意しておいた値を
自動入力するスクリプトを組みたいのですが何か良いアイデアは有りませんでしょうか。


 IDやパスやフォーム入力値を埋め込んだ自PCのhtml "スタートページ"
     ↓
     ↓
 企業のログインページ ← "スタートページ"からonloadでログイン
     ↓
     ↓
 企業のフォームページ ← "スタートページ"のフォーム入力値をセット(この方法が思いつかない)

541:Name_Not_Found
08/06/26 14:42:41
>>540
うん、なるほどね。
あんたがやりたがっていることには企業のなんたらIDを取得しようとそ
の攻略法に血道をあげて研究に余念のない悪の諸先輩方がいますよ。
ま、これはその初歩も初歩のかわいい手口ってとこかな。違いは、あん
たのがピンポイントで悪の諸先輩方のがランダムで攻撃して来るってと
こくらいじゃない。ここでは>>1の回答拒否に当たるかも。

542:Name_Not_Found
08/06/26 14:48:19
>>541
勝手に悪者扱いされて心外なのですが、どうすればなんたらIDとやらを取得する話になるのでしょうかね。

543:Name_Not_Found
08/06/26 15:28:15
>>541
日本語でおk


>>542
エラーくらい読めカス

544:Name_Not_Found
08/06/26 16:07:30
>>543
勝手にカス扱いされて心外なのですが、どうすればエラー出るんでしょうかね。
知ってたら教えてもらえませんか。

545:Name_Not_Found
08/06/26 16:41:07
>>544
てめーのブラウザ名でも添えてggrks

546:Name_Not_Found
08/06/26 16:48:48
URLリンク(detail.chiebukuro.yahoo.co.jp)

547:Name_Not_Found
08/06/26 17:23:24
システムテストか運用時の定期的な動作テストの為か何かと思うが、
さすがにこのご時世で特に説明も無く>>540のように書かれたら、
胡散臭く思うのも仕方無い、というか疑って当然。

548:Name_Not_Found
08/06/26 18:27:26
>>544
とりあえず何でそういうことをやりたいか書いてみたら?
同じ方法でなくともやりたいことはgreasemonkeyとかでできるかもだし

549:Name_Not_Found
08/06/26 22:14:07
>>548
できるかもというか、できるだろというか、やってるよ俺は。
IDマネージャなどを使うより便利。gm_scriptsディレクトリはSVN管理してる。

一般にはそういう拡張(アドオン)を入れるのが手軽なんだろうな。

言うまでもないだろうが、実害が発生し得るカード情報などは、全部手入力だけどな。

550:Name_Not_Found
08/06/26 22:15:35
マクロ組めばいいだろっていう

551:Name_Not_Found
08/06/27 09:31:52
おしえてくだされ。参考にしているスクリプトに以下のような部分が
あるんですが、if文の中のびっくりマーク二つはどういう意味に
なるんでしょうか?一つだと分かるんですが。ググっても分から
ないのでお願いします。

var title_nodes =  document.getElementById("btAsinTitle");
if(!!title_nodes){



552:Name_Not_Found
08/06/27 09:46:20
>>551
単なるtypoだろ

553:Name_Not_Found
08/06/27 09:50:20
>>551
真偽値に変換するため
ちなみにifの場合は勝手に判断してくれるから必要ない

554:519
08/06/27 12:14:35
>>539
便利な書き方ですね。参考になります。

イベントを中央管理してクロージャなしで書けそうです。
試行錯誤中ですがなんとかなりそうな雰囲気


555:Name_Not_Found
08/06/27 13:07:20
>>554
参考にしたいのでできたらサンプル見せてもらえませんか

556:Name_Not_Found
08/06/27 15:52:50 iNHOA/2z
あるボタンのonclickに対してイベントを2つ登録して
最初に登録されたイベントの結果によって
次に登録してあるイベントを実行したりしなかったりという制御をしたいのですが
どの様にすればよいのでしょうか?


557:Name_Not_Found
08/06/27 15:55:04
>>556
そのサンプル書いてみて。

558:Name_Not_Found
08/06/27 15:55:53
>>556
できたらサンプル見せてもらえませんか

559:Name_Not_Found
08/06/27 15:56:55
>>557
書けたら質問しないだろ

560:556
08/06/27 16:00:19 iNHOA/2z
<html>
<head>
<script type="text/javascript">
function method1() {
if (confirm("method2を阻止する?")) {
// ここでmethod2の実行を阻止したい。
} else {
;
}
}
function method2() {
alert("method2.");
}
window.onload = function () {
document.getElementById("buttonId").attachEvent("onclick", method2);
document.getElementById("buttonId").attachEvent("onclick", method1);
}
</script>
</head>
<body>
<form>
<input type="button" value="button" id="buttonId">
</form>
</body>
</html>

561:Name_Not_Found
08/06/27 16:06:03
>>557-558
なんなのこいつら
日本語も読めない奴は回線切って首吊れよ

562:Name_Not_Found
08/06/27 16:13:33
何故2つ割り当てるのか分からない

563:Name_Not_Found
08/06/27 16:22:11
>>561
どこまで書けるかってのを知りたかったんじゃないのか

564:Name_Not_Found
08/06/27 16:30:33
>>563
それを知って何になる?

565:Name_Not_Found
08/06/27 17:19:26
IE専なんて試す気にもならないけどこんなところか
function Util(id, type) {
  this.obj = typeof id == 'string' ? document.getElementById(id) : id;
  if (this.obj) throw 'ハァ(゚д゚)?';
  if (!type) throw 'ハァ(゚д゚)??';
  this.work = [];
  this.obj.attachEvent(type, (function(x) {
    var a = x.work;
    for (var i = 0, current; current = a[i]; i++) {
      if (a[i].call(x.obj)) return;
    }
  })(this));
}
Util.prototype = {
  attach: function(listener, index) {
    if (isNaN(index = Number(index))) return this.work.splice(index, 0, listener);
    if (typeof listener != 'function') return false;
    return this.work.push(listener);
  },
  detach: function(listener) {
    if (typeof listener != 'function') return false;
    var i = this.work.indexOf(listener);
    if (i < 0) return false;
    this.work.splice(i, 1);
    return true;
  }
};


566:Name_Not_Found
08/06/27 17:19:46
var hogeClick = new Util('hoge', 'onclick');
で hoge のクリックを管理するオブジェクトができる

hogeClick.attach(function() {
  return !confirm('バカなの?死ぬの?'); // false を返すとこれより後をキャンセル
})
hogeClick.attach(function() {
  alert('そうかい');
})

567:Name_Not_Found
08/06/27 17:23:45
見直してたら間違いがあった
9行目
if (a[i].call(x.obj)) return; → if (!a[i].call(x.obj)) break;

568:556
08/06/27 18:00:25 iNHOA/2z
動かしてみて試させていただきました。

> if (this.obj) throw 'ハァ(゚д゚)?';

if (!this.obj) throw 'ハァ(゚д゚)?';
に直したんですがこれでよいのですか?

> for (var i = 0, current; current = a[i]; i++) {
> if (!a[i].call(x.obj)) break;
> }
この辺りで、「種類が一致しません」とエラーがでました。
どうやったらエラーを取り除けるのかわかりませんでした。

569:Name_Not_Found
08/06/27 18:35:02
>>568
あまりにも酷いから書きなおしますごめんなさいごめ(ry

570:Name_Not_Found
08/06/27 18:44:33
>>561

|>>557-558
|なんなのこいつら
|日本語も読めない奴は回線切って首吊れよ

ってあんた「なんなの」って部分をちゃんとした日本語で説
明してみなよ。拝見するから。結果によっては、てめえで説
明もできねえようなら、人の批評をするなボケって話だろ。

571:Name_Not_Found
08/06/27 18:47:46
>>568
これで動いた。type から on は削っといた
function Util(id, type) {
  this.obj = typeof id == 'string' ? document.getElementById(id) : id;
  if (!this.obj) throw 'ハァ(゚д゚)?';
  if (typeof type != 'string') throw 'ハァ(゚д゚)??';
  this.work = [];
  this.obj.attachEvent('on' + type, (function(x) {
    return function() {
      var a = x.work;
      for (var i = 0, current; current = a[i]; i++) {
        if (!current.call(x.obj)) break;
      }
    };
  })(this));
}


572:Name_Not_Found
08/06/27 18:48:59
Util.prototype = {
  attach: function(listener, index) {
    if (typeof listener != 'function') return false;
    if (!isNaN(index = Number(index))) {
      this.work.splice(index, 0, listener);
      return index;
    }
    return this.work.push(listener);
  },
  detach: function(listener) {
    if (typeof listener != 'function') return false;
    var i = this.work.indexOf(listener);
    if (i < 0) return false;
    this.work.splice(i, 1);
    return true;
  }
};
function init() {
  var hogeClick = new Util('hoge', 'click');
  hogeClick.attach(function() {
    return !confirm('バカなの?死ぬの?');
  });
  hogeClick.attach(function() {
    alert('そうかい');
  });
}

>>570
結局お前はなんの役にも立ってないだろ
無駄なレスすんな

573:Name_Not_Found
08/06/27 18:50:09
おいおい笑とけ笑とけ

574:Name_Not_Found
08/06/27 20:48:19
バブルするイベントタイプは、アホ外人が言うイベントデリゲーションを使え。

575:556
08/06/27 21:16:39 iNHOA/2z
>> 571
動作確認しました
ちゃんとキャンセルできました
まさにこの動きを探してたんです
自分でイベントの管理をするのですね
まだ私にはレベルの高い事だったので、とても勉強になりました
ありがとうございます

576:551
08/06/27 22:29:54
>>552 >>553
thanx!

577:Name_Not_Found
08/06/28 04:25:12
ある程度時間をおいてもう一度自分のコードを読むと、少し気持ちわるいとこが見つかるよな

if (!current.call(x.obj)) break; → if (current.call(x.obj) === false) break;

attach: function(listener, index) {
  if (typeof listener != 'function') return false;
  if (isNaN(index = Number(index))) return this.work.push(listener);
  this.work.splice(index, 0, listener);
  return index;
},


578:Name_Not_Found
08/06/28 13:13:03 Xx7cgI9V
name="pic[0]"を指定してるアップロードフィールドがあって、そこに入力した中身を
空欄にするスクリプトを書いています(フィールドは"pic[9]"まで10個あります)

function clearUploadField(n){
uploadPic = "pic[" + n + "]";
//alert(n);
document.mujintouForm.elements[uploadPic].value = "";
}
これに対して onClick="javascript:clearUploadField(0)"とすると、
alertで0がただしく表示されるのに、IE6でフィールドがクリアされません
firefoxとsafariではクリアされます
どこに問題があるでしょうか? スクリプトエラーも表示しない状況です。
どなたかご意見よろしくお願いします

579:Name_Not_Found
08/06/28 13:41:18
◆◆◆◆◆◆◆◆◆毎日新聞社による日本人への誹謗中傷◆◆◆◆◆◆◆◆◆

・母親は受験勉強をする息子の学力向上のためにフェラチオをする
・日本人女性の55%は、出会ったその日に男と寝る
・ファストフードは女子高生たちを性的狂乱状態におとしいれる
・ティーンたちはバイアグラを使ってウサギのようにセックスをする
・女子高生は、刺激のためにノーブラ・ノーパンになる
・日本の最新の流行 : 70歳の売春婦
・老人の売春婦の人気にもかかわらず、日本では小学生の売春婦にも仕事がある
・日本の若い看護婦は売春婦に勝る
・24時間オルガズムが止まらない病気で苦しむ日本人女性の数が増えている
・15未満の子供を対象とした疑似ポルノが日本に蔓延している
・OLの72%が、セックスをより堪能するために何らかのトレーニングを受けている
・人妻は気分転換の目的で昔の恋人に抱かれに行く
・主婦は郊外のコイン・シャワーで売春をしている
・日本男子は柔道や空手の部活で男相手に童貞を捨てている
・ほとんどすべての漁師は海でマンタとSEXしている
・まだ10代の少年から退職した老人までみんな2980円の手コキを利用している
・六本木のあるレストランでは、食事の前にその材料となる動物と獣姦する

※同社が全年齢向けコーナーで七年以上にわたり世界に向けて配信していたものの一部です
※同社の行為は日本人への偏見や人種差別、婦女暴行、幼児虐待を助長するものです

◆毎日新聞の英語版サイトがひどすぎる まとめ@wiki
 URLリンク(www9.atwiki.jp)
◆毎日新聞問題の情報集積wiki
 URLリンク(www8.atwiki.jp)

つまり日本人なら
URLリンク(www.vipper.net)

580:Name_Not_Found
08/06/28 15:03:04 ZBMnA16M
リンクをクリックしたとき、そのリンクがサイト上にある全リンクの
何番目かを知るにはどうしたら良いでしょうか?
links[]を使って出来るんでしょうか

581:Name_Not_Found
08/06/28 15:10:43
>>580
知らんけどArray.prototypeのindexOfをcallしてみたら?

582:Name_Not_Found
08/06/28 15:40:35
>>581
ありがとうございます。それでやってみます。

583:Name_Not_Found
08/06/28 17:13:46 jlACv3h8
サイトがURLリンク(hoge.jp)、インデックスファイルがindex.phpだった場合、
トップページかを判別する方法として
location.href == "URLリンク(hoge.jp)" || location.href == "URLリンク(hoge.jp)"
よりもっと短くする方法はありますか

584:Name_Not_Found
08/06/28 17:26:01
/^http:\/\/(?:www\.)?hoge.jp\/?(?:$|index\.php$)/.test(location.href)

585:Name_Not_Found
08/06/28 17:27:12
>>583
var urip="URLリンク(hoge.jp)";
location.href == urip || location.href == urip+"index.php"

586:Name_Not_Found
08/06/28 17:28:00
/^http:\/\/(?:www\.)?hoge\.jp\/(?:index\.php)?$/.test(location.href)

587:Name_Not_Found
08/06/28 17:53:38
すみません、どなたか>>578についてもご意見ください
勝手言ってすみませんがよろしくお願いします

588:Name_Not_Found
08/06/28 19:04:44
>>587
function clearUploadField(n) {
  var target = document.forms['mujintouForm'].elements['pic[' + n + ']'];
  target.parentNode.insertBefore(target, target.nextSibling);
}

589:Name_Not_Found
08/06/28 20:31:09
>>587
その提出コードだけどそのままIE6で動いたよ。他に問題あるんじゃ
ないの?name属性が重複しているとか。

590:Name_Not_Found
08/06/28 21:02:01
ええと、まさかとは思うが「"hoge.jp"は"www.hoge.jp"の略」とか勘違いしている奴居ないよな?

591:Name_Not_Found
08/06/28 21:08:30
>>577
> f (!current.call(x.obj)) break; → if (current.call(x.obj) === false) break;

これってどうして===falseにしたの?
元のままじゃダメなの?

592:587
08/06/28 21:26:47 Xx7cgI9V
>>588-589
どうもです
>>589 動きましたか? 何がおかしいんだろう…と思って試したんですが、
空欄にする対象をアップロードフィールド(type="file")から
テキストエリア(type="text")にしたところIEでも空欄に出来ました。
type="file"じゃダメみたいです。
>>589さんが成功したのって、失礼ですが type="file" だったんでしょうか?

>>588
詳しい回答ありがとうございます
参考にしてDOMの勉強もしてみます ほんとにありがとう

593:Name_Not_Found
08/06/28 21:38:04
>>592
>>589です。試したのはtype="file"じゃなかった。ごめん。
昔からtype="file"の問題はいろいろあるんで自分はこれは
使えないシロモノだとずっと思ってる。

594:Name_Not_Found
08/06/28 21:43:57
使えないのはtype="file"ではなく、(ry

595:587
08/06/28 21:47:32
>>593
そうですか それがわかっただけでも良かったです
考えたら参照ボタン以外でアップロードフィールドに値を入れれたら危険ですね
submitボタンにスクリプトを仕込んだらどうしようもないかも…
ありがとうございました

596:Name_Not_Found
08/06/28 21:57:32
何がそうですねだ馬鹿。

597:Name_Not_Found
08/06/28 22:41:29
馬鹿って言った人が馬鹿なんだよね

598:Name_Not_Found
08/06/28 23:04:03 gI7skb5Z
>>585
短い変数に入れてしまえばいいのですね、ありがとうございます

599:Name_Not_Found
08/06/29 10:18:54
DOMContentLoadedが使えるブラウザならDOMContentLoadedのタイミングで、
使えないブラウザならonload(なり他のタイミングなりで)で
関数を実行させようとしているのですが
DOMContentLoadedが実装されているかどうかを調べるスマートな方法ってないでしょうか?

ブラウザとバージョンを調べれば簡単なんですがちょっとコードが見苦しくなるので…


600:Name_Not_Found
08/06/29 11:54:35
domready.js

601:Name_Not_Found
08/06/29 12:05:40
>>599
特定のイベントタイプ単体を実装しているか調べる方法が標準に定義されてないから
スマートな方法はないと思う

602:Name_Not_Found
08/06/29 13:33:48
parthInt(a - b)とparthInt(a) - parthInt(b)の違いって何でしょうか?

var a = "09"; var b = "01";
としたとき、後者の場合結果が-1になってしまいます。

603:Name_Not_Found
08/06/29 13:53:47
基数

604:Name_Not_Found
08/06/29 14:05:59
>>599
両方に登録して、DOMContentLoadedが実行されたら
フラグを立ててloadを実行させなくする方法がよく使われてるね。

605:Name_Not_Found
08/06/29 14:20:27
>>602
0で始まってるから自動的に8進で解釈されてるんだね。
parseInt('09', 10)

前者はNumber()による型変換と同じだね。

606:Name_Not_Found
08/06/29 16:23:39
>>604
目から鱗
存在確かめずに決め打ちでほうり込んでるように見える
プログラムをいくつか見たのですがそういうことだったのですね

ありがとうございました

607:Name_Not_Found
08/06/29 19:23:05
質問です。

ある16桁の乱数があって、
(例)qawsedrftgyhujik
その中に"sedr"及び"huji"いう文字が含まれているかどうか調べるには
どうしたらいいでしょうか。

608:Name_Not_Found
08/06/29 19:24:04
indexOf

609:Name_Not_Found
08/06/29 20:19:15
>>608

ありがとうございました。それでできるんですね
調べてみます。

610:Name_Not_Found
08/06/29 20:47:49
ある配列要素からその要素の前にいくつ要素があるか
調べる方法はないでしょうか

例えばa[3]の前にはa[0]、a[1]、a[2]の3つの要素あるのですが
それをa[3]から調べるにはどうしたらいいでしょうか

611:Name_Not_Found
08/06/29 21:06:35
疎な配列ということなら
for (var i = 0, res = 0; i < 3; i++) res += i in a;

612:Name_Not_Found
08/06/29 21:57:11
js> var a = [];
js> a[0] = 0;
0
js> a[3] = undefined;
js> a[6] = null;
null
js> a[9] = '';

js> Array.prototype['10'] = NaN;
NaN
js> Array.reduce(Array.slice(a, 0, 0), function (r) r + 1, 0);
0
js> Array.reduce(Array.slice(a, 0, 1), function (r) r + 1, 0);
1
js> Array.reduce(Array.slice(a, 0, 2), function (r) r + 1, 0);
1
js> Array.reduce(Array.slice(a, 0, 3), function (r) r + 1, 0);
1
js> Array.reduce(Array.slice(a, 0, 4), function (r) r + 1, 0);
2
js> Array.reduce(Array.slice(a, 0, 10), function (r) r + 1, 0);
4
js> Array.reduce(Array.slice(a, 0, 11), function (r) r + 1, 0);
4
js> a[10] = NaN;
NaN
js> Array.reduce(Array.slice(a, 0, 11), function (r) r + 1, 0);
5

613:Name_Not_Found
08/06/29 22:16:51
IEは早く氏ね

614:Name_Not_Found
08/06/29 23:55:43
>>613
IE8だけはがんばってほしいと思うよ

615:Name_Not_Found
08/06/30 05:48:35
Objectのプロパティを削除するときに

var o = {};
o.property = hoge;
o.property = null;
delete o.property;

とする必要はありますか?
null入れずに
delete o.propertyだけで十分?

616:Name_Not_Found
08/06/30 08:15:54
・テキストエディタ
・ドラッグした部分の文字色を青く変える機能付き
・ドラッグした部分の文字色を戻す機能付き
・そして、青く変わった部分の文字を切り出し(抽出して)出力する機能付き
・最後に、その出力した部分を保存もしくは、PHPで飛ばす

こんなテキストエディタを作りたいのですが、JavaScriptで作れますか?
色変える部分で挫折しそうです。文字サイズはとってこれますが、フォントカラーを取ってきて、出力や保存が出来ません

617:Name_Not_Found
08/06/30 09:57:58
>>615
Operaはバージョンによってはdeleteでエラー。この糞マイナーな手抜きブラウザを無視するなら、deleteだけでよい。

618:Name_Not_Found
08/06/30 10:54:03
>>616
色とかフォントとかいう時点でワープロやがな

619:Name_Not_Found
08/06/30 15:56:56
ブログ、掲示板などの編集画面など、ウェブ上のテキストエディタありますよね
あれをJavaScriiptを用いて作ってみたい、改変してみたいと考えています

一番ソースの見やすい、改変しやすいWebテキストエディタありますか?
オススメ等ありましたらお願いします

620:Name_Not_Found
08/06/30 16:09:15
>>617
じゃあ念のためnull入れるように習慣付けることにします。

621:Name_Not_Found
08/06/30 16:19:45
>>616
やりたいことは分かったけど質問内容から推察するに
挑戦するにはまだちょっと早いような・・・?

622:Name_Not_Found
08/06/30 16:32:16
>>621
テキスト解析だから、IQに大きく依存する。昨日今日プログラミングを始めた奴でも、IQが高ければいきなり作れるぞ。

623:Name_Not_Found
08/06/30 17:22:27
色分けなら\u02と\u03で囲んでそれぞれをspanの開始タグと終了タグに置換すればいい、ってばっちゃがいってた

624:Name_Not_Found
08/06/30 17:42:41
>>621
昨日今日プログラミングを始めたIQが高い奴がどんなものを
書くのか・書けるのかぜひ見たい。絶対に作ってUPしたらURI
教えてくれ。

625:Name_Not_Found
08/06/30 18:39:33
IQはどうでも良いが、頭の良い人間なら、
スクラッチから書くのでは無く、ググって似たようなサンプルを見つけ、
そのプログラミング言語に慣れていなくても正常に動作する物を書けそうだけどね。

626:Name_Not_Found
08/06/30 19:10:57
WordPress の投稿画面は結構よくできてる
ソースが読みやすいかどうかは知らね

627:610
08/06/30 21:11:38
>>611
調べるのを開始する配列要素が何番目か分からないので
その方法では駄目でした

628:Name_Not_Found
08/06/30 21:52:45
>>627
これは?
var a=[,'A',,'B','C',,'D','E'];
var res;
for (var i in a) {
 if (a[i] == a[3]) {
  res = i;
  break;
 }
}

alert(res);

629:Name_Not_Found
08/06/30 22:55:31
>>628
質問とはズレるが、それは疎な配列にならない。undefinedが割り当てられている。求められて仕方なくundefinedを返すのとは違う。というかそのコードを実行して気付かないのか。

>>627
抜けが無いのなら、Array.indexOf() で一発。無ければモジラのサイトのをコピペして使え。
抜けが在るのなら、Array.reduce() などと組み合わせる。無ければモジラのサイトのをコピペして使え。

もし===な比較が邪魔なら、別のArray.indexOfCastValue() を作れ。これもモジラのサイトのをコピペして微修正すればできる。

js> var v = false;
js> var a = [];
js> a[0] = 0;
0
js> a[3] = null;
null
js> a[6] = undefined;
js> a[9] = '';

js> a[12] = false;
false
js> a[15] = NaN;
NaN
js> Array.reduce(Array.slice(a, 0, Array.indexOf(a, v)), function (r)  r + 1, 0);
4

630:Name_Not_Found
08/07/01 06:23:53
>>574
イベントデリゲーション興味があります。

onclickのようにバブルするイベントタイプの場合は、
個別のエレメントにハンドラ付けていくのは無駄が多すぎるので、
例えば各エレメントの上位オブジェクトのdocumentにひとつハンドラつけてれば
ページのどこでclickされようがイベントがバブルしてきて
documentのハンドラでイベントを受け取れると。

で、event.srcElementなりevent.targetなりでイベント発生元エレメントが
取得できるということですよね?

で、そこからどうするのかいまいち分からないんですが、
バブルしたイベントを受け取ったdocument.onclick = function(){ ... } 内で
イベント発生元エレメントの情報をもとに、あらかじめ構築しておいた対応テーブルを検索して
処理先を特定し処理を振り分ける―ということなんでしょうか?

今のところハンドラの数を減らすテクニックという理解でしかないんですが
メリットは他にもあるんですか?

631:Name_Not_Found
08/07/01 11:17:15
>>630
他にもあるというか、コードの読みやすさ・スピード面で有利な場面がいくらでもある
obj[event.target.value] とか想像しやすいと思う
まあ>>556のケースではバブリングなんて関係ないけど

632:Name_Not_Found
08/07/01 15:38:39
>>630
イベント対象となりえるエレメントを動的に追加/削除する場合にも、
イベントデリゲーションは有効だね。

>>631
<div id="itemRoot"><div id="item1">item1</div><div id="item2">item2</div></div>
のようにevent.target=イベント処理対象エレメントのような単純な構成なら、
スピード面でも有利かもしれないが、
item1に子エレメントが含まれるような場合には、
DOMツリーを遡って対象エレメントを確定する必要がある場合も考えられるので、
一概にスピード面で有利とも言えないのでは。

633:Name_Not_Found
08/07/01 16:53:10
>>632
処理先を特定し処理を振り分ける っていうのは前提として既に>>630で出てるからいいとして、
極端な例だけど elm.src = obj[event.target.title]
っていう場合、タイトルでswitchして・・・とかありえないわけで、メリット以前の問題だろ?
「そういう場面がいくらでもある」のは自明だし、子エレメントとかそんなことは言ってないよ

634:Name_Not_Found
08/07/01 16:55:44
>>540
URLリンク(www.sponichi.co.jp)

635:Name_Not_Found
08/07/01 20:43:02
テキストボックスをjavascriptで作成しました
そのテキストボックスの性能は、自分としては文句なしの出来でした

問題はそのテキストボックスへ入力した内容をどう他へ渡すかです
PHPのSubmit使おうにも、データの型がわからず、形式もわかりません

また、教本等も持っていなく、Web頼りだったのですが、サイトやお薦め教本ありませんか?
PHPスレで聞くべきか悩みましたけど、JavaScriptを用いたテキストボックスを使っているのでこちらで聞くことにしました

636:Name_Not_Found
08/07/01 21:06:34
その「文句なしの出来」の性能をもつテキストボックスを作成する
JavaScriptを是非ここに載せてもらいたい。

637:Name_Not_Found
08/07/01 21:17:36
いや、自分の想定通りに出来たという意味です
人様に見せれるようなモンじゃありません

638:Name_Not_Found
08/07/01 21:25:46
見せられる、だろ。すんごくバカに見えるよね。

639:Name_Not_Found
08/07/01 21:58:53
>>638
何だコイツ

640:Name_Not_Found
08/07/01 22:25:59
>>638
なんだこいつ

641:Name_Not_Found
08/07/01 22:33:12
>>638
何だコイツ

642:Name_Not_Found
08/07/01 23:14:16
>>638
どうしたんだオマエ

643:Name_Not_Found
08/07/01 23:25:09
>>639-642
寝ろ

644:Name_Not_Found
08/07/02 00:30:20
>>632
>イベント対象となりえるエレメントを動的に追加/削除する場合
なるほど。書き換える範囲が特定されている場合はその親エレメントに
ハンドラをつけていれば中身がどう変化しようと問題がないわけですね。

645:Name_Not_Found
08/07/02 01:02:54
グッナイ! < 欧米か!?

646:Name_Not_Found
08/07/02 01:40:11
>>639-642==637==635か
つ黄色い救急車

647:Name_Not_Found
08/07/02 02:15:07
>>633
正直日本語でおk過ぎて何を言いたいのか不明。

実際にイベントデリゲーションを利用した実装を行った事があるのなら、
event.targetのエレメントをそのまま使うようなケースの方が少ない、
あるいは対象となるエレメント全てに属性値などを設定するのも非現実的というのは判るだろうけど。

648:Name_Not_Found
08/07/02 03:33:13
横からすまんが
”日本語でおk過ぎて”とか、日本語としてどうなのよw
軽く解釈悩んだぜ

アホな文章を突っつく際でも、2ch独特な慣用句を捏ね回しちゃ反論の連鎖に繋がるよ。

649:Name_Not_Found
08/07/02 04:01:57 yG7Xr5yG
マルチになってしまいすみません。初心者スレから誘導されました。
この板も初心者なのでお許し下さい。
IDが違うのはアクセス規制かかってて、ダイヤルアップのためです。

本題ですが、ページ内リンクをアイフレーム内でやりたいのですが、
<a name>でやってみたところ、アイフレームはずれるわスムーズにリンク先に
飛ばないわと、とても使い物になりません。
これはどうやら仕様で、どうしようもない現象のようです。
そこで同じようなことをジャバスクリプトでやりたいのですが、
良いサンプルがあれば教えてください。
同一ページ内だけではなく、他ページからのリンクで記事までスクロール
してくれるものが良いのですが。



650:Name_Not_Found
08/07/02 09:45:09
言語をやってる以上なんであれ文法に拘束される言語の正規使用にはセ
ンシティブでありたいものだね。よくさ、日本語もロクにできないのが
英語でペラペラになりたいとか言ってるじゃん。母国語も満足に組み立
てられない奴がプロブラミングのシンタックスに厳しいというのはあり
得んと思う。

651:Name_Not_Found
08/07/02 10:23:32
板違い

652:519
08/07/02 15:15:28
>>555
できました。

それなりにしっかりしたものになったので「evtmgr.js」として公開することにしました。
URLさらします。

本体
URLリンク(itmst71.googlepages.com)

デモページ
URLリンク(itmst71.googlepages.com)

ドキュメント
URLリンク(itmst71.googlepages.com)



バグとかとんでもない勘違いとかあるかもしれませんが

653:Name_Not_Found
08/07/02 15:34:20
質問です。
document.write("<input>");
で作ったインプットボックスに何か入力を行うと、その後F5ボタンでページ更新をかけてもさっきの入力が残ってしまうのは避けられないのでしょうか?
最小再現コードは
<html>
<head>
</head>
<body>
<script type="text/javascript">document.write("<input value=\"\">");</script>
</body>
</html>

です。
<body onload="clear();">
とし、clear()内でinput.valueを消すようにしたら消えたのですが、なんとも納得のいかないところです。

654:Name_Not_Found
08/07/02 15:35:12
>>653
Firefox?

655:Name_Not_Found
08/07/02 15:37:11
あ、すいませんIEです。
どうもHTMLが更新されないと、キャッシュされるっぽい?です。

656:519
08/07/02 16:50:50
>>652
これじゃなんのことか分からないことに気づいたのでもう少し説明書いときます。

evtmgr.jsの特徴
 ・中央管理型イベントマネージャモジュール。
 ・登録イベントをイベントタイプや呼び出し関数などで検索可能。
 ・クラス定義コード内でクロージャを使用することなく
  thisキーワードをそのままインスタンスへの参照としてイベント登録に使える。
 ・登録イベントを条件を指定して一括削除可能。
 ・ページアンロード時に全てのイベントを削除できるのでメモリリークしない。
 ・自動ガーベッジコレクション機能搭載。
 ・大体のブラウザで動く。

なんかおかしいところあったら指摘してくれると助かります。
よろしくお願いします。

657:Name_Not_Found
08/07/02 16:55:44
>>656
うん、なかなか便利だね。

658:Name_Not_Found
08/07/02 17:09:06 CkkLjqVE
FireFoxのマウスジェスチャアドオン用のスクリプトを書こうとしています

ジェスチャ実行時に(選択された)テキストなのかそれともリンクなのか判断するif文を作りたいのですが、
どうすればいいでしょうか?

659:Name_Not_Found
08/07/02 17:54:25
var o = new Hoge();
o.onKeyDown = function(c){省略};

クラスを生成後、一部のクラス関数をオーバーライドした上で

省略~ onkeydown="o.onKeyDown(this);" ~省略

のように使いたいのですが、可能でしょうか?
少なくとも上の書き方ではうまく動作しませんでしたが・・・

660:Name_Not_Found
08/07/02 21:31:16
省略部分を超能力で解析した限りは動くみたいだけど

<script>
var Hoge = function(){};
var o = new Hoge();
o.onKeyDown = function(c){ alert(c.value) };
</script>
<input type="text" value="test" onkeydown="o.onKeyDown(this);">

661:Name_Not_Found
08/07/03 13:03:45 Bn8vIwhr
window.location.reload(); で自動更新させてます。
これだとサイト全部がリロードされるのですが
インラインフレームの中だけ動かないようにするのは
どうしたらいいでしょうか?

662:Name_Not_Found
08/07/03 14:35:43
インラインフレームの中の呼び出しも添えてリロードすればよいのでは?

663:Name_Not_Found
08/07/04 00:11:14 BOkDcOnP
質問です。
URLリンク(www.hotajax.org)
この「ShowCase menu」を応用して画像のギャラリーページを作りたいのですが、
</div></div>で区切って2段に分けても、上下のメニューが連動してしまいます。
1ページ内で完全に切り離して動作させたいのですがどのようにしたら良いでしょうか?
よろしくお願いします。

664:Name_Not_Found
08/07/04 01:39:18
どうやってヒモ付けられているか考えながら読めドアホ。質問するようなことじゃねえだろ。ほんと、JS終わってんな。

665:Name_Not_Found
08/07/04 06:47:43
そうそう。そもそもWeb製作板にあることが間違ってる。

666:Name_Not_Found
08/07/04 10:16:25
if(664==DQN)alert('BINGO!!');

667:Name_Not_Found
08/07/04 11:11:02
>>665
JavaScript @ム板
スレリンク(tech板)
JavaScriptを教えてもらう @WebProg
スレリンク(php板)

668:Name_Not_Found
08/07/04 11:56:13
ム板ならこっちだろ

ECMAScript デス 3
スレリンク(tech板)

669:Name_Not_Found
08/07/04 12:01:53
BINGO!!

670:Name_Not_Found
08/07/04 13:49:53
>>667ー668
どっちのスレでも板違いって話しが出てるんだが…

とりあえず663をどうにかしてやれ

671:Name_Not_Found
08/07/04 14:46:19 qrZFyUzj
prototype.js使わないで、文字化けさせずにXMLHttpRequestでテキスト取得する方法ってありますか?

672:Name_Not_Found
08/07/04 15:08:02 y0weF7PE
曜日ごとに違うJSファイルを呼び出そうとしているのですが
document.writeの書き方が悪いらしく
"); // -->みたいな文字化け表示がおこってしまいます。
どうかお助けください。

<SCRIPT LANGUAGE="JavaScript">
<!--
dt = new Date( );
d=dt.getDay( );
if (d==0){ JSDoc="URLリンク(xxx.com)"}
if (d==1){ JSDoc="URLリンク(xxx.com)"}
if (d==2){ JSDoc="URLリンク(xxx.com)"}
if (d==3){ JSDoc="URLリンク(xxx.com)"}
if (d==4){ JSDoc="URLリンク(xxx.com)"}
if (d==5){ JSDoc="URLリンク(xxx.com)"}
if (d==6){ JSDoc="URLリンク(xxx.com)"}
document.write("<script src='+ JSDoc +'></script>");
// -->
</SCRIPT>


673:Name_Not_Found
08/07/04 15:09:08
誰かTinyMCEというJavascriptを使ったWYSIWYGエディタを使ってシステムを構築している人いませんか?

IE+IMEで最初に確定した全角文字列が、2番目の文字列を入力しようとすると消えるという事が多発しています。
これってどうにかならないのかな・・・ググってみると結構この症状が出てる人いるみたいだけど、解決策はなしorz
また、たまーにTinyMCEを適用したテキストエリアに文章を入れた後、登録(Submit)すると文章が全て消える、という事も起きます。

かなりBuggyなので使わないほうがいいのかな・・・。

674:Name_Not_Found
08/07/04 15:13:14
>>672
document.write('<script src="' + JSDoc + '"></script>');

675:Name_Not_Found
08/07/04 15:17:11
>>672
配列用いた方が楽。
dt = new Date();
d  = dt.getDay();
js = ["日.js","月.js","火.js","水.js","木.js","金.js","土.js"];
JSDoc = js[d];

676:Name_Not_Found
08/07/04 15:22:31
>>675
こうすればもっと楽。ファイル名+=曜日にする
document.write('<script src="' + JSDoc + (new Date().getDay())'"></script>');

677:Name_Not_Found
08/07/04 15:25:54
>>676
意味わからん。
document.write('<script src="' + JSDoc + (new Date().getDay()) + '"></script>');
とりあえずこうだし、もしこれでやるなら月曜日.js1とかになると思うが。

678:Name_Not_Found
08/07/04 15:26:44 y0weF7PE
どうもありがとうございます。
早速試してみます。


679:Name_Not_Found
08/07/04 15:26:51
'<' + '/script>'

680:Name_Not_Found
08/07/04 16:03:43
>>672
ちゃんとelseを使えボンクラ。

681:Name_Not_Found
08/07/04 16:20:34
簡単なコードの問題だと人が群がる群がるw
いままでどこにいたの君たち

682:Name_Not_Found
08/07/04 16:52:51
>>671もお願いします

683:Name_Not_Found
08/07/04 16:56:11
>>682
ログ嫁

684:Name_Not_Found
08/07/04 17:34:05
>>670もお願いします

685:Name_Not_Found
08/07/04 17:46:02 sMXmNVPt
背景を操作するってどうしたらいいんでしょう?
既存の背景の画像のポジションを動かしたいんですが、以下だとダメみたいです

document.getElementById("tab").style.background-position = 0 -31;

cssのスレで聞いたほうが良いのかな? よろしくお願いします

686:Name_Not_Found
08/07/04 17:48:45
>>685
JavaScriptだとCSSの-が使えないので大文字になる
backgroundPosition
で検索すると結構サンプル出るよ。

687:Name_Not_Found
08/07/04 18:04:05
>>684
上段も下段もshowCaseってclassにしちゃってるんじゃないの?
どういう状況かわからないけど、上段と下段でclass名変えてあげれば上手くいかない?

688:Name_Not_Found
08/07/04 20:46:19
>>687
cssのコードをコピーしてclass名を「#showCaseContainer2」のように全てに2を付加して変えてみたところ
下段だけ動かなくなったのですが、Javascriptの方もコピーするんですか?

689:Name_Not_Found
08/07/04 21:22:45
>>688
あのさあ、何十時間あった?
そんだけありゃあ、意味が分からなくとも、全文字を読めただろ。
どことどこに関連性がありそうか、それでも気付かなかったのなら、質問しろ。

690:Name_Not_Found
08/07/04 21:50:13
>>689
スイマセン。
showCases = document.getElementsByClassName('showCase'); // fetch showcase objects
が関係あるところまでは分ったのですが、ClassName('showCase');のところを
ClassName('showCase1');
ClassName('showCase2');
ClassName('showCase3');
のように複数個指定したいのですがどうしたらよいでしょうか?
1ページに3段表示したいのですが、それぞれを分けてjsファイルを3つ作るしかないのでしょうか?

691:Name_Not_Found
08/07/04 22:18:02 nd85SJMq
document.clearで自分自身をクリアし、スクリプトでHTMLを書き出したいのですが
フォント化けたり、ボタンの幅が変化したりしてしまいます。
どこを直せばいいんでしょうか?

<HTML>
 <HEAD>
  <SCRIPT type="text/javascript" charset="Shift_JIS">
   function g_execute(){
    document.open();
    document.clear();
    document.write('<HTML>\n');
    document.write(' <BODY>\n');
    document.write('  <A href="dummy.html">てすと<\/A>\n');
    document.write('   <HR>\n');
    document.write('   <INPUT type="button" value="動的ページ" onClick="g_execute();"><BR>\n');
    document.write(' <\/BODY>\n');
    document.write('<\/HTML>\n');
    document.close();
   }
  </SCRIPT>
 </HEAD>
<BODY>
 <A href="dummy.html">てすと</A>
 <HR>
 <INPUT type="button" value="動的ページ" onClick="g_execute();"><BR>
</BODY>
</HTML>

692:Name_Not_Found
08/07/05 01:08:49
>>691
環境を書いてもらわないと何とも言えないな
Fx+Linuxだがこっちは全然>691の言う問題は発生してない

>691の環境に合わせてcontent-typeの文字コードを変えてみてくれ

<HTML>
<HEAD>
<SCRIPT type="text/javascript" charset="Shift_JIS">
function g_execute(){
document.open();
document.clear();
document.write('<HTML>\n');
document.write('<HEAD>\n');
document.write('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n');
document.write('</HEAD>\n');
document.write('<BODY>\n');
document.write('<A href="dummy.html">てすと<\/A>\n');
document.write('<HR>\n');
document.write('<INPUT type="button" value="動的ページ" onClick="g_execute();"><BR>\n');
document.write('</BODY>\n');
document.write('</HTML>\n');
document.close();
}
</SCRIPT>
</HEAD>
<BODY>
<A href="dummy.html">てすと</A>
<HR>
<INPUT type="button" value="動的ページ" onClick="g_execute();"><BR>
</BODY>
</HTML>

693:Name_Not_Found
08/07/05 03:15:49 KHN7dJbI
>>692
環境はWindowsXP+IE6

694:Name_Not_Found
08/07/05 03:15:57 KHN7dJbI
です。

695:Name_Not_Found
08/07/05 10:38:39 vP1fWKeU
XHTMLRequest には same-origin ポリシーがあるけど,
JSONP にはそういうのないよね?
DOM 操作で <script> タグ生成して
src で動的に読みたい放題になりそうな気がするんだけど,
それは「穴」として認識されいるの?
それともそれは仕様で今後制限されることはないの?

696:Name_Not_Found
08/07/05 10:46:49
>>695
それがJSONPの特徴だから。

697:Name_Not_Found
08/07/05 11:11:41 vP1fWKeU
>>696
まぁFlashでもクロスサイトできたりするし,
それでいいのかもしれないけど,だったらなんで
XHTTPRequest (さっき書き間違えた)では
あんなに厳しく same-origin ポリシーがかかってるんだと・・
正直抜け穴放題なら全然意味ないじゃん,っておもた

698:Name_Not_Found
08/07/05 11:15:55 vP1fWKeU
XHTTPRequest ではリクエストヘッダを設定できたり
認証情報を自由に設定できたりするからってこと?
JSONPではそこまでの自由度がない,と.

699:Name_Not_Found
08/07/05 13:45:44
他ドメインのスクリプトだって他ドメインのリソースを読めるわけじゃないだろ

700:663
08/07/05 14:02:04
スイマセン。
cssのshowCaseContainer関連項目をコピーしてshowCaseContainer1~3を作成。
showcase.jsも同様にコピーして、showcase1~3.jsを作成。
showcase.js内の11行目showCases = document.getElementsByClassName('showCase');もそれぞれ1~3に変更。
「showcase1.js」 「showcase2.js」 「showcase3.js」をhtmlで読み込んでみたのですが、
(上から)3段目しか動作いたしません。

いろいろ試してはいるのですが、どうしても上手く動作しません。
どなかた解決策を教えてくださいm(_ _)m

701:Name_Not_Found
08/07/05 15:06:50
質問させてください。
下記のようなリンクがが複数(可変)あります。

---------------
|画像1A|画像1B|テキスト1|←この行で一つのリンクとなります。
---------------
|画像2A|画像2B|テキスト2|←この行で一つのリンクとなります。
---------------
|画像3A|画像3B|テキスト3|←この行で一つのリンクとなります。
---------------

画像1A、画像1B、テキスト1のどれかにマウスオーバー時、画像1Bの画像とテキスト1の文字色を変更したいと思います。
単純にテキスト1をマウスオーバー時にテキスト1の文字色を変えるならcssのa:hover、画像1Bをマウスオーバー時、画像1Bの画像を差し替えるならJavaScriptで出来たのですが、
例えば、画像1Aをマウスオーバー時、画像1Bの画像を差し替えつつ、テキスト1の文字色を変える方法が分かりませんでした。

その為、何かアドバイスいただける方はご指導いただければと思います。

なお上記の画像などの中身には下記が入ります。
画像1A・・・花の写真
画像1B・・・矢印画像
テキスト1・・・花の名前

そして、画像1Aの花の写真のサイズは不定となっております。

よろしくお願いします。

702:Name_Not_Found
08/07/05 15:21:22
a.foo:hover { color: red; }
a.foo:hover > img.bar { display: none; }
a.foo:hover > img.baz { display: inline; }
a.foo > img.baz { display: none; }

703:Name_Not_Found
08/07/05 18:30:01
>>702
レスありがとうございます。
>>702を参考に書いてみたのですが、マウスオーバーしても画像に変化はありませんでした(テキストは変化しました)。
下記がそのソースですが、どのあたりに問題があるかご指導いただければと助かります。

<html>
<head>
<title>title</title>
<style type="text/css">
<!--
a.foo:hover { color: yellow; }
a.foo:hover > img.bar { display: none; }
a.foo:hover > img.baz { display: inline; }
a.foo > img.baz { display: none; }
-->
</style>
</head>
<body>
<a href="index.html" class="foo"><img src="img/kiku.jpg" alt="キク" width="200" height="100">
<img src="img/arrow.gif" alt="" width="13" height="13" class="bar baz">キク</a>
</body>
</html>

それと本件はCSSのみで対応可能ですか?
それならスレ違いになるので、どうしようかとおもったので。

704:Name_Not_Found
08/07/05 18:36:39
JavaScriptとは何の関係もない.

705:Name_Not_Found
08/07/05 18:38:46
>>704
了解です。
CSSのみで実現可能みたいなので、CSS系のスレに移行することにします。
どうもありがとうございました。

706:Name_Not_Found
08/07/05 18:54:13 H/bbPOMN
Javascriptでタイマー機能を作成しています。
チャットのように30秒ごとに画面が切り替わるという仕組みなのですが、
サイトやサーバが重い時、30秒以上時間がかかります。
(カウントのスタートがされない)

Javascriptはクライアントサイドの技術なので、
自分のパソコンや回線の問題でしょうか?

707:Name_Not_Found
08/07/05 20:37:31
>>706
エスパーはいません
ソース貼れ

708:Name_Not_Found
08/07/05 21:23:03
【外部リンクさせたjavascriptが上手く作動しない?】

最初、HTML内に記述されたjavascriptを、外部ファイルとしてリンクさせたんだが、
どういう訳か文字化けをおこしてしまう。原因がわからないので是非ご教示いただきたい。


実際のページを用意している。

<javascriptを外部リンクさせて、文字化けしてしまうページ>
URLリンク(xrea151.s151.xrea.com)

<javascriptをhtml内に記述して、うまく動いているページ>
URLリンク(xrea151.s151.xrea.com)


もちろん、javascriptの内容は全く同じ。
外部リンクさせた時のjavascriptのファイル名はmenu.js。


709:708
08/07/05 21:28:32
補足
IE6では文字化けはしないが、javascriptがうまく動かない。
IE7だと文字化け+javascriptがうまく動かない。

なぜだ・・・。

710:Name_Not_Found
08/07/05 21:39:34
menu.jsがシフトJISみたいだけど?

711:706
08/07/05 21:43:49
>>707
すみません。以下のソースです。

<script type="text/javascript">
timerID = "";
function jump() {
window.self.location.href= "timer.html";
}
function init() {
timerID = setTimeout("jump()", 30000);
document.getElementById('mess').innerHTML = "30秒後に移動";
}
</script>

<body onLoad="init()">
<div id="mess"></div>

712:706
08/07/05 21:49:39
何度も済みません。古い方のソースを貼ってしまいました・・。
以下が問題のタイマーです。

timerID = "";
count = 30;
function jump() {
window.self.location.href= "timer.html";
}
function init() {
if(count>=0){
count--;
document.getElementById('mess').innerHTML = count+"遘貞セ後↓遘サ蜍�";
}
timerID = setTimeout("init()", 1000);
}

713:708
08/07/05 22:12:59
>>710
Unicodeで作り直したら直った・・・。
ありがとう、、これで家に帰れるよ・・・。

本当にありがとうございました。

714:Name_Not_Found
08/07/05 22:34:20
>>695, >>697, >>698
どうすればそれだけ間違え続けられるんだ?痴呆老人の会話じゃねえか。

715:Name_Not_Found
08/07/05 22:43:06
>>706
コード的には問題ない
カウンタがスタートするのはonLoadのタイミング、文書構造を読み込んでからなので
遅いサーバからだとカウンタがスタートしてないように見えるんじゃないだろか

あとTimerIDとかいらないので書き直した

<script type="text/javascript">
function init() {
document.getElementById('mess').innerHTML = "30秒後に移動します";
setTimeout(function() {
window.self.location.href = "timer.html";
}, 30000);
}
</script>
<body onLoad="init();">

716:Name_Not_Found
08/07/05 22:47:15
URLリンク(orera.g.hatena.ne.jp)
にあるuser.jsのようなことをやりたいと考えています。
例えばhoge.com内のhogeディレクトリ以下、つまりURLリンク(hoge.com)以下にあるファイルを別のブラウザで開きたいのです。
そこで当初は変数TARGET_URL内に「URLリンク(hoge.com)」を記述していたのですが、hoge.com内にあるファイルにはリンクが相対パスで張られているものも多く、
これではそのリンクに対して期待した動作をしてくれません。
何か良い解決策はあるでしょうか。

具体的にはニコニコ動画の再生ページだけFirefoxで開こうと考えています。現在は一つのjavascriptで書く方法が思い浮かばなかったので、以下のような2つのjavascriptで使っていますが、
スマートじゃなくて気持ち悪い。。。

よろしくお願い致します。

717:716
08/07/05 22:48:04
一つ目のjavascript。
URLリンク(*)<)',
];
for (var i = 0; i < TARGET_URL.length; i++) {
TARGET_URL[i] = 'starts-with(@href,"' + TARGET_URL[i] + '")';
}
var target_xpath = '//a[' + TARGET_URL.join(' or ') + ']';
function main() {
var targetLinks = document.evaluate(target_xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < targetLinks.snapshotLength; i++) {
var link = targetLinks.snapshotItem(i);
link.addEventListener('click', function(e) {
e.currentTarget.href = 'data:' + MIME_TYPE + ';charset=utf-8,' + encodeURIComponent('\n<meta http-equiv="refresh" content="0; url=' + e.currentTarget.href + '">');
e.currentTarget.removeEventListener('click', arguments.callee, false);
}, false);
}
}
document.addEventListener('DOMContentLoaded', main, false);
})()


718:716
08/07/05 22:49:14
二つ目のjavascript。
URLリンク(nicovideo.jp)に対して有効とすjavascriptです。(つまり相対リンク対策)

(function() {
var MIME_TYPE = 'application/x-open-firefox-html';
var TARGET_URL = [
'\/sm',
'\/nm',
];
for (var i = 0; i < TARGET_URL.length; i++) {
TARGET_URL[i] = 'contains(@href,"' + TARGET_URL[i] + '")';
}
var target_xpath = '//a[(' + TARGET_URL.join(' or ') + ') and not(starts-with(@href,"URLリンク(www.nicovideo.jp)"))]';
function main() {
var targetLinks = document.evaluate(target_xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < targetLinks.snapshotLength; i++) {
var link = targetLinks.snapshotItem(i);
link.addEventListener('click', function(e) {
e.currentTarget.href = 'data:' + MIME_TYPE + ';charset=utf-8,' + encodeURIComponent('\n<meta http-equiv="refresh" content="0; url=' + e.currentTarget.href + '">');
e.currentTarget.removeEventListener('click', arguments.callee, false);
}, false);
}
}
document.addEventListener('DOMContentLoaded', main, false);
})()


719:Name_Not_Found
08/07/05 23:39:56
getAttribute

720:Name_Not_Found
08/07/06 00:32:01 bq72WUba
すいません、質問です。

求人サイトを制作しています。

「コンビニのレジ」
「プールの監視員」
「チラシのポスティング」

・・・といった求人情報がずらずら並んだページがあります。

各求人情報のブロックにはそれぞれ「この仕事に応募する」ボタンが配置されています。

ここで、

「コンビニのレジ」という求人情報のブロックに設置されたボタンをクリックすると

(1)応募フォームが開き、
(2)開かれた応募フォームの「応募する仕事」のセルには「コンビニのレジ」が表記されている

以上が実現できるjavascriptの書き方を教えてください。

求人情報のページ→応募フォームというように、二つのページにまたがる場合の表記方法が
よく分かりません。

同一ページ内のHTML書き換えであれば、

document.getElementById('jobtype').innerHTML = hogehoge

で実現できるのですが・・・。

721:Name_Not_Found
08/07/06 00:32:07
>>716-718
アホ外人が俗に言うイベントデリゲーションを使うべき典型例だろ。リンク全舐めとか、ええ加減にせえよボケ。全舐めしても、使うのは、ふつう、たった一つだ。気付けアホンダラ。

722:Name_Not_Found
08/07/06 00:37:08
>>716
Firefoxに移行して URL Relay

723:716
08/07/06 00:55:17
みなさんレスありがとうございます。

>>719
なるほど、getAttributeを使うと絶対パスが返ってくるんですね~
てことは、XPathを使わずにgetAttributeでhrefを抽出し、それにイベントを付けるんでしょうか?
なにぶんjavascriptを初めていじるもので、全然違うことを言っていたら申し訳ありません。

>>721
リンク全舐めというのはXPathでの抽出という意味でしょうか?
イベントデリゲーション。。。上の方にも出てきてるみたいですね。
しかし、なんかよく理解できません。出来れば例を示して頂けると幸いなのですが…

>>722
なんと。Firefoxにはそんな便利なアドオンがあったのですね。
けど、どうしてもOperaでの結果をFirefoxに渡したいのです。
引き続きよろしくお願い致します。

724:Name_Not_Found
08/07/06 01:16:38
あれ?むしろgetAttributeが属性値をそのまま返すんじゃなかったっけ

>>723
documentのclickでtargetがaならhrefをごにょごにょする

URLリンク(d.hatena.ne.jp)

725:Name_Not_Found
08/07/06 02:57:36
>>720
引数付きでURL渡す。 form.html?コンビニのレジ みたいな感じ

726:716
08/07/06 03:56:41
>>724
レスありがとうございます。
流れとしては、クリックイベントが起きたときにgetAttribute("href")でリンク先の絶対URIを取得し、それがURLリンク(www.nicovideo.jp)から始まるかどうか判定、真ならMIME_TYPEの変更を
行うといった感じでしょうか?
う~ん。。。流れは合ってたとしても実装方法が全然わからんすorz
もうちょっとだけヒントくださいTT

727:Name_Not_Found
08/07/06 04:16:59
addEvantListener
event.target
tagName.toLowerCase

つかOperaのhrefはちゃんと絶対パスを返すはずだが。知らんけど

728:Name_Not_Found
08/07/06 05:05:49
>>726
a.hrefなら相対リンクとか関係なく絶対URI(絶対パスじゃなく)が返るから
こんな感じでいけると思う

(function() {
var MIME_TYPE = 'application/x-open-firefox-html';
var TARGET_URL = [
'URLリンク(www.nicovideo.jp)',
];

// メタ文字のエスケープしてない
var rTARGET_URL = new RegExp("^"+TARGET_URL.join("|^"));
// ページ内のクリックを拾う(OperaはEnterキーもクリック相当)
document.addEventListener('click', function(e){
// a > imgのときはimgがtargetになってしまったりするのでターゲットフェーズから上方向にアンカーを探す
// (selectSingleNodeはOperaが対応しているMSXML由来の非標準メソッド)
var t = e.target.selectSingleNode('ancestor-or-self::a[1]');
if (t && rTARGET_URL.test(t.href)) {
e.preventDefault();
location.href = 'data:' + MIME_TYPE + ';charset=utf-8,' + encodeURIComponent('\n<meta http-equiv="refresh" content="0; url=' + t.href + '">');
}
}, true);
})()

729:Name_Not_Found
08/07/06 05:09:16
ターゲットフェーズじゃねーや
ターゲットノードだ

730:716
08/07/06 05:10:53
>>727
すいません、正直javascript全然わかんないです。
一応↓のように書いてみたんですが、期待した動作をするわけありませんよね^^;
個人的にはe.target.hrefにデータを代入しようとしている当たりが相当無理な気がするのですが。。。他にもイベント関係が全くわかりませんでした。
やりたかったことは、クリックイベントが発生したらmain()にイベントが渡って、そのイベントが持っているtarget(ここではドキュメント?)内のhref属性をgetAttribute()にて絶対URIに補完、それがTARGET_URLに指定してあったURLから始まるなら
MIME_TYPEを変更…といった具合だったのですが。。。
それと、今回は小文字への正規化(727で教えて頂いたtagName.toLowerCase?)は省略してます。

(function() {
var MIME_TYPE = 'application/x-open-firefox-html';
var TARGET_URL = [
'URLリンク(www.nicovideo.jp)',
];
function main(e) {
for (var i = 0; i < TARGET_URL.length; i++)
if(!getAttribute("href",e.target).indexOf(TARGET_URL[i])) {
e.target.href = 'data:' + MIME_TYPE + ';charset=utf-8,' + encodeURIComponent('\n<meta http-equiv="refresh" content="0; url=' + e.target.href + '">');
break;
}
}
document.addEventListener('click', main, false);
})()


731:716
08/07/06 05:12:42
>>728
あれ、すいませんレスがついてるのを確認せずに書き込んじゃいました。
730は無かったことに^^;
728さんのソース試させてもらってきます!!

732:716
08/07/06 05:29:21
連投失礼します。728さんのソースを以下のようなnico_open.jsとして保存し、UserJS用フォルダに入れたのですが、残念ながら相対パスで書かれているリンク先も、絶対パスで書かれているリンク先もFirefoxでは開かれませんでした。ううん、引き続きよろしくお願い致します。
以下nico_open.js
// ==UserScript==
// @name open in firefox
// @description open specified link(absolute href) in Firefox.
// @include URLリンク(*)<)',
];
// メタ文字のエスケープしてない
var rTARGET_URL = new RegExp("^"+TARGET_URL.join("|^"));
// ページ内のクリックを拾う(OperaはEnterキーもクリック相当)
document.addEventListener('click', function(e){
// a > imgのときはimgがtargetになってしまったりするのでターゲットノードから上方向にアンカーを探す
// (selectSingleNodeはOperaが対応しているMSXML由来の非標準メソッド)
var t = e.target.selectSingleNode('ancestor-or-self::a[1]');
if (t && rTARGET_URL.test(t.href)) {
e.preventDefault();
location.href = 'data:' + MIME_TYPE + ';charset=utf-8,' + encodeURIComponent('\n<meta http-equiv="refresh" content="0; url=' + t.href + '">');
}
}, true);
})()

733:Name_Not_Found
08/07/06 07:58:41 jUWoErVU
>>714
> >>695, >>697, >>698
> どうすればそれだけ間違え続けられるんだ?痴呆老人の会話じゃねえか。

何の事かと思ったらXHRのフルスペルの事か

734:Name_Not_Found
08/07/06 14:15:03
>>732
こっちでは一応どっちもfirefoxで開けているから
エラーコンソールからそのnico_open.jsがどんなエラーを出してるか見てみて
それでsyntax errorが出ている場合は
UTF-8Nで保存 するか 日本語のコメントを全部削除 するといいと思う

エラー出してなかったらコードのMIME_TYPEの前あたりにalert(1)とか置いて
ダイアログ出るか確認してみて

735:716
08/07/06 16:44:09
>>734
SUGEEEEEEEEEEE!!!!!!!
仰るとおり、syntax errorが出ていたので、UTF-8で保存し直したところ見事に動きました!!
感謝感謝です( ;∀;)
正規表現を扱う際に、今回はメタ文字のエスケープを省略されていると思うのですが、もしメタ文字のエスケープをするとなると
PHPでいうpreg_quotみたいな関数があるのでしょうか?
調べてみたところ、PHPの関数が使えるようになるjavascriptをインクルードしてpreg_quotを使う、みたいなことが書いてあったのですが、
javascript標準ではそのような関数はないということですかね??

736:Name_Not_Found
08/07/06 18:36:28
>>735
JavaScript(ECMAScript)にはそういうのはないな
Stringのreplace()で文字列置換が出来るからそれで自分の欲しい関数つくったらいいと思う
サンプル出すならこんな感じかな

// . \ + * ? [ ^ ] $ ( ) { } = ! | をエスケープ
function reEscape(s) {
return s.replace(/([\.\\\+\*\?\[\^\]\$\(\)\{\}\=\!\|])/g, "\\$1");
}
var rTARGET_URL = "";
// 全部一気にエスケープすると必要なものもエスケープしてしまうのでforで回して個別にエスケープ
// (Opera 9.50 以降ならネイティブでJavaScript 1.6のArrayのmap()があるのでもうちょっとシンプルに書ける)
for (var i = 0, len = TARGET_URL.length; i < len; i++) {
rTARGET_URL += "|^" + reEscape(TARGET_URL[i]);
}
rTARGET_URL = new RegExp(rTARGET_URL.slice(1));

737:716
08/07/06 19:45:28
>>736
map()ってPHPでいうarray_walkみたいなやつなんですね!
当方Opera9.51を使用しておりますので、こんな感じでかけばいいのかな?↓
function reEscape(s) {
return s.replace(/([\.\\\+\*\?\[\^\]\$\(\)\{\}\=\!\|])/g, "\\$1");
}
var rTARGET_URL = '^' + TARGET_URL.map(reEscape).join('|^');
rTARGET_URL = new RegExp(rTARGET_URL);

738:Name_Not_Found
08/07/06 21:00:51
>>737
それでおっけー まとめて1行で書いても良いけど
あ、エスケープする関数URLリンク(jp.php.net) 見て適当に書いたから
必要ない文字もエスケープしてた
return s.replace(/([\.\\\+\*\?\[\^\]\$\(\)\{\}\|])/g, "\\$1");
くらいでいいや

739:716
08/07/06 23:43:39
>>738
なるほど。ありがとうございますm(__)m
これを機にjavascriptの勉強してみようと思うんですけど、なんかお奨めの本とかってないですか?

740:Name_Not_Found
08/07/07 00:09:20
>>739
>>7

741:Name_Not_Found
08/07/07 00:26:33
>>739
JavaScriptの本読んだことないんだけど
オライリーの奴(サイ本)とか標準DOMスクリプティングとかがいいような気がする
>>6にあるようなECMAScript仕様とかDOM仕様とかMSDNとかMDCとかも見つつ

742:Name_Not_Found
08/07/07 01:02:12
SE14年の俺の経験だと、ネットにいくらでも情報があるのに、当たり前のように書籍を求めようとするクラシカルなアホは、仕事に追いつけなくて、半年以内に惨めな評価で辞めていく。

743:716
08/07/07 01:06:17
レスありがとうございます。
OperaはUserJSが書けると非常におもしろいと思うのでコツコツ勉強して、何か便利なJSを書いてみようと思います。
本当にお世話になりました。

744:Name_Not_Found
08/07/07 04:30:14
ある文字列を改行コード\nを含めて先頭から指定された任意個の文字ずつ
区切って配列に格納していきたいのですが
どうすれば軽くなりますか?
charAtで前から順番に処理していくと重すぎます。


対象の文字列は全角文字・半角文字・タブなどが含まれる普通のテキストです。


745:Name_Not_Found
08/07/07 06:02:14
その重すぎるコードを貼って

746:Name_Not_Found
08/07/07 09:56:32
charAtってだけで見なくても想像つくだろ

747:Name_Not_Found
08/07/07 11:13:02
>>744-746 とりあえずsubstringで作ってみた。手元のマシンで813msec.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
var s = 'x';
for(var i = 0; i < 20; ++i) s = s + s; // 1M
var t1 = new Date().getTime();
var a = mysplit(s, 10);
var t2 = new Date().getTime();
//document.writeln(a.join('\n'));
document.writeln('time = ' + (t2-t1));
function mysplit(s, n) {
var a = [], l = s.length, p = 0;
while(p+n < l) { a.push(s.substring(p, p+n)); p += n; }
a.push(s.substring(p)); return a;
}
</script></pre>
</body></html>

748:Name_Not_Found
08/07/07 12:31:29
全く同じコード
a.push 約400msec
a.[a.length] 約300msec

749:Name_Not_Found
08/07/07 12:32:30
a[a.length]

750:Name_Not_Found
08/07/07 12:48:46
Fx3でまったく同じコード
a.push 110msec
a[a.length] 111msec
URLリンク(bugzilla.mozilla.org)

751:Name_Not_Found
08/07/07 13:15:33
一般の結論として、a[a.length] を使え、っつうことだな。

752:Name_Not_Found
08/07/07 14:17:28
>>748-751
確かに… しかしsubstringの方は改良できないもんかね?

753:Name_Not_Found
08/07/07 14:48:15 0mvzN4Gt
Ajaxを使ったauto complete機能を使っているんですが、日本語文字列のauto completeを
しようとすると、日本語版Firefox3 (Windows版) でだけ問題が発生しており、困っています。

たとえば「日本代表」という文字列をテキストフィールドに入力したとします。
このとき、ほとんどのブラウザでは変換中の文字が確定されたときに、Ajaxでその文字列がサーバに送信されます。
しかし日本語版Firefox3(win)では、ローマ字入力の「にほ」が入力された時点で送信されてしまいます。
それだけならまだしも、変換して確定したあとの文字列はサーバに送信されません。

こんな現象で困っているんですが、ほかに似たような現象にあたった人はいませんか。
ぐぐってもそれらしいのがでてこず、困っています。

なお使っているのは Scriptaculous.js 1.8.1 (現時点での最新版)です。
動作確認をしたブラウザは 日本語IE6 (windows), 日本語/英語Firefox3 (Mac), 日本語/英語Safari3 (Mac) です。
これらはうまく動いています。



754:Name_Not_Found
08/07/07 17:10:08 durcaHzQ
alertで二次元配列データを等間隔に見やすく表示したいのですが
タグはそのまま表示されてしまいますし、
\tだと文字の長さによってずれてしまいます。
なにかいい方法はないでしょうか?

755:Name_Not_Found
08/07/07 17:24:48
>>754
ありません。
Fxなら、いったんxmlタイプにして、置換して戻せば、うまくいくかもしれません。
しかし、そもそも、スペースパッディング用にシステムのフォントを取得しなければならないことに変わりはありません。
そして、仮に思い通りに整形できたとして、メリットはありませんよね。
メリットが無くて面倒で……一体誰が回答するでしょうかねえw
あ、つまり自分が面倒だから、だれかに作らせようとしてんのか。ひどい人ですねえ。

756:Name_Not_Found
08/07/07 17:37:30 durcaHzQ
>>755
簡単な方法がないならないでそれで十分です。ども

757:Name_Not_Found
08/07/07 20:14:53
window.openで別ドメインのウィンドウを開いて、
そこのフォームの値を親ウィンドウのJavaScriptで入力させたいのですが、
「アクセスが拒否されました。」というエラーになってしまいます。
別ドメインのウィンドウを弄ることは不可能なのでしょうか?

758:Name_Not_Found
08/07/07 20:23:36
むりぽ

759:Name_Not_Found
08/07/07 21:02:36
>>752
正規表現

760:757
08/07/07 22:00:11
>>758
そうですか。
ブックマークレットでやるしかないですね。

761:Name_Not_Found
08/07/07 23:09:41
return s.match(new RegExp('[\\s\\S]{1,'+n+'}','g'))

注)遅い

762:Name_Not_Found
08/07/08 00:45:44
RegExpをインスタンス作成してから使う人ってまだ残ってるんだ

763:Name_Not_Found
08/07/08 00:54:59
ヒント:n

764:Name_Not_Found
08/07/08 13:28:25
>>762
変数使う場合とかどうしてるの?
使い分けたりしない?

765:Name_Not_Found
08/07/08 14:40:45
そっとしといてやれよ。「今は後悔している」と思うよ。

766:Name_Not_Found
08/07/08 16:14:58 y9/A9Vhv
Prototype Window Classを使って、ブックマークレットを作っているのですが、フレームを使ったページで上手く動作しません。
フレームを使っていないページだとウィンドウが正常に開きます。
フレームを使ったページだとなにも起きていないように見えます。(エラーもなし)
ブラウザはIE6です。

■ブックマークレット(外部.js読み込み)
javascript:(function(){var%20url='URLリンク(host)';if(!url.match(/\?/))url+='?t='+(new%20Date()).getTime();
var%20d=document;var%20e=d.createElement('script');e.charset='utf-8';e.src=url;d.getElementsByTagName('head')[0].appendChild(e);})();

■foo.jsの中身
//prototype.js, window.js, default.css, alphacube.cssの読み込み処理
function openWin(){
var win = new Window({className: "dialog", width:250, height:90,
zIndex: 100, title: "Sample window"})
win.getContent().update("<h1>ウィンドウ1</h1>");
win.showCenter();
}
openWin();



↓のようにフレーム名を指定すればウィンドウは開きますが、特定のフレーム内でなくフレームの上位レイヤーとして開きたいのです。

■ブックマークレット(外部.js読み込み)
javascript:(function(){var%20url='URLリンク(host)';if(!url.match(/\?/))url+='?t='+(new%20Date()).getTime();
var%20d=window.top.frame1.document;var%20e=d.createElement('script');e.charset='utf-8';e.src=url;d.getElementsByTagName('head')[0].appendChild(e);})();




767:Name_Not_Found
08/07/08 16:25:53
ブックマークレットからユーザがどのフレーム内を見ていたかなんて
分かるんだろうか…

768:質問
08/07/08 19:37:12 D8ry5O82
質問です。
送信ボタンを2回押さないとframe2へ出力されなくて困っています。
Javascriptで送信ボタンを1回押すだけで出力できるような方法があれば教えてください。
javascriptを使用しなくても出来るのであれば、なおうれしいです。

現在の構成ですが、

A.cgi
<form action="B.cgi" target="frame2">
と作成しています。
A.cgiではチェックリストを作って、選択したデータ(装置名)を取得するようにしています。
送信ボタンを押すとB.cgiが実行されてその結果をframe2へhtmlで出力するようにしています。

vi B.cgi
①取得したデータをCファイルへ書き込み
②取得したデータをhtmlで出力
 ③ ` D.pl` を実施

vi D.pl
 D.plがすでに起動していれば、改めてD.plを実行しない(多重起動防止)
 Cファイルに何も記録がなければD.pl自体を終了させる
 while(-s Cファイル){
Cファイルに何か書き込みが有る場合、
Cファイルを読み込んでその装置へデータをsnmpで取得しに行く
 sleep 30;
}

状況としては、チェックリストで項目を選択し送信ボタンを押すと、1回目のB.cgiが実行されるわけですが、
B.cgi内でD.plを走らせている為、D.plが終了しない限りB.cgiが終了しないので
frame2への出力がされないようです。
次に送信ボタンを押すと、1回目のD.plがすでに起動しているので2回目のD.plは終了し、2回目のB.cgiは終了し、
frame2へも出力されます。

769:766
08/07/08 19:45:29
>>767
このブックマークレットは特定のページで使うものなので、フレームの構造は最初から知っているものとしてOKです。


770:Name_Not_Found
08/07/08 20:15:59 LoBf1cvz
JavaScriptでHTMLを吐き出したいんですが
あらかじめIDを指定しておき、innerText = "1234" みたいに書くとうまくいくのに
document.write("1234"); みたいに書くと、文字が化けるというかUTF-8になってしまいます。
ちゃんと、charset="Shift_JIS"と指定しているはずなんですが
何か他に原因があるんでしょうか?

771:Name_Not_Found
08/07/08 23:23:34
document.writeは使うべきではない。
innerTextも使うべきではない。
innerHTMLかDOMをお勧めするが、とりあえずスクリプトの文字コードは?

772:Name_Not_Found
08/07/09 01:48:06
document.write()はDOMだがね。一応

773:Name_Not_Found
08/07/09 03:19:47
>>766
framesetのページ自体になんか書き込んでも反映されないだろ。
何か重ねたいんだったら全体をiframeで囲っちゃうとか。

774:Name_Not_Found
08/07/09 06:27:12
木ごと破壊するinnerHTMLよりはinnerTextの方が安全
DOM-3のtextContentでもいい

SCRIPT要素の文字コードとDocumentの(デフォルト)文字コードは無関係
\uXXXXに直せ

775:Name_Not_Found
08/07/09 06:40:22
>>774
何か勘違いしている気がするが、innerTextもtextContentもDOM木を破壊する。

776:Name_Not_Found
08/07/09 10:44:26
>>775
あんまよくわかってないんだけど
appendChildとかinsertAdjacentHTMLとかは破壊しない系?

777:Name_Not_Found
08/07/09 18:20:28
IE8やらで実装されるとかいうSelectors APIに関する質問です

Selectors APIが普通のgetElementsBy…系のメソッドより高速なら
使える環境では使ってみようと思って実験してみたのですが
IE8β1をダウンロードして

if(!document.querySelector) document.write("実装されてないよ");

と書いたhtmlを読ませると「実装されてないよ」と出力されました。

β1ではまだ実装されてないのでしょうか?
詳しい方がいらっしゃったら教えてください

778:Name_Not_Found
08/07/09 19:41:22
>>777
されてるはず
URLリンク(d.hatena.ne.jp)

779:777
08/07/09 22:06:08
原因が分かりました

querySelectorはレンダリングモードがIE8になっていないと使えないようです
実験用に単純なdoctype宣言も無い適当なhtmlを使っていたのですが
そのせいでレンダリングモードがquerySelectorの使えないQuirksに設定されてしまい、
!document.querySelectorがtrueになった…という事のようです

780:Name_Not_Found
08/07/09 22:20:42
ふ~ん。まだ使ってない俺にとっては良い情報だ。ありがとう。

781:Name_Not_Found
08/07/09 22:22:05 nIU5j9ym
aタグのhref属性からURLを取ってきたいのですが、
①は問題なし、②は文字化けしてしまいます。

そこで、escape関数でかぶせてみると、
②は元に戻りましたが、①は二重にescapeされてしまいます。

どちらもそのままのURLで取り出す良い方法はありますでしょうか。
if文で条件を考えようとしましたが、わかりませんでした。

<html>
<head>
<title></title>
<script type="text/javascript">
<!--
function urlCopy(){
atag = document.links;
alert("■escapeなし■\n\n" + atag[0].href + "\n" + atag[1].href);
alert("■escapeあり■\n\n" + escape(atag[0].href) + "\n" + escape(atag[1].href));
}
//-->
</script>
</head>
<body onLoad="urlCopy();">
<a href="URLリンク(search.yahoo.co.jp)">URLリンク(search.yahoo.co.jp)  …①<br>
<a href="URLリンク(ja.wikipedia.org)">URLリンク(ja.wikipedia.org)  …②<br>
</body>
</html>

782:Name_Not_Found
08/07/09 22:26:18
マル数字を使っていわゆる文字化けの質問をするアホ

783:781
08/07/09 22:48:07
機種依存文字を使用してしまうという初歩的なミスをしてしまい、大変失礼致しました。書き直します。


aタグのhref属性からURLを取ってきたいのですが、
(1)は問題なし、(2)は文字化けしてしまいます。

そこで、escape関数でかぶせてみると、
(2)は元に戻りましたが、(1)は二重にescapeされてしまいます。

どちらもそのままのURLで取り出す良い方法はありますでしょうか。
if文で条件を考えようとしましたが、わかりませんでした。

<html>
<head>
<title></title>
<script type="text/javascript">
<!--
function urlCopy(){
atag = document.links;
alert("■escapeなし■\n\n" + atag[0].href + "\n" + atag[1].href);
alert("■escapeあり■\n\n" + escape(atag[0].href) + "\n" + escape(atag[1].href));
}
//-->
</script>
</head>
<body onLoad="urlCopy();">
<a href="URLリンク(search.yahoo.co.jp)">URLリンク(search.yahoo.co.jp) </a>  …(1)<br>
<a href="URLリンク(ja.wikipedia.org)">URLリンク(ja.wikipedia.org) </a>  …(2)<br>
</body>
</html>



784:Name_Not_Found
08/07/09 23:36:53
document.link.protocol+"//"+document.link.host+escape(document.link.pathname)+document.link.search

冗談

785:Name_Not_Found
08/07/10 02:03:52
すみません。板違いかもしれませんが、
ソースががjavascriptで書かれていますのでこちらで質問させて頂きます。

設置が中国の鯖なんですが、
某サイトにiframeで仕込まれています。

googleによると、
「このサイトはコンピュータに損害を与える可能性があります。」
とあるのですが、どういった中身なのかわかる方がいらっしゃればお聞きしたです。

ソースチェッカーでは特に問題は出てきませんでした。

URLリンク(61.155.8.157)


786:Name_Not_Found
08/07/10 04:29:30
>>781
MSIE6が勝手にURLデコードする問題?
URLリンク(goungoun.dip.jp)

.getAttribute('href', 2) でおkらしい。

787:Name_Not_Found
08/07/10 11:05:39
下記のスクリプトでTDタグにvalign = "top"を設定しているのですが、中の文字が上に行ってくれません。
なにが問題なのでしょうか?

<script type="text/javascript">
<!--
function foo(){
for (i = 0; i < document.all.tags("TD").length; i++) {
elm = document.all.tags("TD")(i);
elm.valign = "top";
}
}
// -->
</script>

<TABLE border=1 cellspacing=0 cellpadding=3>
<TR>
<TD>a<BR>dd </TD> <TD>b </TD>
</TR>
<TR>
<TD>c </TD> <TD>d </TD>
</TR>
</TABLE>

<form action="#">
<input type="button" value="Click Me!!" onclick="foo()">
</form>


788:Name_Not_Found
08/07/10 11:46:09
>>787
エラー出てるんじゃないの。エラーも見られないのなら
向いていないよ。

789:Name_Not_Found
08/07/10 11:54:22
>>788
それを言うならこのスレのほとんどが(ry


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