+ JavaScript の質問用スレッド vol.76 +
【質問を書く上で】 1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。 2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!) 長い(1レスに入らない)場合はアップロードしてURIを貼る。 3)初心者という言葉は危険なので使わない方がよい。 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。 4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。 ただ「動きません」「エラーです」は何も情報がないため嫌われる。 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!! OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。 5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度 手間を食わせる可能性大 6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け! 7)質問はまっとうな(他人に理解できる)日本語で。 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
【FAQその1】 Q1. 開いた別窓/フレームの内容にアクセスできないのですが… A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。 Q2. JavaScriptでローカルファイルを読み/書きたいのですが… A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに… Q3. 同じタグの中でonclick="foo()"とonclick="bar()"を同時に使いたいのですが… A3. セミコロンで複数の文を区切れます。onclick="foo();bar();"としましょう。 Q4. document.write(...)でページ内容を追加したいのですが… A4. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。 部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、 (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。 innerHTMLは非標準ですがIE、Opera、Safari、Gecko(N6/N7/Firefox等)で対応済。 Q5. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが… A5. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるか <div><table>...</table></div>とでもしてdivのinnerHTMLを書き換えましょう。 Q6. DOMでtable要素にtr要素を追加しても表示されないのですが… A6. DOMでは(XHTML 1.x除く)tbody要素にtr要素を追加する必要があります。 tbody要素はtbodyタグを書いていなくても自動的に作成されます。 またはtable.insertRow()/tbody.insertRow()を使いましょう。 Q7. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが… A7. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。 Q8. フォーム部品名を変数にした「...myform.変数名.value」が動きません… A8. 「document.forms.myform.elements[変数名].value」でどぞ。 JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。 Q9. Aタグのonclickで動作指定してるのですが時々動きません… A9. 「onclick="...;return false"」としないとページ移動しちゃうから。
【FAQその2】 Q10. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが… A10. 取得には document.defaultView.getComputedStyle() を使う必要あり。 IEでは要素オブジェクトのプロパティcurrentStyleを使う。 Q11. 100*1.15の結果が114.999…998となってしまうのですが… A11. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。 Q12. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが… A12. IE7/Gecko/Opera/Safariのnew XMLHttpRequest()、IEの new ActiveXObject("Msxml2.XMLHTTP.6.0") (または"Msxml2.XMLHTTP.3.0") を使えばできます。古いブラウザだと隠しフレームに読むなどのワザが必要。 Q13. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません… A13. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。 複数の関数を呼びたいときは obj.onclick=function(){foo();bar();}; という風に無名関数を作りましょう。中に書かれたコードが実行されます。 Q14. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが 「"...this..."」とか「function(){...this...}」ではうまく行きません。 A14. それらが実行されるときはthisは別のもの(window等)を指してしまってる。 「function(x){return function(){...x...};}(this)」のようにthisを別の変数に 束縛しその変数を使って。循環参照によるメモリリーク問題あり(この項記述検討中) Q15. 文字列の置き換えをするときにコードを使いたい(Perlのs///e)のですが… A15. string.replace(/.../,function(str,p1,p2,...,offset,s){...})としましょう。 正規表現にマッチした文字列がreturnで返された文字列に置き換えられます。 各引数はstrがマッチした部分文字列、p1,p2,...が1番目、2番目、…の()の中身、 offsetがマッチした位置、sが置き換え前の文字列全体になります。 Q16. input type="file"の値を設定(参照)できないのですが… A16. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。 Q17. getElementById('ID名')や$('ID名')で要素が取れないのですが… A17. コード実行時点でHTMLがそこまで読まれてない。onload中でやるとか。
【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】 ・仕様を読む:回答者なら仕様の該当部分は読んでいるべき。質問者でも 仕様を読まずうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。 ・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。 ・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと は無視」は不毛。質問者が分かって選択していれば尊重する。無知か らIE専なのは指摘してあげると親切。 ・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される 可能性大。非標準機能も損得を分かった上で使うならよい。 ・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、 そこだけ見ているとIE専になる。あとは上2件と同様。 ・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当 な理由があることも。尋ねて分かってないようなら煽っても可(w ・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選 択するべき。一概にどちらは駄目、とは言えない。 ・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性 で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。
----------------テンプレここまで---------------- ※書き込みは必ず前スレが埋まってからお願いします
スレ立て乙です。
前スレの
>>990 ライブラリはわかんないけど、そういうサイト見たことはある。
技術的には特別な感じじゃなくて、単にページのスクロールを監視して、
次々にデータを取得->DOMで追加してってるだけだと思ったな。
ただ、そのページは際限なく次の読み込みを繰り返していたから、
どこまで行っても1ページが終わらず、かえって混乱した覚えも。
ナビゲーション的に見慣れた一般ページと違うし、ページのジャンプとかもなく、
際限なく順番に結果を眺めていくしかない感じで。
このままどこまでも行っても、求める情報が果たしてあるのか、不安になるような感じだった。
まあこれはスクリプティングとは別の話だけど。
C/C++で書いたライブラリをJavaScriptから呼び出す事ってできますか
12 :
9 :2010/01/23(土) 20:32:59 ID:???
あ、終了してたw
14 :
Name_Not_Found :2010/01/24(日) 18:41:47 ID:bhc2sxgf
>>1 いちょつ
スクロール+読み込みは手作りしたことがある。
仕組み自体は難しくないんだけど
>>9 の言うとおり、
UI的にアレな部分が出てくる。
1ページ分スクロールしたら、最下部にくるくる回るアイコンを
出したり、それっぽくデザインしたりとかで、
「そうなるんですよ」とユーザに伝えることに骨が折れました。
オンオフボタンは必須だな
twitterやはてダみたいなボタン式で十分
スクロールバー掴んでるときに要素が追加されると下まで一気に飛ぶことになるけど これは実装次第でなんとかなるもんなのかブラウザの問題なのかどうにもならんのか
18 :
14 :2010/01/24(日) 22:32:58 ID:bhc2sxgf
>>17 どうにもならん(と自分は諦めた)。
で、手作りスクロールバーにして、ロード→要素追加時に、
強制的にリリースさせることに。
>>18 オレオレスクロールバーはちょっと微妙かなw
これは OS の領分だと思ってるしユーザーにキモがられそうで怖い
質問よろしいでしょうか? function S(){} S.prototype(){ x:0, a:function{this.x}, b:function{setInterval(this.a,50)} }; 上の(一応何もしない)コードで、 a=new S();a.a()では問題無いのですが、 a.b()から読んだa.a()ではa.xが取得できないようです。 どうしたら取得できますか?
>>20 a.b()から呼んでないでしょ。setIntervalを処理するところが
呼んでるんだから。FAQ
>>4 のQ14/A14を100回読んでから出直せ。
>>20 >S.prototype(){
S.prototype = {
の間違い?
functionのあとの()も省かれてるけどこれ動くのか?
> b:function{setInterval(this.a,50)}
b:function(){setInterval(function(){this.a()},50)}
this.aだけで指定すると先にthisが解釈されるから
var f = this.a; // functionオブジェクト(のみ)を代入
setInterval(f, 50);
と同様になって、関数実行時にはthisのコンテキストが抜け落ちてる
あ、結構基本みたいですね。 ありがとうございます。
>>22 その辺はただの写し間違いです。ありがとうございます。
cloneNodeの引数のtrueというのはどういう意味なので しょうか。falseも使えますか?
>>25 ディープコピーするか否か。
子ノードの処理ね。
28 :
下手くそ :2010/01/26(火) 00:46:53 ID:qEPsmwhi
formデータを、一括で送るスクリプトを作りたいのですが、 別のファイルを起動→送る→閉じる 次のファイルを起動→送る→閉じる という繰り返し動作をしたいんですが、宜しくお願いします。
まずは日本語の勉強から
30 :
下手くそ :2010/01/26(火) 01:01:30 ID:qEPsmwhi
説明が下手ですいません。1行目は無視してください。 フォームに入力→ボタン(かリンク)を押せば 1のファイルを起動→formデータを送信→ファイルを閉じる 2のファイルを起動→formデータを送信→ファイルを閉じる という繰り返し作業をしたいのでお願いします。
1度のサブミットでフォームデータを複数のCGIに送りたいなら、 Ajaxでやった方が簡単じゃないかな。
自分は同一 URL に連続して送りたいと読んだけどどうかな?
33 :
下手くそ :2010/01/26(火) 02:08:55 ID:qEPsmwhi
何度も説明不足で申し訳ないです。
>>31 すいません、技術がありません。
>>32 はい、そうです。ログイン認証をはさんであるんですが、ログイン後同じURLになります。
PHPで認証先の情報を受け取って認識しているみたいです。
ログイン後に違うログイン名で入ると、先に入ったログイン情報は消えます。
自動ログインのhtmlファイルを作ったんですが
それを複数用意して、起動させてはフォーム内容を送信、を繰り返す
という処理をすれば一括でそれらのフォームに情報を送信できると思います。
自動でログインし、その後ローカルファイルからデータを送信することは
できたのですが、ログインを繰り返し同じデータをその度送るところで
詰まっています。
宜しくお願いします。
この質問に答えるにはエスパー能力が必要だ
このスレの意にそぐわないかもしれないけれど そういうのはUWSCとか使ってマクロでやったら?
36 :
下手くそ :2010/01/26(火) 02:18:44 ID:qEPsmwhi
長々とすいません。処理的にしたいことは フォーム内容を入力してクリックすると →htmlファイルを起動→内容の送信→htmlファイルを閉じる →次のhtmlファイルを起動→同内容を送信→htmlファイル閉じる の繰り返しです。送信と閉じるは、多分逆になっても大丈夫だと思います。 一回認証すればセッション切れまでログイン状態のような気がします (閉じた後に送信したら認証なしで送れたため) 宜しくお願いします。
37 :
下手くそ :2010/01/26(火) 02:33:13 ID:qEPsmwhi
>>34 そのPHPについて簡単に申しますと
1のページに情報を送りたいと思います。
1のページからログインします。PHPはURLについたIDから
どこのページからきてどこに情報を送りたいのか認識して送ります。
2のページに情報を送りたいと思います。
ログインすると、どこからきたかPHPが認識します。
PHP本体は同じURLです。
1つ1つ入力するのを省略して一括で送ろうと思います。
そこで問題は、両方ログインすると、後からログインしたほうだけ有効になります。
先にログインしたほうへは情報を送れませんので、
ログイン→送信→ログイン→送信
とする必要があります。
38 :
下手くそ :2010/01/26(火) 02:41:38 ID:qEPsmwhi
まず、1に自動でログインをしてくれるA.htmlを作りました。 2に自動ログインしてくれるA2.htmlを作りました。 そして、ログインした状態ならそのPHPに向けて情報を送信できるB.htmlファイルを作りました。 B.htmlの中に、A.htmlを開く→form内容の送信→A.htmlを閉じる→A2.htmlを開く→form内容の送信→A2.htmlを閉じる という記述ができれば、1にも2にも情報を送信できると思います。 宜しくお願いします。
>>38 >>B.htmlの中に、A.htmlを開く→form内容の送信→A.htmlを閉じる→A2.htmlを開く→form内容の送信→A2.htmlを閉じる
という記述ができれば、1にも2にも情報を送信できると思います。
WSHでググれ
40 :
下手くそ :2010/01/26(火) 11:07:00 ID:???
自己解決しそうな感じです。ありがとうございました。
>>39 一応javascript質問スレなので。
レスありがとうございました。
送信目的ではない場合でinputのtextボックスを使いたい(動的にvalueの値をやりとりしたい)とき <form action="URL"> <input type="text"> </form> な感じにしているのですが、これだとtextボックスにフォーカスしているときに 誤ってキーボードのエンターを押してしまうと、formのactionをしてしまって(action属性を削除していた場合も) ブラウザが更新中の動作をしてしまうのですが、これを避けたいです 何かうまい方法はありませんでしょうかよろしくお願いします
送信目的じゃないなら <form onsubmit="return false">
そもそもform要らないんじゃないか
きっとformがないと値の取り方が分からないんだよ。
formオブジェクトって階層的に説明されていて必ず書かなきゃなら ないものみたいに解説しているサイトや本は多いよね。JSって実際 こんなところが難しい気がする。人それぞれみたいな。
むしろHTMLの問題じゃね
formがないとパーツが現れないブラウザがあったよね。 古いネスケだっけ?
うん。 ネスケ4とかでなかった
要素のhref属性やsrc属性の値のドメイン部分を取得するには 正規表現で取り出すしかないですか? document.domain とか window.hostname.hostname とかみたいに ぱっとお手軽にドメイン部分だけ取り出せないのかなと Firefox3.6だけで動けばいいのですが
×window.hostname.hostname ○window.location.hostname すみません間違えました
そうですか
質問です。(/^[0-9]+$/g)のようなgの使い方を時々見るんで すが、これ間違いですよね。
54 :
Name_Not_Found :2010/01/27(水) 00:31:48 ID:ohpwVOoU
教えてください。 今日から勉強し始めたのですが、 Prototype.jsには、XMLHttpRequestオブジェクトをラップするオブジェクトとして, Ajax.Response とAjax.Updater が用意されている。 という文章の ラップする ってどういう意味でしょうか? サランラップ のラップだとすると,包むのでしょうか?
そのラップであってる ラッパー関数とか聞いたことない?
56 :
Name_Not_Found :2010/01/27(水) 00:45:13 ID:ohpwVOoU
>>55 ありがとうございます。
聞いたこと無いです。。。
Ajax.Response とAjax.Updaterとが、
それぞれにXMLHttpRequestオブジェクトを持ってる。 で合ってますか?
>>50 正規表現でウマいパターンを見付けるか、
裏でこっそり開いてlocation.hostを得るとか。
>>56 ajax の処理なんかはブラウザによって書き方が違ってたりするわけですよ
「ajax であれこれしたい」って思ったときに
必要な箇所全てで
ブラウザを判定して…なんてやってたら
無駄が多いしバグの温床になりそうだしメンテナンス性悪いしでいいことがない
なので
元にあったものを包んでもうちょっと使い勝手がいいようにしたりします
必要なところではラッパーを呼べばいいし
修正をするときにも一カ所だけですみます
ajax連呼するのは頭悪い
>>22 Function.prototypeは空のFunction
Array.prototypeは空のArray
Date.protottpeは空のDate (NaN)
以下略
だからそのコピペミスコードも動く
実際にやると発見しにくいバグ
え?
>>57 どうもありがとうございます
正規表現を使います
64 :
Name_Not_Found :2010/01/27(水) 12:16:44 ID:JoJ5/C9+
>>56 それぞれに、というか、AjaxというオブジェクトにXHRを持ってて、
それぞれが使ってる、とかもありうるよ。
詳しくはソースコードを追っかけるとわかるし面白いよ。
ラッパについては、例えばIEだとJSのXMLHttpRequestオブジェクトが無くて、
ActiveXオブジェクトを作って使うんだけど、
そのときのonreadystatechangeなんかは、ActiveX側のプロパティの
ラッパだから、変なことになったりする。
var XHR = new ActiveXObject("Msxml2.XMLHTTP");
XHR.onreadystatechange = function(){
alert(this);
};
としたときに、thisがグローバルになっちゃうのが特徴的。
65 :
53 :2010/01/27(水) 18:12:09 ID:sP0uwV8C
>>53 RegExpオブジェクトにgフラグがあってもなくても同じに動作する
メソッドとかはたくさんある。そういう場合「余分」「無意味」
という意味では間違いだけど害があるということもない。
67 :
56 :2010/01/27(水) 18:22:39 ID:???
ラッパーのことを説明していただいた皆様、ありがとうございます。
英語 wrapper
読み方 ワラッパー(笑)
70 :
53 :2010/01/27(水) 22:06:49 ID:???
>>66 そうなんですか。無意味だけど無害なんですね。わかりました。
ありがとうございました。
>>70 string.match は g 有無で返り値が変わります。
53 の パターンを string.match に使う機会は無いと思うけど、
一応 つっこんでみる。
>>69 kusowrapperwwwwwwwww
ボタンをクリックしたときに外部サイトに移動するという場合に、 リファラが正しくないとはじかれる外部サイトに対して、 リファラを正しく設定して開くことって JavaScript でできるでしょうか? PHPなどでHTTPRequestでリファラ設定して…ならできるんですが、 サーバ側からのアクセスでなく、クライアント側からアクセスさせるには、 他にどういう手段があるかご存知の方がいましたら教えてください。
できますん
英語で referer
俺達Function.prototypeは空のFunction Array.だからprototypeは空のArray (YO!) Date.protottpeは空のDate (NaN) 俺達Function.prototypeは空のFunction Array.だからprototypeは空のArray (YO!) Date.protottpeは空のDate (NaN)
お前、キーボードの弁償な
protottpeで吹いた
大将なんだよ最後だし
80 :
Name_Not_Found :2010/01/29(金) 16:56:25 ID:hvwN7SKM
半角スペースを間に挟むから一文字多いんだよ
なんかワロタ
83 :
Name_Not_Found :2010/01/29(金) 18:34:52 ID:hvwN7SKM
>>81 貴重なレスありがとうございます。コード的にはどうなるでしょうか?
var a="java script"; a.replace(/ |nbsp;/,'');
&忘れた
86 :
Name_Not_Found :2010/01/29(金) 18:57:36 ID:hvwN7SKM
>>85 ありがとうございます、しかし私には先ほどのURL中のRead More実現コードのどの関数のどの処理部分に
レスして頂いた置き換え処理を付け加えればいいのかがわかりません。
もしよろしければそこのところもお願いできないでしょうか?
>>81 ,84
は冗談だから気にしなくておk
というか
なんでここで聞くんだ?
88 :
Name_Not_Found :2010/01/29(金) 19:16:19 ID:hvwN7SKM
>>87 Java Scriptの質問スレッドではスレチでしたでしょうか?
>>1 > 一、自ら学んでJavaScriptコードを書く意思を持つ者
>>84 がなにをするコードか考えもしないようなヤツの質問はスレチ
90 :
Name_Not_Found :2010/01/29(金) 19:22:22 ID:hvwN7SKM
ReadMoreの機能はBlogspot.com標準であるだろ
92 :
Name_Not_Found :2010/01/29(金) 19:33:41 ID:hvwN7SKM
>>91 確かにあります。しかしblogger標準の仕様ではブログへの投稿内容中にここからが続きですよ、というタグを張らねばなりません。
java scriptを使えばそれが自動化出来る、素晴らしい事です。
すべての記事が固定文字数でぶった切られたブログ、しかも強制。 タグでやれよ。
94 :
Name_Not_Found :2010/01/29(金) 19:49:05 ID:hvwN7SKM
>>93 固定文字数でぶった切られたブログはお嫌いですか?
嫌いなのであれば嫌いな理由を具体的に教えてください。そしてそのブログがどのようなブログなのかも詳細に、
忍耐力検定実施中
96 :
Name_Not_Found :2010/01/29(金) 20:24:16 ID:o+3+UvU/
中身全然ちゃんと見てないけど、文字数は何を数えているの? textnode.valueなのか、innerHTMLなのか。 改行文字、空白、タブコードはどうしてんのか。 そのへんがわかればなんとかなるんじゃね? てゆうか、この機能をJSで実装する意味がよくわからん。 サンプル見る限り、ただのリンクなんでしょ? サマリだけでちょん切られてて、moreをクリックで続きを 取ってきてくれるんならともかく。
97 :
Name_Not_Found :2010/01/29(金) 20:43:39 ID:hvwN7SKM
>>96 出来ました。ありがとうございます。
そういえば、私はテキストエディタで作ったタブとかわんさかりのテキストをアップしていました。
99 :
Name_Not_Found :2010/01/29(金) 21:15:43 ID:hvwN7SKM
>>98 半角スペースを間に挟むから一文字多いんだよ
while(strx.charAt(chop-1)!=' ' && strx.indexOf(' ',chop)!=-1) chop++;
という行で半角スペースの判定をしている訳ですが、ニュアンス的に私には意味不明でした。
「JavaScript のことを "java script" と区切って書くなんて…」ということを 質問内容に絡めて混ぜっ返してるんでそ 頭固すぎますよ
日本語でおk
strx の値をどこから取得しているか次第では、半角スペースの判定が不十分だな。
JSをはじめた者です。日付について疑問なのですが、用意されている 関数で1960年代の日付は正確に返されるのでしょうか。OKだとして どれくらいまでさかのぼって正確にカウントできますか。 初歩的ですみません。
105 :
103 :2010/01/30(土) 12:54:53 ID:???
>>104 早速の回答ありがとうございます。なるほど(大汗
規格も読まずに質問してしまい申し訳ありません。
助かりました。
106 :
Name_Not_Found :2010/01/30(土) 19:31:09 ID:kqfDcwve
javascriptにて
こちらがパソコン内のファィルの一部パス(Xとする)を指定し、
file://c:/(X).html を開くスクリプトを作りたいと思い
参考書を見ながら下記のように書いたのですが上手く動いてくれません。
(実行すると「ページでエラーが発生しました」と出る)
どの辺が間違っているかなどどなたか教えて頂けないでしょうか?
http://www1.axfc.net/uploader/File/so/38055
ローカルファイルにJSでアクセス?
<form name = "url1"> <input type="text" name="1" size=30 id="test1"> </form> <input type="button" name="2" value=" 飛ばす " onClick="P1('file://c:/' + document.getElementById('test1').value + '.html')"> idでやってみた。formでやる場合は書き換えてくれ。
>>107 パソコン内で動くプログラムを作りたかったんですが、あいにくjavascしか知識が無かったので…
>>108 作っていただいて申し訳ないのですが、その内容でやっても動かないのですが…
>>109 拡張子を .hta にして、ファイル操作は ActiveXObject 使いな。
HTML と JavaScript の知識もいまいち足りないぽいけど。
ADODB.Streamでググレカス
formのエンター=onsubmit
IE8でうごいてFireFox3.6で動かない場合どこら辺に着眼すればいいのでしょう?
とりあえずエラーコンソール見ればいいんじゃないかな?
十中八九おまえの記述ミスか非標準使いまくり 残りの一は{a:1,}とかのコンマ
116 :
Name_Not_Found :2010/01/30(土) 22:32:55 ID:CM9ak9FE
だったら2ch専用ブラ用なんじゃない
118 :
Name_Not_Found :2010/01/31(日) 17:37:39 ID:X91Y76h/
http://bost.bostudio.co.jp/?p=1331#respond にあるjQuery+draggable+cookieを試そうと思っています。
対象物をドラッグして、リロードしても位置を記憶するというものです。
<script type="text/javascript">
$(function() {
$('#myDrag').draggable({
opacity : 0.5, //ドラッグ時の不透明度
cursor : 'move', //カーソル形状
containment: '#maincol',//移動範囲制限
stop: function(e, ui) {
$.cookie("tname",ui.position.top,{expires:30});//topの数値をクッキーに保存
$.cookie("lname",ui.position.left,{expires:30});//leftの数値をクッキーに保存
}
})
});
if($.cookie("tname")) {
$(function(){
$("#myDrag").css("top",$.cookie("tname") + "px");//保存したクッキーの値を挿入
$("#myDrag").css("left",$.cookie("lname") + "px");//保存したクッキーの値を挿入
});
}
</script>
以上のスクリプトで対象物の移動はできるんですが、リロードしたときその位置は保存されていません。
どなたか解消方法を教えていただけないでしょうか。
クッキに保存・から取り出し・設定の関数が動いているかアラートとかで確認すればすぐわかるでしょ。
Basic認証をダイアログを介さずにやりたくて 以下のようなコードを書きました function auth(pass) { var req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP"); var usr = location.search.substr(1).split("&")[0].split("=")[1]; var res = req.open('GET', 'basic/dammy.html', true, usr, pass); req.onreadystatechange = function() { if (req.readyState==4) { alert("認証完了"); } } req.send(null); } ユーザー名はGETでアドレスに埋め込んで合って, パスワードは呼び出すときにフォームに記入してもらった値を使ってる感じなんですけど 認証が通る場合はこれで問題ないんですがパスワードを間違えた時に認証ダイアログが出てしまいます xmlhttprequestでBasic認証付きのファイルを読むときに,ダイアログを出さない方法ってあるでしょうか? readyStateを見ながらstatusを確認して だめそうならabort()を呼ぶって方法も試したんですけどなんか上手くいかなかったです
122 :
Name_Not_Found :2010/01/31(日) 21:00:01 ID:vEK2L4jZ
エラーページ(ハンドラ)を編集してみる
フォームが" ", "", " "等の(スペースによる)空欄の場合に if文で一致させて「キーワードを入力してください」のようなアラートを出したいのですがどうすればいいですか?? フォームが空欄かつその中にスペースが何個あっても対応できるようなif文を書きたいんです。 よろしくお願いします。
length for RegExp gugurekasu
dtにjQueryのhover で マウス右下に dd の内容をポップアップさせているんですが、 dtが画面の下の方にある時はポップアップが画面外に出てしまいます。 画面上のどこでマウスオーバーイベントが起きたかによって ポップアップの表示方向(下側のスペースが足りなければ上方向に)を変えるには javascriptで自分で書く必要あるでしょうか? それとも既にjQueryのライブラリにそのようなものがありますか? もし、ある場合は名前を教えていただけると嬉しいです。
overlib
>>124 ヒントありがとうございます!
\sで解決しました!
forとlengthのヒントに関してはよく分かりませんでしたorz
if(" ".match(/[^\s]/)){alert("文字列あり");}
else{alert("文字列なし");}
[^\s] = \S
引数の丸投げ?みたいなことってJavaScriptで出来ますか? rubyの例ですが def hoge_org(arg1, arg2, arg3) print arg1 + arg2 + arg3 end def hoge1(*args) hoge_org(*args) end hoge1("a","b","c") => "abc" みたいな感じです。ラッパー的な物を作りたいので、これができると非常に楽なのですが・・・ よろしくお願いします
こんな感じかな? function hoge_org() { var delim = ""; var arr = Array.prototype.slice.call(arguments); alert(arr.join(delim)); } function hoge1() { hoge_org.apply(null, arguments); } hoge1("a", "b", "c");
131 :
129 :2010/02/01(月) 02:54:00 ID:???
>>130 レスありがとうございます。言葉足らずですみません
hoge_orgの方は組み込み関数も含むのでいじれない前提を考えていました
あくまでJavaScriptの言語機能として引数をそのままに別の関数を呼び出す方法が
あるかなと・・・
hoge_org.apply(null, arguments); 本質的な部分はここだけど、意図と違ったかな。 hoge1 に渡した引数(arguments オブジェクト)をそのまま hoge_org の引数にして呼び出しているんだけど。 apply について調べてみたら? それで意図に沿わないなら、JavaScript には求めている実装はないと思う。
この方が分かりやすいのかな? function hoge_org(arg1, arg2, arg3) { alert(arg1 + arg2 + arg3); } function hoge1() { hoge_org.apply(null, arguments); } hoge1("a", "b", "c");
134 :
129 :2010/02/01(月) 03:31:17 ID:???
>>132-133 ありがとう。申し訳ない。applyを完全に見落としていた
で、やってみたのですが・・・
function hoge1() {
alert.apply(null, arguments);
}
だと思った通りに動いてくれるのですが
function hoge1() {
xml_http_request = new window.XMLHttpRequest();
xml_http_request.open.apply(null, arguments);
}
とか書くと
=>uncaught exception: [Exception... "Illegal operation on WrappedNative prototype object" nsresult:〜
・・・あきらめるか il||li ○| ̄|_ (ブラウザはFirefox3.0です)
>>134 その場合、apply の第 1 引数は null でなく xml_http_request 。
136 :
129 :2010/02/01(月) 06:22:52 ID:???
>>135 そういう事なのか・・・
動きました。ありがとうございました
thisじゃだめ?
だめにきまってら
なんでエレメントの絶対座標取得は敷居が高いの。 エレメント内のエレメント内の・・・エレメント みたいなとき、親エレメントがabsoluteかなんかでページのどこかにある場合とか ブラウザによって挙動が違いすぎるんだが。 とりあえず、例えば(単独でも入れ子でも)<div style="width:50px;height:50px;">test</div>があったら documentの左上からの座標を取得できるみたいなやつがあればいいのに
プロパティの読み出し時に任意の処理をすることって可能ですか? たとえば function TIME() { this.now = function() { today = new Date(); return today.getTime(); }; }; time = new TIME(); この場合nowは関数なのでtime.now()と呼ぶ必要がありますが time.nowで呼べるようにしたいです(返り値はt.nowを呼んだ時刻)
}();
ああいかんな
__defineGetter__
>>140 JavaScript getter setter でぐぐれ。
ブラウザによって対応方法が違うと思うので注意ね。
>>139 Closure Library の中にそんな便利関数があった気がする。
まあ、標準で欲しいよね。
146 :
140 :2010/02/02(火) 09:04:15 ID:???
move: function() { box.left += 4; box.element.style.left = box.left + 'px'; if (box.left > 400) clearInterval(box.id); }, move: function() { this.left += 4; this.element.style.left = this.left + 'px'; if (this.left > 400) clearInterval(this.id); }, start()の文脈でのthisをmove()のthisに伝播させるために必要 boxは言わば固有名詞だから「私」が誰かを伝える必要がない
>>148 ありがとうございます。
それだと
this.id = setInterval(function() { self.move() }, 20);
の部分はべつに、
this.id = setInterval(this.move, 20);
でよくないですか?
でもこれだと”使いまわせない”ようです
ここの使いまわせるまわせないというのがよくわからないんです。
>>149 >4の14
thisは特別で、関数を実行するときに
obj.func()
のobjの部分が与えられる
タイマー部分を省略するとsetIntervelの実装はこんな感じ
主語的なものがない(失われている)のがわかると思う
function setInterval(func, time) {
while(timer(time)) {
func();
}
}
引数funcは配列とかのようにFunctionオブジェクトが値として
Boxのオブジェクトから切り離されて渡されてるという点にも注意
>>149 酒飲んでるから適当に書くよー。
1) thisには、メソッドが呼び出すのに使用されたオブジェクトへの参照が代入される。
window.test()
この場合、testメソッド内でのthisの値は、windowオブジェクト
2) タイマー関係のメソッドは少し特別で、指定された関数をwindowオブジェクトを介して
呼び出す。つまり、呼び出された関数内でのthisの値は、windowオブジェクト。
以上の2点を踏まえたうえで、3。
3) var self = this; setInterval(function() { self.move() }, 20);
まず最初に、関数のスコープは定義時に決定される。(定義された場所のスコープ)
つまり、この無名関数からself変数にアクセスすることは可能。
そしてself変数にはthisの値、つまりboxオブジェクトへの参照が代入されている。
ここでsetIntervalの登場。先も説明したけど、この無名関数はwindowオブジェクトを
介して呼び出される。つまり、thisの値はwindow。
しかし、無名関数内部ではself変数つまりboxオブジェクトを介してmoveメソッドを呼び出している。(ここ重要!)
言い換えれば、JSのスコープチェーンの性質を利用して、現在(box内)のthisの値へアクセスする方法を確保している感じ。
分からんなら、また質問すればいいよ。おやすみ。
01: var box = { 02: ~~|~ : 03: これ :(中略) 04: : 05: start: function() { 06: var self = this; 07: this.id = setInterval(function() { self.move() }, 20); 08: } 09: } 5〜8行目のstartは box.start と書ける。 ここでthisを使用すると~~~~ の部分が参照される。 しかし、setIntervalで呼び出された場合、どうなるか。 実はsetIntervalはwindowオブジェクトの関数で、 window.setInterval と書ける。 だからsetInterval 経由で呼び出した関数はthis=~~~~~~~ となってしまう。 そこで6行目の時点で this(=box) を 変数selfに代入して self.move() と置くことで、thisの指すオブジェクトが変わってしまう問題に対処している。 だから、 05: start: function() { 06: this.id = setInterval(function() { box.move() }, 20); 07: } のように書き換えても問題なく動作するよ。 どちらで書いても実装は変わらないけど、前者の方式のほうがメジャーかな。 "使いまわせない"というのは、多分コーディングのことを言っている。 例えば box という名前を hako に変えたとき、後者の場合6行目の box も hako に変えなきゃいけない。 生産性を高めるためにも this などで置けるところは、可能な限りそうしたほうが良いってことだと思う。
>>150 >>151 >>152 なるほど、setIntervalの中でthisするとwindowオブジェクトを参照
するとは思いませんでした。4にかいてましたね。
リンク先の>名前 box を使いまわせなるように、 this を使う、
の部分のコードで、仮にsetInterval(this.moveってやった場合、
このthisは、startからのオブジェクト、つまりboxオブジェクトを参照するのだと勘違いしてました。
(ただここで一つ疑問が・・それは一番最後で。)
setInterval自身がwindowオブジェクトからタイマー関数を使うための無名関数と、
この無名関数の中でmoveメソッドを呼び出したり、moveメソッド内のthisでboxオブジェクトを参照するために、
(thisだとwindowになってしまうので)selfで参照させているわけですね。
ここで無名関数使うことで、moveメソッド内でbox.leftやbox.elementとせずに
thisで代用しても辻褄が合うし。
リンク先のsetInterval部分に関してかなりすっきりしました。
ありがとうございました!
疑問
リンク先の>オブジェクトを使う場合、
のところで、setInterval(this.moveとしていているのだから
window.moveとなるはずなのに?boxオブジェクトのmoveを参照できているのはどうしてなのかと。
box.start();でstart内のthisはboxオブジェクト、
setInterval内の直thisはwindowオブジェクトでいいんですよね・・
今回質問のコードまとめ >オブジェクトを使う場合 var box = { element: document.getElementById('target003'), left: 0, move: function() { box.left += 4; box.element.style.left = box.left + 'px'; if (box.left > 400) clearInterval(box.id); }, start: function() { this.id = setInterval(this.move, 20); } }; box.start(); >名前 box を使いまわせなるように、 this を使う var box = { element: document.getElementById('target004'), left: 0, move: function() { this.left += 4; this.element.style.left = this.left + 'px'; if (this.left > 400) clearInterval(this.id); }, start: function() { var self = this; this.id = setInterval(function() { self.move() }, 20); } }; box.start();
155 :
147 :2010/02/03(水) 06:24:36 ID:???
と、考えてみたら this.moveなので、 単にbox.moveを参照していて setInterval(function(){ box.left〜〜 }, 20) ということだったのでしょうか。もうちょっと調べてみようと思います・・
>>155 おk、あってるよ。
もう気づいたかも知れないけど、上のコードの
setInterval(this.move, 20); が setInterval(function(){ this.move(); }, 20);
こうなっているとアウトね。
>>156 ついさっきまでthis.moveのところをthis.move()的に見てしまっていました。
そしてリファレンスのsetIntervalをみてみると、
関数かコードの指定だそうで、それも踏まえて
setInterval(this.move, 20);とsetInterval(function(){ this.move(); }, 20);
の違いもわかるようになりました。
ありがとうございました!
IE限定での話ですが・・・(現在IE8です) HTMLの各要素のインスタンスを生成する(?)クラスの一覧、もしくはJavaScript上で 該当するすべてのクラスを列挙する方法ってありますか? HTML画像(imgタグ)のインスタンスを生成するクラスがImageであるように 他のHTML要素も同様にHTML要素のインスタンスを生成するクラスが存在すると 思うのですが、そのクラスの名称を知りたいです
>>158 ない。JavaScriptはプロトタイプ方式のオブジェクト指向言語で
あり、クラスという概念は本来存在しない。HTML要素のオブジェクトを
生成するのはdocument.createElementでしょ。勉強すれば。
160 :
158 :2010/02/03(水) 08:46:55 ID:???
>>159 レスありがとう。無理なのか・・・orz
言語としてクラスが無いのは一応知っているつもりだけど便宜上使いました。以下も使わせてください
たとえば
<html><head></head><body>
<img id="A"><img id="B">
<script type="text/javascript">
Image.prototype.func01 = function(){alert("func01")};
document.getElementById("A").func01();
document.getElementById("B").func01();
</script>
</body></html>
みたいにすればimgタグのインスタンスに共通するメソッドを定義することが出来ますが
他のタグやスタイルシートで同様にインスタンスに共通するメソッドを定義する事は
不可能と言うことですか?
#IEでDOM系のメソッドを追加を考えているのですが・・・
>>160 だからクラス方式でないのにクラス方式の用語で喋ると
考えられることも考えられなくなるってば。
ある種別の要素すべてに共通なメソッドを追加定義したい場合、
その種別の要素が共通に持つプロトタイプオブジェクトが「あれば」
そのオブジェクトに関数をプロパティとして追加すれば可能。
その「あるかどうか」「あればどれか」を探索するのには、
プロパティ __proto__ が使える環境ならそれを何段かたどって行けば
できると思われ。IE8で __proto__ が使えるのかどうかは知らん。
ちなみに次のコードはFxでは動作したがIE7では駄目だった。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title>???</title> <script type="text/javascript"> function test() { document.createElement("H1").__proto__.tt = function() { alert('Y'); }; document.getElementById('i1').tt(); } </script> </head><body> <h1 id="i1">test...</h1> <div><button onclick="test()">TEST</button></div> </body></html>
すいません、PHPやってるんですが web上でマウスをドラッグ、ドロップすると グラフや表などが動的に動くって、(データも変更) javascript か actionscript なんですか?
エリートのPHPプログラマ様が来たんだ、誰か答えてやりなさい
どう見ても焼酎 ・マウス"を"ドラッグ、ドロップするとは? ・"動的に動く"って具体的にどゆこと?
>>164 横やりだけど、IE8でそこに書いてある
>Element.prototype.isElement = true;
とかElementが無いと言われて動かないぞ?
もっと下の方にあるHTMLDocument.〜も無いと言われる
>>169 さんきゅう。ビンゴ、デフォがIE=5だった
初回起動時に設定をいじった影響かなぁ
>>171 si.setInterval ってそもそも実行できなくね?
適当にコード作って実行しても動かなかったんだけど
var si = {setInterval: window.setInterval};
si.setInterval(function(){ document.title = new Date().toLocaleString() },20);
ちなみに↓なら問題なく動いた
window.setInterval(function(){ document.title = new Date().toLocaleString() },20)
どこか問題あったらスマン、指摘して欲しい
と思ったらIEで動いたわ。火狐だとダメだった。なんでだろー var si = {setInterval: window.setInterval}; si.setInterval(function(){ document.title = (this === window) },20); こう書き換えるとthisはwindowをさしてるのがはっきり分かるな。
windowの多くの関数がthisを見てるからじゃないのか try{ window.setTimeout.call({}, function(){ alert("setTimeout"); }, 0); }catch(e){ alert(e); }
document.body.appendChild(created_elem);は さほど支障ないくらいどのブラウザでもいけますかね? document.getElementsByTagName('body')[0].appendChild(created_elem); はどうでしょうか。 統一できるならどちらかにしたいのですが よろしくおねがいします。
それぐらい試せばすぐわかるだろ
177 :
Name_Not_Found :2010/02/04(木) 13:40:56 ID:H1SWfshD
>>175 >さほど支障ないくらいどのブラウザでも
聞き方が悪い。
そういうのって、ほんと人(サイト)によってバラバラだから。
自分だったらIE6-/Fx3-/Safari3-でおkだけど、
場合によっちゃOperaも!とか色々あるから。
>>175 対象とする文書が(X)HTMLなら
・DOM Level 1 HTML
・DOM Level 2 HTML
をサポートしている処理系でdocument.bodyが使える
IE6以上、Firefox、Safari、Chrome、OperaならOK
任意のXML文書内でXML Namespace使ってXHTML利用しているようなパターンは知らん
http://pc11.2ch.net/test/read.cgi/hp/1262851395/412 ここで聞いてコピペでやれそうだったのでjavaScriptに初挑戦してみたのですが
コピペでやってみると、インラインフレームの中のページでエラーが発生して
エラー: オブジェクトがありません
URL: file:///C:/〜とファイル名まで表示
で、インラインフレームを表示させる方のページでも
スクリプトエラー、アクセスが拒否されました
URL: インラインフレームの中のページのURL
何がなんだかさっぱりで…どのようにすればいいのでしょうか
ふたつリンクを紹介してもらったみたいだけどどっちの方法を使った? たぶんあなたのやりたいことは二つ目の方じゃないと無理だよ
>>180 上のリンクの方でやっていました
下のリンク先の方法でチャレンジしてみます
ありがとございます!
下の方法でもドメイン違ってできないに100ガバス。
システムの共通部品をjavascriptで用意しているんですけど、 jsファイルの分け方って一般的にどういうふうにやりますか?
そりゃあ一緒に使うjsはまとめて使いやすくするだろ。 jsの’共通部品’を考えればおk。
なるほど、確かにそうですね。
186 :
Name_Not_Found :2010/02/05(金) 08:13:21 ID:FDSGyGu1
prototype.js 1251行目
http://gihyo.jp/dev/feature/01/prototype/0004?page=5 for (var i = 0, elements = [], length = arguments.length; i < length; i++)
>何度もarguments.lengthを評価するのを避けるためにしまっておくためのlengthを初期化して
ってありますが、forのi=0が終わってi=1の処理するときにまたlenght =argumentos.length
しているような気がするのですがこれはいいのでしょうか?
というのは、
var length = arguments.length;
for (var i = 0, elements = []; i < length; i++)
みたいに出したほうが何回もlenght =しなくていいのでは?と思いました。
アドバイスよろしくお願いします。
>>186 > for (var i = 0, elements = [], length = arguments.length; i < length; i++)
これは、
var i = 0, elements = [], length = arguments.length;
for(; i < length; i++)
と同じ。
>>186 その理論だと i = 0 の無限ループになるし
elements = [] も毎回繰り返すことになるよ?
length = arguments.length も一度しか処理されない。 i = 0 と elements = [] が一度しか処理されないことがわかってるのに、 なんで同列に書かれてる length = arguments.length が別の動作をすると考えるんだ?
脳内で自分が思い込んだようにプログラムを俺様解釈する典型。
191 :
179 :2010/02/05(金) 12:36:34 ID:???
下のリンク先の方法でやってみましたが、リンク先の掲示板にもあるように正常に作動しないブラウザがありました。 で、上のリンクでもう一度やってみて、「オブジェクトがありません」とのエラーが出ますが 一応アップしてみたらIE、Firefox、Chrome、Sleipnirで動作確認できました 「オブジェクトがありません」このエラーの解決方法がありましたら教えてください。。
そういう質問ならエラーが出る最小限の例(そのまま試せるもの)を用意して 欲しいな。
193 :
Name_Not_Found :2010/02/05(金) 20:18:13 ID:FDSGyGu1
>>187 forを特別に見ていましたが
なるほど、よくわかりました。
>>188 ,189
カンマ以降を何か別のものと勘違いしておりました。
ありがとうございました!
194 :
Name_Not_Found :2010/02/05(金) 22:33:47 ID:2huOjUlx
javascriptでinputタグを全部抜きたい場合は $("input") で抜けますが、inputタグでかつ、タイプがボタンのもののみを全部抜くにはどうすれば良いのでしょうか?
jQuery なら $("input[type='button']")
196 :
Name_Not_Found :2010/02/05(金) 22:41:17 ID:2huOjUlx
197 :
179 :2010/02/05(金) 23:15:44 ID:???
すみません。↓をそのまま持ってきました <style type="text/css"> html{ border:none; } body{ margin:0; padding:0; } </style> <script type="text/javascript"> var iframeHeight = function(){ if(!window.parent.document) return false; try { // !IE document.styleSheets[0].insertRule( 'html' + '{overflow:hidden;}', document.styleSheets[0].cssRules.length ); } catch (e) { // IE document.styleSheets[0].addRule( 'html', '{overflow:hidden;}'); } height = document.getElementsByTagName('div')[0].offsetHeight; window.parent.document.getElementById('sample1').style.height = height + 'px'; setTimeout('iframeHeight()',750) } try { window.addEventListener('load', iframeHeight, false); } catch (e) { window.attachEvent('onload', iframeHeight); } </script>
198 :
続き :2010/02/05(金) 23:22:37 ID:???
>>198 >>1 > 一、JavaScriptはJavaとは別物であると知っている者
JavaScriptの実行を容易に中断する方法って無いですかね? 階層が深いところでエラーが発生してもコードを止めるのが凄く大変 raiseやexitみたいなのがあれば楽なのだが・・・
>>200 throw 'hoge';
じゃだめなの?
>>198 あんたがJavaScript初心者かどうかは我々には関係のないこと。
動作するけどエラーメッセージが出るのね。IEとその他の
振り分けにtry-catchを使っているのをif文に直したらどうかな。
if(document.styleSheets) {
...
} else {
...
}
とか
if(window.addEventListener) {
...
} else {
...
}
のように。試してないけどね。
jqueryと使って、左メニューにアコーディオンメニューを作成し、
右メニューにコンテンツを表示したいと思っています。
こちらのサイトで
ttp://triplexxx.jp/archives/150 公開されているプログラムがまさに理想通りの動きをしてくれているので、
このプログラムを参考に作成しているのですが、サブメニューにリンクを貼っても
そのリンク先のページに飛ばなくて困っています。
(このサイトでmenu 1-1やmenu 1-2のことです。)
せっかくアコーディンメニューがあってもリンク先へ飛ばないようなら意味がありません。
どうすればいいかご教授お願いします。
ちなみにこのサイトでダウンロードしたファイルそのままで、サブメニューのaタグを書き換えた
ものでも飛びませんでした。
jsでreturn falseがサブメニューの方にも適応されてる。 li > aの前に > をつければ治った。 jquery触った事ないから仕様的に間違っているかもしれない。
205 :
Name_Not_Found :2010/02/06(土) 10:28:43 ID:tFIjGtCy
>>203 そのブログにコメント欄があるんだからそこで聞いた方が早いでしょ
サブメニューのaタグにもclickイベントが指定されちゃうのが問題
グローバル変数 window['w'+i] ローカル変数は 関数(変数)名['w'+i]?
>>207 レスありがとうございます。
やっぱコンテナが普通ですよね。
209 :
Name_Not_Found :2010/02/07(日) 01:37:41 ID:4dC05WKU
質問です。 greasemonkeyのユーザースクリプトの制作中にcanvasではまって困っています。 サイト内の表示画像のピクセル操作がしたいのですが、 canvasのgetImageData()が期待した通りに動きません。 WinXPでfirefoxの3.0.1と3.5.7と3.6で試したり、 画像が読み込まれてからgetImageData()を使ってみたりしましたがダメでした。 具体的なコードは以下のようなものです。 drawImage()でimgを描画するまではうまくいくのですが、 最後のimgDataという名前の変数の中身がnullになってしまいます。 var canvas = document.getElementById("canvas"); var ctx = canvas.getContext('2d'); var img = new Image(); img.src = "2ch.png"; ctx.drawImage(img, 0, 0); var imgData = ctx.getImageData(0,0,1,1); firefox+javascript+canvasではピクセル操作はできないのでしょうか?
img.onload
operaの最新版にて、<td>セル内のテキスト位置を 下方移動させるために、Javascriptにて、 エレメントのstyle.verticalAlignをonclickハンドラ内で top, middle, bottomのようにかえると、再描画カスがのこります。 回避方法を教えてください。下記の回避方法を試しましたが駄目でした。 @ style.visibility の値をhiddenにして移動後、visibleにする。 A style.colorの値をbackgroundColorの値にして、移動後colorを書き戻す。 ちなみに移動後、alert()を挟むとなおりますが・・・ I.E. 7 , google chrome 4.0.2, F.F. 3.6 いずれでもこのような問題は起こらないことを確認しています。
>>212 うわ、ほんとだ。こりゃ Opera のバグだねぇ……。
一応、innerHTML を一旦消すことで回避できたよ。
function hoge(td) {
var html = td.innerHTML;
td.innerHTML = '';
switch (td.style.verticalAlign) {
case 'top':
td.style.verticalAlign = 'bottom';
break;
case 'bottom':
td.style.verticalAlign = 'middle';
break;
case 'middle':
default:
td.style.verticalAlign = 'top';
break;
}
td.innerHTML = html;
}
その手のバグだと、確実に再描画させるためには、まずエレメント を親要素(td)からremoveして、verticalAlignを変更して、改めて 挿入するとかが必要そうな気がする。それでも駄目なら、remove してから cloneNode(true) でコピーしてからコピーしたものを 変更して挿入とか。
operaのバグ報告済が見れるフォーラムどこだっけ
216 :
209 :2010/02/07(日) 17:09:49 ID:???
greasemonkeyを介したjavascriptでは canvasのgetImageData()を使ったピクセル操作は出来ないようです。 多分セキュリティーの問題だと思われます。 回答を下さった210さんと211さん、ありがとうございました。
>213さん ありがとうございます。 簡単ですので、次回は、その手を使ってみようと思います。 >214さん 指摘の手を使って解決しました。 ほかのブラウザでは処理を通したくなかったので。 ありがとうございました。 ちなみにこんな感じです。 // opera再描画不良の対策 if( window.opera ) { myrow.removeChild(mycel); mycel2 = myrow.getElementsByTagName("td")[1]; myrow.insertBefore(mycel,mycel2); } mycel.style.visibility = "visible";
try-catchで、try内である条件の場合(≠エラー)にcatchに渡したいんだけど(アラート[1→3])、 なんか手っ取り早くこれはエラー!っていう宣言みたいなのできないかな? ↓でも動くんだけどスマートじゃないんだよね。 (test に入れる変数(testtest)は宣言してないもの=強制的にエラーにさせる。) try { alert('1'); if (0==0) { var test = testtest; } alert('2'); } catch(e) { alert('3'); }
セキュリティエラーなら null じゃなくて undefined だろ なんらかのコンソールで確認したんならそう書いとけ あとグリモンとか関係ない。same origin policy
a#id01 {background-color: #ff0000;} 相当のCSSの設定をJavaScriptで記述すると document.getElementById("id01").style.backgroundColor = "#ff0000"; となりますが a#id01:hover {background-color:#0000ff;} 相当のCSS設定(定義済みクラスの設定)をJavaScriptで記述するには どのようにしたらいいですか?
>>220 あぁそれが例外のやつだったのか。マジでありがとう。すっきりした!
document.styleSheets[0].insertRule('a#id01:hover {background-color:#0000ff;}'); かなぁ。あんまり自信ない。CSSにa.hoge:hover{background-color:#0000ff;}書いといて document.getElementById("id01").className+=' hoge'したほうがいいかも。
insertRuleの第二引数わすれてた。 document.styleSheets[0].insertRule('a#id01:hover {background-color:#0000ff;}', 0);
マウスオーバーイベントとかそういう話ではなく?
226 :
221 :2010/02/07(日) 23:46:01 ID:???
>>223-225 レスありがとう
JavaScriptで動的に生成したHTMLにCSS(HTML内容によって変わる)を設定したいので
document.getElementById("id01").style.hover.backgroundColor = "#0000ff";
みたいな書き方が出来ればなぁ・・・と
"a#id01:hover {background-color:#0000ff;}"自体を登録する方法ではこの文+styleタグを
innerHTMLでHTMLに挿入しても大差ないわけで・・・
疑似とはいえクラスはクラスだからね エレメントにつけるもんじゃない
228 :
203 :2010/02/08(月) 08:20:01 ID:???
>>204 >>205 お礼を言うのが遅くなりましたがありがとうございます!
おかげさまで上手く作用するようになりました!
try/catch/throwによる例外のトラップがイベントで呼ばれた場合に思ったとおりに動かない のですが何か上手い方法って無いですか?
>>229 試してみるのでサンプルコードをください
>>5 に
innerHTML vs DOM
ってあるんですが
innerHTMLってDOMのプロパティですよね?
身内同士で戦ってる気がするのですが
>>229 >>2 思ってることのほうが間違いだという場合も多い
try { callback = function() { throw } } catch() {}
とかやってるんじゃないの?
>>231 DOMの規格にinnerHTMLは存在しない
(標準規格に対して)邪道vs王道とでも読み替えてくれ
>>229 うまく行かない最小限のサンプルを作って貼る。嫌ならよそへ。
236 :
229 :2010/02/08(月) 13:39:34 ID:???
すいません <body> <input type="button" id="button01" value="Button"> <script type="text/javascript"> try { function click(event) { throw "click"; } } catch(e) { alert("Error: " + e); } // IEの場合はattachEventを使用 document.getElementById("button01").addEventListener("click", function(event){click(event);}, false); </script> </body> こんなかんじです。よろしくお願いします
それってclick関数動いてなくね?alertを使ってどれが動くのか確認。
あ、すげぇ勘違いしてた。 そのtry catchはページが読み込まれたときにしか動かない。 関数clickの定義は問題なくされるから、catchは動かない。 try catchは関数の中に入れないと、その関数のエラーを知りたいという意味でならダメ。 function click(){ try{ もとのclickの中身 } catch (e) { alert (e) } }
239 :
229 :2010/02/08(月) 14:23:21 ID:???
ありがとう。ダメなんか・・・(´・ω・`) 関数ごとにtry/catchを書くのは手間だしバグの元なんだよなぁ・・・
関数を渡すとその関数内での例外をcatchするラッパー関数を 作って返すような関数を用意する。addEventListener等は直接 呼ぶ替わりに関数をラップして登録する補助関数を経由して 登録する。
なんでbackground-colorとかハイフンつきのやつは styleのプロパティでbackgroundColorとかになってるの。
なんとなく
いわゆるキャメライズだね お偉いさんは らくだ好き
座標を与えられてエレメントを探す必要がありましたが、 elementFromPoint では frame の中まで見てくれないので、 以下の様な関数を作成しました(ブラウザは Mobile Safari)。 function findElementByPos(doc, x, y) { var obj = doc.elementFromPoint(x,y); if (obj.contentDocument) { var elem = obj; while (elem) { x -= elem.offsetX; y -= elem.offsetY; elem = elem.offsetParent; } var w = obj.contentWindow; x -= w.pageXOffset; y -= w.pageYOffset; return findElementByPos(obj.contentDocument, x, y); } return obj; } frame の中を見てくれるようにはなったのですが、x,yの調整が 上手くいかず間違った箇所の element を拾ってしまいす。 Javascript は殆ど始めてで勝手が分からないのですが、 frameset 中の frame の位置を求める一般的な方法はどんな感じなのでしょうか。
245 :
Name_Not_Found :2010/02/08(月) 16:16:18 ID:bfImhm1/
>>241 background = 2;
color = 1;
background-color == 1
的な事だと思てた。
Identifiersの定義上、element.style.background-colorがパース出来ないからだろ element.style["background-color"]にしなかった理由はしらん
そういやclassNameもそんな風に変えなくても element["class"] でいいわけだよね。
ブラウザの user js ならできると思うよ iframe の親からは無理
>>247 エラーにならないからってelement.classでアクセスするアホが大量発生するだろうな
>>249 ああ、自分個人で楽しむんならそれですむかもしれないですが、
一応サービスとして考えているので…
<A href="#" onClick="return false;">foo</A> と <A href="#" id="id01">foo</A> <script> document.getElementById("id01")..addEventListener("click", "return false;", false); </script> って動作が違うのね・・・('A`) 前者だとfooをクリックしてもページの上にジャンプしないけど 後者だとページの上にジャンプしちゃう・・・
>>252 addEventListner()の第2引数は文字列じゃあない。
横から
>>253 第二引数を「function(event){return false;}」とかにしても変化無いぞ?
>>254 そりゃそうだよ。addEventListener()に渡す関数では、返り値でデフォ
ルト動作をキャンセルするという仕様になってない。
つ preventDefault()
ほとんどのブラウザがW3C仕様のDOMで実装とありますが、 例えばgetElementByIdの機能を外すこともできるんですよね。 追加は独自仕様でいいのはわかるのですが、機能を外すのって なぜ仕様に反しないのですか。
>>256 getElementById が使えないブラウザっていまどきあるの?
ともかく、それが使えなければDOM lever2に非準拠ということ
は間違いない。
>>356 規格にあるのに未実装な部分があれば、それは規格に完全には準拠してい
ないということ。
DOMには適合基準がちゃんとある 思い込みでぐだぐだ言う前に読め
>>246-247 ・DHTMLの混乱とECMAScript策定難航から言語非依存のDOMが望まれた
(それゆえ言語依存の記号類は採用しづらかった)
・HTML属性がオブジェクトのプロパティとして露出するDOM0由来のものは
(結果的にオブジェクト上に定義されたメソッド・プロパティと衝突する可能性があるもの)
HTMLDOM、ElementCSSInlineStyle、CSS2Properties等としてコアから切り離しつつ
モジュールとしてブラウザでの互換性を確保した
・名前空間の仕組みを持たないOMG-IDL、JavaScriptのために命名規則が慎重だった
・style.setPropertyでも使っとけ
・E4Xでも使っとけ、ノードは生きてないがな
261 :
Name_Not_Found :2010/02/09(火) 11:55:07 ID:KSfYmMLA
あのー。 MM_preloadImages…の一連の処理に関して 質問があるのですが。 これってクライアントがメニュー画像を先読みして、 それ以降、メニュー上のマウス操作で 画像が切り替わっても、 先読みした画像を参照する つまり、サーバへはアクセスせず、 ブラウザが頑張って画像を切り替えてくれる。 というものではないのでしょうか。 パケットキャプチャーしてみると マウス操作(マウスオーバー等)毎に メニューの画像がサーバに要求されているようですが。。 ちなみに、レスポンスは304(Not Modified)です。
>>261 そのへんは UA 依存じゃない?
JS から明示的にキャッシュを利用することはできないし
あとロールオーバーは CSS のみでやればいいと思うんだけど
ページ内に<img src="〜" style="display:none;">で普通はキャッシュ出来るんじゃないの? あるいは、メニューの画像の通常・切替をつなげて、横or縦にスライドさせて切り替わったように見せかける。
264 :
Name_Not_Found :2010/02/09(火) 13:20:42 ID:KSfYmMLA
ということはソースは、自体問題ないって事ですね。 でも出来たら通信量は減らしたいですね。。 このプログラム、いけてないなあ。
イメージのプリロードとキャッシュくらい全部自分で書けば どうにでも制御できると思うけどな。
266 :
Name_Not_Found :2010/02/09(火) 18:20:32 ID:KSfYmMLA
ブラウザの設定を変更したら、 キャッシュにアクセスしてくれるようになりました。 いけてないのは、プログラムでなくて、私めでした。 なかなかやるなあ、このプログラム。
inputタグでjavascriptを使って、入力があったら(変化があったら)計算する というようなことをやってます。 <td><input size=3 maxlength=5 name="tekitou" id="tekitou0" value="100" OnChange="return tekitou();"></td> これはこれで使えるのですが、入力前(ロード時)にもこのtekitou()を動かすにはどうしたらいいでしょうか? ここをそのまま onLoad に変えても動きませんでした。 お助けください
イベントハンドラではなくてdocumentのロードが完了したときにそのフォームを対象に何かすればいいのでは
html5が勧告される前でも後でもいいですが、 javascriptでどんなことをしてみたいですか?
ユーザ定義関数でも array.join(', ') みたいにしてarrayを扱うようにできたらかっこいいなと思ったのですが どのようにしたらよいでしょうかよろしくおねがいします。 array = ['a','b','c']; _join(array, ', '); // a, b, c ↓こう書きたい array._join(', '); // a, b, c な感じです。
>>270 Arrayオブイジェクトのprototypeにメソッドを追加してやればいい
Array.prototype.join = function(){}
apply
>>271 それをやるとfor〜inが意とした動作をしてくれなかった気がする
for (let [i, v] in Iterator(array));
いまだArrayにfor-inとか言ってるのか
location.href="
http://2ch.net/ ";
alert(document.body.innerHTML);
とすると移動後のサイトの内容ではなく移動前のサイトの内容が表示されてしまいます。
location.hrefで移動した後の内容を取得するにはどうすればいいのでしょうか。
jQueryのeveryTimeを使いたかったのですが動かせませんでした。 htmlに <textarea> と <div> タグは用意しています。 どうかけば、2個目のalertを呼び出せるでしょうか? $(function() { $("textarea").text("test"); alert("呼び出されてる"); $(document).everyTime(1000, 'timer', function(){ alert("呼び出されてない"); }); });
>>276 location.hrefに代入した時点で画面遷移するから当然
ん?逆じゃね?
>>276 ページ変移したあとにも前のページのスクリプト実行が続くなら
ページ変移先にあるスクリプトと干渉して困ることになるとは思わないか?
>>277 エラー文はなに?プラグイン入れた?
>>280-281 プラグインだったんですね。
ありがとうございます、次回から気をつけさせて頂きます。
プラグインを入れれば動きました。
283 :
Name_Not_Found :2010/02/10(水) 17:16:12 ID:TONjo24G
IE以外でもクリップボードにコピーを実現したく検索したところ、 「ZeroClipboard」というライブラリを発見し、 サンプルを試したのですが、動作しません。 サンプルを設置しているブログなどでも上手く動作しません。 しかし、このライブラリを利用しているWebサイト(はてなブックマーク)などはちゃんと動作しています。 なにが原因なのでしょうか?
何か別のライブラリが必要だとか? flash使ってクリップボードにコピーするのもあったはず。setClipboard.js
設置ミスだろうね。 使うのはZeroClipboard.jsとZeroClipboard.swf パスが間違えてるとか ZeroClipboard.jsの中の moviePath: 'ZeroClipboard.swf',
286 :
283 :2010/02/10(水) 17:48:43 ID:TONjo24G
>>284 特に別のライブラリが必要とは明記されていませんでした。
setClipboard.jsというのは初めて知りました!
ZeroClipboardがダメだったら試してみたいと思います
>>285 moviePathもちゃんと設定してるんですけどねぇ
ローカルだとダメなんてことはあり得るでしょうか?
>ローカル
>setClipboard.js 薦めておいてなんなんだけど、今試したら、クロム・firefoxで動かんかった。 2007年に作られているからかな、swf部分が動かんかった。普段IEだからいつから使えなくなったか分からないや・・ あと、ZeroClipboardもflash使って同じようにクリップボード操作やってるね。
location.hrefに値をセットする方法ってあんまりよくないんですか? 移動先が閲覧者にわかりにくくなるから閲覧者に嫌われる方法なのかな、みたいな。 かわりに何か別の方法とか使うんですか?
普通にa要素
>>288 俺もsetClipboard.js利用してたけど
今試したら動かなくなってた
いつ使えなくなってたんだろうな
>>290 最近
<a href="javascript:location.href='〜'"
とか
onclick="location.href='〜'"
とか以前ほどは見かけなくなった気がしますが
やっぱり古いよくない方法なんでしょうか?
値を動的に渡したい場合とかは
>>287 どした? 別に変な使い方はされてないぞ。
a要素で済む場合はSEO対策とかJavascriptが利用できない環境に配慮してとかの理由で location.hrefを使わないだけであって、 Javascript内でlocation.hrefに変わるいい方法があるわけではない、ってことですか
296 :
Name_Not_Found :2010/02/10(水) 20:25:38 ID:wP/n7eEQ
質問です。HPを作っています。ブラウザの切り分けをどうしたらよい のかわかりません。判別コードは分かるのですが、何を拾って対応し たらよいのか迷っています。IEでは4とか5.5は相手にしなくてよいの でしょうか。NN4.7はもう博物館ですか?基準がわかりません。 よきアドバイスをお願いします。
>>295 逆に以前の状況が異常だったんじゃない?
HTMLがわからなくて適当にコピペしてページ作る人が多くて
今はブログとかがあるから、そっちを利用してるのでは
298 :
Name_Not_Found :2010/02/10(水) 20:38:02 ID:jHW8bdqx
>>296 セキュリティアップデートが終了したブラウザは無視していいと思う
相手にするのは、IE6, 7, 8, Firefox3.5, 3.6, Opera, Safari, Chrome かな
>>295 状況にもよるが、リンク先を動的に変更する場合は onclick で location.href を使うほうがポピュラーではある
a hrefにはリンクが設定されていたほうがメリットは多いからね
>
>>283 のも10はサポートされてない。
>Flash Player 9 is also supported.
ごめん。取り消し。対応されてたわ。also を onlyって読んでたorz
303 :
296 :2010/02/10(水) 23:13:50 ID:???
304 :
Name_Not_Found :2010/02/10(水) 23:16:40 ID:vhy4rub8
jsファイルを5個読み込んでいます。 BODYタグのonLoadでjsファイル内のライブラリを使用しています。 質問ですが、onloadイベントはHTML内d読み込んでいるJSファイルが、 完全に取り込まれてから、イベントが発生するのでしょうか? それとも、JSファイルの読み込み状態にかかわらずHTMLが読み込まれた時点で発生するのでしょうか?
ぐぐればそれぐらいでるよ ググって得た情報→onloadは画面の表示が終わったタイミング。 俺の記憶→jsファイルは書かれた時点で読み込まれて、完了しないと次にいけない。jsファイル内にsettimeout書いてbodyの中程に入れたらわかるとおもう。 jsファイルを</body>の直前において、 各jsファイル内で今onloadに指定しているモノを動かし始めればいいんじゃね。
>>305 setTimeoutを勘違いしてないか?
まさか
>>305 さんがそんな初歩的な間違いをする訳ないじゃないですかー。
IE の MSXML2.ServerXMLHTTP の setTimeouts のことを言ってるんですyo!
んなもんできたって偉くないやい! :(
役に立ちそうなら日本語化よろ 解説付きでね
document.writeとかでscript要素を書き出すときに "<scr" + "ipt" みたいに区切っているのを見かけるのですがこれにはどんな意味があるのでしょうか
Function.argumentは非推奨らしいですが、 関数の外部からargumentsオブジェクトを参照したいときって 他に何か方法があるのでしょうか。
>>311 HTML中に一緒にJavaScriptを書く場合、JavaScriptプログラム
の文字リテラル中であってもHTMLタグに見えるものがHTMLとして
処理されてしまうことがあるので(とくに <script> と </srcipt>),
これを避けるための処置。
>>308 2と9がタグテスターでやった答えと違うんだけどなんでだろ。IEのせいかな。
タグテスターだと2="number",9=“1function” になるんだけどな
番号は振ってあるけど(ol タグ) Opera, WebKit だと表示されない。 多分、div の終了タグがないせい。
#6のthisはwindowじゃなくてargumentsオブジェクトなのか
他の画面へ遷移しようとした際、 もし、画面上のテキストボックスや、プルダウンの値が変更されている場合 確認ダイアログを出したいのですが、 どのような方法で実装するのがスマート? 今思いついているのは、 1)全てのコンポーネントのochangeイベントを拾って 一度も実行されたらflagをfalseからtrueへ変更 2)画面遷移時に、flagをチェックしtrueならダイアログ表示 ぐらいです。
321 :
Name_Not_Found :2010/02/11(木) 17:46:47 ID:iSf5Iat7
jqueryのMITライセンスって ライセンス表記をJqueryのファイルから消去しなければいいのでしょうか? それとも、それを利用したアプリケーションに、 このアプリケーションはqueryを使っていますと表記がいるのでしょうか?
はいそおうです
>>319 obj.f()
obj["f"]()
ary[0]()
ary["0"]()
//ary.0()
ドットとブラケットのどちらもプロパティアクセサで
ドット演算子は文法的な制約の付いたシンタックスシュガー
324 :
Name_Not_Found :2010/02/11(木) 18:32:37 ID:iSf5Iat7
326 :
Name_Not_Found :2010/02/11(木) 19:08:02 ID:iSf5Iat7
327 :
Name_Not_Found :2010/02/11(木) 21:55:44 ID:3LJfURDf
form内容をsubmitするときに 変更がない項目は上げたくないんだがそういうのjavascriptでできますか。
できます
329 :
Name_Not_Found :2010/02/11(木) 21:59:32 ID:3LJfURDf
なんかヒントをください!!
「変更がない」の定義は? 変更される前の値を全部覚えておくのか、 onchangeで変更された項目を把握するのか。 後者だった場合、2度の変更で元に戻したのは変更扱いなのか。 等々。
331 :
Name_Not_Found :2010/02/11(木) 23:02:33 ID:3LJfURDf
変更があるないは全部値を覚えておく方式でやります。 でsubmitするときに、変更のない項目を削りたいのです。
出来たも同然じゃないか
そうだな。 おめでとう。 おめでとう。
今の値とhiddenの値をsubmitして、サーバ側で比較するしかないのでは? formの内容をsubmitしないようにはできないはず。 サーバ側には絶対にデータがいくので、サーバ側で判断するしかない。
>>331 334が言うように、フォームは定格と考えるべき。
DOMを利用して要素(データ)を削ることも可能だが、それなら
AJAX使えという話になる。
何で非同期通信までせにゃあかんのだ?
337 :
Name_Not_Found :2010/02/12(金) 00:20:18 ID:mY3Peq0F
みなさんサンキューです。 >334 サーバ側で判断するのが面倒だったのです。 >335 実はそのDOMを利用して要素を削りたかったりします。
>>334 disabled にすれば、そのコントロールの値は送信されないのでは?
>>337 ブラウザ側で処理できるとしても、サーバ側でのチェックを省略
するのは危険。ブラウザ側はどのようにでも改変される危険性が
あるから。何かされておかしくなっても構わないというのなら別だが。
//if(!window.test) var test = {}; var test.obj = function(str){if(str) return str;}; alert(test.obj('ok')); DOMのwindowにtestがなければ、空のtestオブジェクトを定義してから、 test.objメソッドを使う、ということをやってみました。 コメントアウトを外した状態だとokをalertしてくれましたが、 コメントアウトした状態でだと、 test is not defined になりました(FireBug)。 これはPrototype.js1.5.1.1の1290行目からを参考にしてみたんですが、 1290行目の、 if (!window.Element) var Element = {}; をコメントアウトしても、エラーはでません。 Elementがどこで定義されているのかと思い var Element = や 'Element' で検索をかけてみたものの、それらしいものはありませんでした。 なぜエラーがでないのか、などアドバイスくださいよろしくおねがいします。
>>343 ElementオブジェクトはPrototype.jsがなくても定義されているものだからですよ
345 :
Name_Not_Found :2010/02/12(金) 14:24:48 ID:rqDW1riO
フォームの内容をJSで拾ってGETメソッドでサーバーに渡せば
渡す項目を制御できるが、そんなことするより全部サーバーに転送して
サーバー側で取捨選択するのが正当って感じがする。
>>338 disabledやread-onlyって変更が出来ないだけでデータは送信されるのでは?
あとはdisplay="none"とかvisibility="hidden"とかくらいしか思いつかんが
両方とも見えなくするだけだから、結局フォームの内容は送信されるっぽい
やはりGETで渡すのが一番簡単な希ガス
346 :
Name_Not_Found :2010/02/12(金) 14:25:58 ID:rqDW1riO
>>342 同意。
HTTPリクエストの内容なんていくらでも改竄出来るから
絶対サーバー側でチェックすべき
省略してもしなくてもセキュリティ的にはさほど変わらないような気がする
>>344 なるほど・・
Prototype.js切って
Elementでログとったら定義されてるのがわかりました・・
すっきりしましたありがとうございました。
WebKitではdisabledのときとname属性がないときはデータがおくられな いです。
>>349 あらゆるブラウザで試すとか大変すぎ。
disabledの時に送られないというのはHTMLの仕様だから。
MDCのCore JavaScript Referenceでオブジェクトリテラルって どこにかかれているのでしょうか。 Global_ObjectのArrayの配列リテラル[]のような感じで {}もどこかにあるのかなと思ったんですが・・
352 :
Name_Not_Found :2010/02/12(金) 15:37:46 ID:rqDW1riO
>>349 確かにformの内容はnameで判断してるから
name属性をjsで消しちゃうのは一つの方法かもね
>>350 そうなのか、参考になった。トンクス
353 :
351 :2010/02/12(金) 15:51:33 ID:???
ふと思ったのですが var o = {}; と var o_f = function(){}; new o_f(); は同じ意ですか?
コンストラクタと、それに伴うものが違う。
文字列は配列のように扱うことが出来るけど配列のように参照渡しになる?
>>356 Stringの関数よく見ればわかるだろうけど、気にしようがないから気にすんな
したけりゃStringオブジェクトにでもしろ
ねーよ。破壊的なメソッドがねーんだよ {value: 'foo'} を渡して value を読み書きしろ
Stringはimmutableだから参照渡しでも値渡しでも変わらないのでは?
>>312 >関数の外部からargumentsオブジェクトを参照したい
こんな発想自体が非推奨なんだろ
クソ設計関数をハックするか、どうしてもプロファイルをとるときくらいしか思いつかん
363 :
Name_Not_Found :2010/02/13(土) 20:33:49 ID:MFDFoPk2
jquery(1.4)に関する質問です。 初期状態が height: 50px の <p> を、 height: 100% , height: 50% で伸縮させたいのですが 100% に拡がる際に、アニメーションせずに一瞬で拡がってしまいます。 $(#'button').toggle(function(){ $('p').animate({height: 100%}, 500); },function(){ $('p').animate({height: '50px'}, 500); }); height: 100% と言う指定の仕方がまずいのでしょうか……。 初期状態の <p> の height を取得して、 その値を 100% の箇所に入れようとした場合には どのような記述しようがあるでしょうか? ご存知の方、ご教授ください。
var o = {height: 100%}; // SyntaxError: Unexpected token } 知らないけど文字列で渡すんじゃないの?
javascriptの開発環境って何使ってますか?_ Aptanaがいい?
メモ帳
うそ乙
js2-modeがなかなか良かった 重いけど
十分だろ
Java Scriptでテキストボックスの変数を未入力、半角スペースのみ、全角スペースのみ でチェックしてそうなら処理中止というif分を書きたいのですが未入力しか判別してくれません var input;//テキストボックスの値を持った変数 if(input == "" || input == "[ ]+" || input == [ ]+){ 〜〜〜 } まだJava Scriptになれていなく文法がよくわかりません、どなたか助けて下さい。
みんなエディター何使ってる??
Gedit
JmEditor Ver 2.025-k-5
正規表現を知っているからといって慢心してはならない。
こんなスレにまでeigodoo1ネタが。
jmeditorにしますた。
質問です。 tableのある2つのtd要素を入れ替えたいです。 replaceChildは使えません。同じ行でない場合はもちろん・同じ行だと要素が消えました。 現状片方のinnerHTMLを変数に代入→入れ替え→一つに変数を戻す。という形でやっていますが、 いかんせん重いのです。そこで、innerHTMLが重いのではないかと考え、DOM要素ごと入れ替えようと思ったのですが、 .innerHTMLを消すと動かなくなります。(appendChildは要素の位置が不定なので無理です。) 親要素が違う場合、子要素の入れ替えはinnerHTML以外無いのでしょうか?
お前がへたくそなだけだろ つかコードくらい書けよ
381 :
379 :2010/02/14(日) 20:16:40 ID:???
簡易の為にprototype.jsのエレメント取得も <script type="text/javascript"> var $ = function (B) {return document.getElementById(B);} //$('test1') = $('test2');//動かない $('test1').innerHTML = $('test2').innerHTML; </script> <table><tbody><tr> <td id="test1">test1</td> <td id="test2">test2</td> </tr></tbody></table> コメントアウトしてある方の感じで、要素の属性から中身まで全部を入れ替えたいのです。(replaceChildは親要素が違う可能性があるので無理です)
じゃあcloneNodeは?
>>381 replaceChild()でもできるはずだけどな。
//直下の子が1ノードだけのときはこれでOK
var test1 = $('test1');
var test2 = $('test2');
var child1 = test1.firstChild;
var child2 = test2.firstChild;
test1.replaceChild(child1, child2);
test2.appendChild(child1);
>>381 直下の子が複数ノードの場合はこんなかんじ。
var test1 = $('test1');
var test2 = $('test2');
var child1 = test1.firstChild;
var first1 = child1
// test1の子供をtest2に追加
while (child1) {
var next = child1.nextSibling;
test2.appendChild(child1);
child1 = next;
}
// test2の子供を、上で足したものの直前まで移動
var child2 = test2.firstChild;
while (child2 != first1) {
var next = child2.nextSibling;
test1.appendChild(child2);
child2 = next;
}
直下の要素はソースで2つ有ります。(関係ないですがDom情報で、tridentでは2つ、gecko,webkitでは5つぐらいに認識されます・・なぜ・・・) test1.re〜のところで、NOT_FOUND_ERR: DOM Exception 8となります。。 いまさらなのですが、DOM要素での入れ替え(出来る場合)とinnerHTMLでの入れ替えがほぼ同じスピードならinnerHTMLでも問題ないのですが、どうなんでしょう?
var d = document; var c1 = d.getElementById('test1'); var c2 = d.getElementById('test2'); var r1 = c1.parentNode; var r2 = c2.parentNode; var c1f = r1.cells[c1.cellIndex + 1]; r2.replaceChild(c1, c2); r1.insertBefore(c2, (c1f === c2) ? c1 : c1f); innerHTMLやcloneNodeはEventListenerやUserData等を保持しない
おぉ! 素晴らしいです!ありがとうございました。 最後にひとつだけ、innerHTMLが問題なのはわかったのですが、速度はどちらの方が早いのでしょう?
知らん 5年前のMozillaならinnerHTMLが正気の沙汰でない重さだったが今は改善されている innerHTMLの方が速いと言う人もいるがinnerHTMLは再描画のキュー待ちになるのに対し DOMはそのつど再描画が走ることが多いから必ずしもフェアな比較でない どちらにせよ大切なのは再描画を最小限に抑えること また意識すべきはユーザの体感速度であって必ずしも実速度でない 速度より重要なのは一つのDOM木を大勢で喰い散らかしている現実への対処 例えば379の同僚がセル内に仕掛けたEventListenerを379がinnerHTMLで消してしまっては話にならない グローバル変数は毛嫌いするのにこういう部分には無頓着な人が多い
innerHTMLでイベント全部消していく横暴なプログラムはやめてくれ せめてnodeValue書き換えて
390 :
Name_Not_Found :2010/02/15(月) 10:36:49 ID:2vRSqfnQ
「XXX文字列XXX文字列XXX文字列」 と並んだ値を「XXX文字列」 ×3として取り出したいです XXXは数値3桁で、文字列は何文字かは分かりません 正規表現を使うのは分かるのですが… ご教授願います
その文字列に数字は入るのか。 入らないなら楽。
>>390 具体的な例を上げた方が早いよ。日本語じゃわかりづらい
どういう入力があったときにこういう出力が欲しいっての書かないと。
あと正規表現でここまでできたとか。
393 :
390 :2010/02/15(月) 12:01:52 ID:???
>>391 文字列に数値は入りません
>>392 xarray[0] = Field.value.match(/[0-9][0-9][0-9]/g);
//(以下同様)
みたいな感じです
数字が入らないなら /(\d{3}[^0-9]+)/ で。
395 :
Name_Not_Found :2010/02/15(月) 12:50:38 ID:2vRSqfnQ
>>394 ご教授ありがとうございます
これは1つ目だけを取得するやり方でしょうか?
試行してみましたが下記の様になりました
//xarrayは(3)で
xarray[0] = Field.value.match(/(\d{3}[^0-9]+)/);
//(以下同様)
で取れる値が
[0]はXXX文字列1
[1]もXXX文字列1
[2]はundefined
396 :
395 :2010/02/15(月) 12:53:55 ID:???
すいません! gオプション付与で上手くいきました 失礼しました sage忘れもすいませんでした
これはひどいオナニー文章
なんだ宣伝か
>>397 なんかこういうの読んでる人って勝間和代とか茂木健一郎とか好きそう。
エスパー的回答しないためのサンプルコードだってのに今さら何を言ってるの
>>2 読めよ
>>401 スレチだけど面白いな。
アドバイスに「あきらめずにむずかしい本を読む」なんてのがあるw
Q. どうしても数学が分かりません。よい勉強法はないのでしょうか?
A. 寝言言ってる暇があるならその分勉強すればOK
みたいなww
「〜のための〜個の法則」みたいなタイトルが頭悪く思えてしかたない はやりなの?死ぬの?
新書で売れるタイトルの雛形みたいな
今更だが
>>2 削除するかもっと推敲しようぜ
なんか気持ち悪い
正直スペースが無くて黒いから読む気が起きないな。
バルーン系のAAを織り交ぜて面白おかしくしろってか?
410 :
Name_Not_Found :2010/02/15(月) 21:04:36 ID:gMEpj+ZC
>>404 「冬季五輪を100倍楽しく見る方法」みたいなタイトルは結構好きです。
411 :
Name_Not_Found :2010/02/15(月) 21:27:49 ID:gMEpj+ZC
>>409 頑張ってみた。ぜんぜんまとまらん。
【質問を書く上で】
1)「何を、いつ、誰が、どこに、なぜ、どのように」動作させたいのかを
簡潔に説明してください。ただ「動きません」ではわかりません。
脳内おれおれ用語は混乱のもと。一般的な用語を使うようにしてください。
2)調べたこと・試したことを書いてください。
OS、ブラウザ、バージョンを必ず明記しましょう。
質問箇所(行数、エラー内容)を簡潔に。
何のエラーかわからなければ、エラーメセージをコピペ。
IE8、Firefox、SafariのJavaScriptコンソールを活用しよう。
3)説明が困難なら、ソースを貼ってください(要点を整理して)。
コピペだけで動くと試しやすいです。
エラーの場合は再現可能なように。
長い場合(1レス以上)はアップロードする等工夫を。
4)閲覧者の迷惑になる質問は回答されません。
別窓を多数開く、閉じる・戻る・クリックを妨害、画面占有、など。
「分かんねえの?」と煽っても無駄です。
5)「初心者なので」「初心者だから」「初心者ですみません」とか
書かない方が無難です。
知らない、できない、わからない、まちがい、は誰にでもありますから。
もういっそ振込用紙の記入例みたいに 質問例を書いて、その中で注意事項を補足する形にしろ その代わりフォーマットに従わない質問は問答無用で棄却
教えたがり君が湧いてくるので無理です
今更だけど過去スレ全集に前スレアップしておいたよ
>>411 大分よくなったと思う
次からこれでよくね
417 :
Name_Not_Found :2010/02/17(水) 16:03:18 ID:HgUemJft
あげ
418 :
411 :2010/02/17(水) 16:58:08 ID:tBAS4JjV
>>415 まだ先は長いので、推敲してもらいたいです。
直してみたけどどうかな。 【質問を書く上で】 1)「どんな意図で/何を/どう」操作した場合「どのように」動作させた いのかを、一般的な用語で簡潔に説明してください。ただ「動きませ ん」ではわかりません。脳内オレオレ用語は混乱のもと。 2)自力で調べたこと/試したことを明記のこと。OS、ブラウザ(+バージョ ン)、(あれば)エラーの行と内容を必ず書きましょう。エラーの行と内 容を見るのはIE8、Firefox、SafariのJavaScriptコンソールで。 3)説明が困難ならソースを貼ってください(最小限に整理して)。コピペ だけで動くと試しやすいです。エラーの場合は再現可能なように。長 い(1レスで入らない)場合はアップロードする等工夫を。 4)閲覧者の迷惑になる質問は回答されません。別窓を多数開く、閉じる /戻る/クリックを妨害、画面占有、など。「分かんねえの?」と煽って も無駄です。 5)「初心者なので」とか書かない方が無難です。自分で書く努力をする 人を対象としたスレなので、何もしない言い訳に見えて嫌われます。
イ) 現状、環境をはっきり説明しろ! ロ) 最小限のソースを貼れ!長いならエラー部分を特定しろ! ハ) 迷惑なスクリプトは教えねえ! 二) 初心者だ?もっと他に書くことあるだろ!
イ ) 現状、環境をはっきり説明しろ! ロ ) 最小限のソースを貼れ!長いならエラー部分を特定しろ! ハ ) 迷惑なスクリプトは教えねえ! 二 ) 初心者だ?もっと他に書くことあるだろ!
すまん、訳がわからんが2度登校されてしまった
ソースはmayよりもshouldがいい 3)質問に関するソースコードを出来る限り貼ってください。 余分が少なく、コピペだけで動作やエラー再現のできるものが理想です。 長い(1レスで入らない)場合はアップロードする等工夫を。
424 :
421 :2010/02/17(水) 18:02:06 ID:???
何度やってもsetTimeoutとsetIntervalが完全に理解出来無いんですけど、 プログラムの途中にwait(1000)等と書くと 一秒間待った後に次の 行に移行する。というのはそもそも可能なのでしょうか。 色々試しましたがもうできる気がしません・・ もしかしてこれらの関数はプログラムが完全に読まれてから 実行されているのでしょうか。
>>425 そもそも不可能。ブラウザ上のJavaScriptにはスレッドが
無く、実行を止めたらすべての応答が止まってしまうから。
普通の人はsetTimeout()で「続き」を別の関数として実行する
ようにプログラム構造を工夫する。その能力がなくてアンタのいう
wait()がないと書けないのならJavaScriptを使うのをあきらめる。
whileとかで現在時刻+1s後まで次の作業へ行かないってのはできないかな。 PCが大変になりそうだけど。
var d = new Date().getTime(); while (1) if (new Date().getTime() - d > 1000) break; ブラウザが思いっきり固まります。
430 :
Name_Not_Found :2010/02/18(木) 13:29:55 ID:Hc75qmfr
引数に関数をとって、呼び出されると
前処理をしてからその関数を実行する処理を書きたいので
まず、単純にalert(); を呼び出すだけのものを作りたかったのですが
いきなりつまづいてしまいました。
http://www.asagaotv.ne.jp/~kawasaki/js/jscriptf.html#functioncall を見ながら、書いてみましたが動かせませんでした。
何かアドバイス頂けないでしょうか。。。
$.fn.extend({
callFunction: function(fn) {
fn.call(this);
}
});
$(function(){
$("div").callFunction(function(){
alert();
});
});
//jQueryのライブラリは読み込んでいます。
>>426 Javascript1.7以降でマルチタスクっぽいことは出来るようになってるけど
>>431 それで動くけどなぁ
エラー文なり結果なりの「動かない」と判断した理由も書いてほしい
divがないとかそういうオチ?
434 :
431 :2010/02/18(木) 16:00:48 ID:???
「alert(); と alert(""); は同じ動作になる、と勘違いしてた」 がオチでした... 呼び出し方に全く自信がなかったので、 そこばかり疑ってしまっていました。 確認ありがとうございます。
質問させてください。 ひとつのページにAとB2つの印刷ボタンを配置します。 ボタンAを押した場合はページ上半分のみを印刷、 ボタンBを押した場合はページ下半分のみを印刷 というようにボタンによって印刷内容(印刷用css) を切り替えたいと考えております。 どのような方法が考えられるでしょうか? 参考になるページなどありましたら助かります。 ヒントだけでも結構なので お詳しい方、ご教授よろしくお願いします。
ボタンが押されたら、印刷したくない方をdisplay:noneかhiddenにするとか。
質問いたします。 shadowboxでflvを再生したいのですが、表示できません。 画面が暗転し、白枠は出てくるのですがそこまでです。 wmvは再生できました。 そこで、ぐぐって調べてみたのですが、元のshadowbox配布サイトでダウンロードしてみた所、 明らかに足りないファイルのみダウンできてしまいます。 サイロの内容が変わってしまったのでしょうか?
牧草かっ。
hoge = document.getElementById("hoge").value; <input id="hoge" type="text" /> これ、IEだとエラーが出るの何故? id="hoge"と、グローバル変数hogeを混同?
alert(hoge === document.getElementById("hoge")); をIEでして見なよ
「オブジェクトでサポートされていないプロパティまたはメソッドです。」 だってさ。アフォか!
443 :
435 :2010/02/18(木) 20:07:56 ID:???
先ほど印刷方法について質問させていただいた者です。 以下の方法にて問題が解決したので、一応報告させていただきます。 <html> <head> <style media="print"> .Printable { display: block; } .Unprintable { display: none; } </style> </head> <body> <div id="PrintAreaA"> <p>AAAAAAAAA</p> </div> <div id="PrintAreaB"> <p>BBBBBBBBB</p> </div> <input type="button" value="print A" onclick="document.getElementById('PrintAreaA').className='Printable'; document.getElementById('PrintAreaB').className='Unprintable'; window.print();"> <input type="button" value="print B" onclick="document.getElementById('PrintAreaB').className='Printable'; document.getElementById('PrintAreaA').className='Unprintable'; window.print();"> </body> </html> スレ汚し申し訳ありません。
そもそも「オブジェクトでサポートされていない・・・」って日本語が ヘンだお
445 :
Name_Not_Found :2010/02/18(木) 20:21:43 ID:TIu/P3on
index.htmlのjavascript内で、jsonファイル(data.js)を読み込み index.htmlのfunction loadjson(a)関数に data.jsJSONフィールドを引き渡したいのですがどのようすれば実現できますか? ご教示お願いします
ググれば実現できます。
447 :
Name_Not_Found :2010/02/18(木) 20:49:16 ID:TIu/P3on
>>446 ググるのが面倒でしたので、HTML内のscriptスコープにてそのまま変数にぶち込みました。
スクリプトごときでググればなんていうなよ^^
スクリプト厨風情がアセンブリ厨に勝てると思ってんの?
Webプログラマなんてものは専門卒の巣窟だよね?
俺には数々の企業サイトを作った実績がある(キリッとかもう本当いいよ
実績より学歴のほうが遥かに価値がある。それを低学歴の人に理解させるには膨大な時間を要するんだよね。
あーあー、
>>446 って本当に気持ち悪いなぁー
気持ち悪い気持ち悪い
449 :
Name_Not_Found :2010/02/18(木) 21:34:24 ID:u7HqUE8i
↓のようにリンクを貼ってます。
document.write('<a href="
http://xxxx.xx/xxxx ">リンク</a>');
リンク先では認証を求められます。
リンク先で認証後、再び同じページに戻ってくるように出来ますか?
ページ変移したら制御以前に実行環境が初期化されるから基本的に無理 リンク先をiframeで表示すればそれっぽいことはできるだろうけど 特に別ドメインなら認証を検知するのは厳しい
>>439 ,442
ということは、documentオブジェクトにgetElementByIdがないか、
document.getElementById()の結果のオブジェクトにvalueがないんだろ
う。
id="hoge"の要素が複数あって、意図したものとは違う要素でも取れてい
るんじゃないの?
>> 452 いや、解決は至って単純で、 hogehoge = document.getElementById("hoge").value; <input id="hoge" type="text" /> とすればエラーが出なくなるんだわ。 「hoge =」→「hogehoge =」…つまり、id名と変数名を重複しなければ良いってだけ。 実際にいろいろなブラウザで動かしてみるとわかるよ。エラーになるのIEだけだから。 IE6はもちろん、最新のIE8でもエラーになるから認識してないっぽい。 あ、ちなみに、 var hoge = document.getElementById("hoge").value; <input id="hoge" type="text" /> と、varを付けてローカル変数にすればエラーにならない。w ほんと、IEだけは消えてなくなってほしいわ…。
IEがdocument.hogeでdocument.getElementById('hoge')なのは結構有名だと思ったけど。 でもまあIEに限らずHTML内の名前はグローバルと思って設計したほうが安全だよ。
455 :
Name_Not_Found :2010/02/18(木) 23:09:11 ID:N5/Ey8lL
Prototype.jsを客先の社内システムに組み込もうと思っているのですが 著作権的には問題ないのでしょうか?
んなこたあ法律相談板で訊け
バカ自慢はいいからIEより先にお前が消えた方がいいよ
>>453 hoge = "";
<input id="hoge" type="text" />
これなら仕様ということで納得できる?
IE6の糞仕様に悩まされる毎日だけどこれは知らなかった。 グローバル変数使うときはwindowsオブジェクトあたりに連装配列で入れるよね?
ver hoge; でいいだろ。 立派なグローバル変数だ。
IE6ってまだ切れないの?
切れる、切れないの問題じゃない。 切っていくべきなんだ。
IE の id と名前空間絡みの話だけど、変数名との衝突だけでなく、メソッド名ともぶつかった気がする。 確か id に "submit" を持つ要素が存在すると、submit() を呼び出せなかった様な。 もう、おねむだから確認はしないけど。
464 :
○~* :2010/02/19(金) 02:22:56 ID:yqaEbREM
記録と読み出し以外は すべて js で処理する掲示板を作ってます. (js に こだわる理由は改造のしやすさと負担の分散) 現在は form に tsv データをぶち込んで js に読み取らせる方式. これには欠点があって cgi によるタグ無効化処理を無効化する作用が... (<, > などが勝手に復元されてしまう) (今は cgi 側では無視して js 側で無効化) 他に考えられる読み込み方式は Ajax. こちらで問題となるのが IE. セキュリティーホールとして有名な ActiveX を ON にする必要があるとか. IE も ver. 8 がでてるらしいですが, この辺の事情は変わってないのかしらん ? (7,8 となってもワケワカメナ IE, いっそ, バッサリ...)
>>462 あとあれだな
イベント関連とかIEでは使えて他で使えないとか
もうコンピューター上で無いと困るくらいの存在になってるブラウザなのに
そういう差違があるのはいただけないわ
連装配列… なんか強そうだ
>>464 そんなことをするやつは大概javascriptも切ってるんだから
気にするならjavascriptなしでもある程度読めるようにしとけ
そうしたらDOMからデータ読めるようになって一石二鳥だ
469 :
Name_Not_Found :2010/02/19(金) 16:37:40 ID:4sngj6D8
>>467 IE6のサポートを終了します、ってひとこと言ってくれれば済むのに。
んで、こっそりとIE6を攻撃するものをゴニョゴニョすれば。
>>464 お前のエスケープのやり方が間違っている
未だにIE6をリプレースできないシステムも多いから 迂闊にサポート切れんだろう、韓国とか MSもここまで開発者が馬鹿だと大変だな
>>469 XP のサポート期間がまだ残ってるので
標準ブラウザの IE6 もまだサポートしなきゃいけない
MS 自身も早く 7 か 8 に移ってほしいと思ってるが
ビジネス上の約束を違えるわけにはいかない
473 :
464 :2010/02/19(金) 17:47:46 ID:REqSB4kI
>>488 お返事, ありがとうございます.
>そんなことをするやつは
"ActiveX OFF に してる やつ" って意味っすか ?
>javascriptなしでもある程度読めるようにしとけ
そんな妙案があるのなら教えて欲しいっす.
(cgi で すべて処理というのは却下)
>DOMからデータ読めるようになって一石二鳥だ
そうなると Ajax は option から外れるのでは ?
残されるのは form の利用 (<- つまり, 振り出しに〜)
もしくは innerHTML.
他に何かある ?
474 :
464 :2010/02/19(金) 17:50:45 ID:REqSB4kI
475 :
464 :2010/02/19(金) 17:57:22 ID:REqSB4kI
>>470 >エスケープのやり方が間違っている
具体的にどういうことでしょうか ?
(bug-bug だらけだったことは否定の余地なしですが,
発見できた部分は修正してます)
><, > などが勝手に復元されてしまう まずこれを説明してみろ JSでデータをいじるのにCGI側でエスケープするのがまずありえないんだが(今はやめたらしいが) お前が馬鹿なことをしてない限りこんなことになることもない
477 :
464 :2010/02/19(金) 18:44:33 ID:REqSB4kI
>>476 無視しないで くれてありがとう !
>まずこれを説明してみろ
説明よりも まず, 体験してもらったほうが良いかも ???
ttp://homepage2.nifty.com/alter/bbs/ ・ 記事番号をクリックすると編集モードになり, いろいろ遊べる... (はず...)
・ bookmarklet (form の中身が確認できる (はず...)):
javascript:var tg=document.getElementById('depo');tg.cols=90;tg.rows=20;tg.parentNode.style.display='';void(0)
・perl script でやってる処理:
・ 改行コードは すべて VT(VerticalTab) に置き換え.
sub filter{
my $u=$_[0];
$u=~s/"/"/g;
$u=~s/'/'/g;
$u=~s/\r\n//g;
$u=~s/\r//g;
$u=~s/\n//g;
return $u;
}
それ復元されてるんじゃなくて、表示が <, > だって言いたいんじゃない? <, > と表示されてるんだったら復元されてない。まず HTML から勉強しよう。 <, > と表示させたいんだったら、<, > だ。
&lt;
2ch めんどくさいな・・・ <, > と表示させたいんだったら、&lt;, &gt; だ。
>>473 2chのdatのように直で読まれることを前提に、xmlの要領で単純なhtmlを吐く
そのhtmlのヘッダにjs本体を読むようにしておく
やってることはtsv埋め込みと同レベルだ、負荷がかかるとかばかげたことは言うなよ?
そのtsvをhtmlにしてページに埋め込むだけという説明で十分だったか
>2ch めんどくさいな・・・
>>477 480が言ってるがtextarea内に<、&を書けるわけがない
セキュリティ以前にHTMLが壊れてたら話にならんだろ
それでinnerHTMLとか言ってるならかなり恐ろしいぞ
485 :
464 :2010/02/19(金) 19:21:27 ID:REqSB4kI
>>481 >xmlの要領で
XHTML じゃ だめ ???(w)
>そのhtmlのヘッダにjs本体を読むようにしておく
>やってることはtsv埋め込みと同レベルだ
なろほど, suffix を変える (.html -> .js) のも ありですねぇ〜
>負荷がかかるとかばかげたことは言うなよ?
Ajax にすると template 読み込み処理が不要となります.
しかし, " IE 対応をどうするか ? " と言う問題に対する決断を迫られます.
あっしは MacOS 9 の外の世界を見られない変人ですが,
さすがに "セキュリティー上の問題がありますが... ActiveX を... "
との ただし書き付きでの掲示板には抵抗感を感じます.
>>477 innerHTMLでテキストの書き出しをやってるの?
HTMLを出力するならそれで良いけどテキストで表示させたかったらnodeValue使おうよ
487 :
464 :2010/02/19(金) 19:57:57 ID:REqSB4kI
すみません, これ以後, 挨拶抜きで...
>>484 >セキュリティ以前にHTMLが壊れてたら
たとえば (悪意がなくて) 単にタグ閉じわすれとか ?
それでinnerHTMLとか言ってるならかなり恐ろしいぞ
>ぶるぶる...
でも, 受け取ったままの状態では ただの texte string にすぎず,
それを js で処理した上で 吐き出される前には何もできないはずですが ?
あっしは何か見落としてますか ?
innerHTMLはHTMLをパースしてノードに突っ込むからな
489 :
464 :2010/02/19(金) 20:10:20 ID:REqSB4kI
すみません, これ以後, 挨拶抜きで...(ご無礼, お許しを)
>>486 >HTMLを出力するならそれで良いけどテキストで表示させたかったら
すみません, 勉強不足です〜.
参考までにメリット | デメリットなどをお教えいただけると...
お前がHTMLも書けないことはよく分かった。 textareaの中はPCDATAなんだから<、&は&<、&になっていなければならない まずこれを怠っている時点でXHTMLを書く資格がない それらは当然、textarea.valueを通せば復元されて<、&になっている それは正しいデータを得られたということで、何の問題もない この段階で全ての実体参照は展開されているはずだ &<となっていてほしいのは、HTMLの実体参照の解説をしているときくらいだろう データを出力するときはcreateTextNodeすれば<、&は勝手に&<、&になる 何も考えることはない もしinnerHTMLでの出力を考えるなら ・defer属性付きのscript要素 ・イベント属性 ・data:スキーム 最低限、これらは除去しなければならない IE8ならtoStaticHTML()とかあるが、はっきり言って今のお前にできるとは思えない HTMLタグは許すな、全部エスケープしてしまえ
< &<
くそw すまん &lt;
データに</textarea>が紛れ込んだ時点で終わりだよね
494 :
464 :2010/02/19(金) 20:38:28 ID:REqSB4kI
>>490 >お前がHTMLも書けないことはよく分かった。
ぎゃぼ〜, ひでぶ〜 !!!
>&は&<、&になっていなければならない
も, 文字化け〜 (あっ, すっ, すべては 2ch cgi の落とし穴です〜)
>この段階で全ての実体参照は展開されているはずだ
その通りです.
で, この事実を解った上で使い切るか, はたまた別のアプローチを取るか,
もしそうだとするのなら あっしが考えつく以外の何かがあるかどうか...
>データを出力するときはcreateTextNodeすれば
調べて実験してみます.
>HTMLタグは許すな、全部エスケープしてしまえ
許してませんが...
それとも何か落とし穴が ?
口調は厳しいけど, 大変参考になりました.
まじ, 感謝, 感謝 〜 !
495 :
464 :2010/02/19(金) 21:26:06 ID:REqSB4kI
>>493 >データに</textarea>が紛れ込んだ時点で終わりだよね
最初, 何のことか判りませんでした.
でも, BBS をチェックして その意味が解りました.
予想外の bug 発見 ! (おありがとうござい〜 !)
さて, どうするか...
.js にして読み込ませるか...
エスケープの基本中の基本だろ これを予想外と言ってる段階で・・・なあ
エスケープの基本中の基本というかエスケープすらやってないだけでは
498 :
464 :2010/02/19(金) 21:56:58 ID:REqSB4kI
>>496 >これを予想外と言ってる段階で・・・なあ
Ummmmm...
textarea は問題ありありなのね.
(さて, どうするか... )
499 :
464 :2010/02/19(金) 21:59:13 ID:REqSB4kI
501 :
464 :2010/02/19(金) 22:16:38 ID:REqSB4kI
>>500 うん.
つき合ってくれて ありがとう.
(わめけども, 叫べども何も返って来ない この ご時世に あって珍しい...)
textareaの問題じゃねえ、お前がアホなだけだっての だめだこりゃ
実践しながら、都度検索して身に付けた知識だけなんじゃない? 基本から学習するべき。
504 :
464 :2010/02/20(土) 03:42:26 ID:BJabbY+I
input type="hidden" に修正すますた.
(データチェックに便利だろうと考えたのが あだに...)
>>502-503 の発言のダメージは大きい !
しかし, 収穫はあったと考えてます.
textareaの文字列を選択したく、 <head>にこれを書いて <script> $(function(){ alert("foo"); $("textarea").selectionStart = 3; $("textarea").selectionEnd = 5; }); </script> <body>にこれを書いたんですが、 <textarea>foobarhoge</textarea> alerは実行されますが、選択が行われません。 Firefox3.5.8, Windows で試しています。 どこが間違ってるんでしょうか。。。?
タイミング
>>506 すいません、どのタイミングで行えば良いでしょうか?
わからなかったので、Timerでずっと繰り返しよびながら
テキストを選択してみましたが通常の選択になってしまい
selectionStartなどに代入した効果が現れませんでした。
自己解決しました。 $("textarea")[0]に変更すれば取得できました。
スクリプトが実行されたときにはtextareaがない。とパッと見思ったけど。 エラー検知してみたら?
510 :
Name_Not_Found :2010/02/20(土) 14:56:58 ID:bgc4w/qQ
var aaa = (function() { /* 処理 */ })(); 上記のような書き方はどういう時に使われるのでしょうか?
クロージャをまとめて書きたいとき
名前空間の一種 var x = "outer"; var aaa = (function() { var x = "inner"; return 1; })(); alert(x);
クロージャってなんですか?
ググれカス
515 :
Name_Not_Found :2010/02/20(土) 16:17:23 ID:bgc4w/qQ
>>511-512 貴重なレスありがとうございます。クロージャについてはWeb上の資料が多くて助かります
ですが。もう一つ解らない処理があるのです、
先ほどのクロージャスコープ内の末尾にて、
return {
: function(addid) { init(addId); },
redraw: function(addid, idnum) { tableaddRedraw(addid, identical); }
};
上記のような処理があったのですが、これについては全くわかりません。
>>515 クロージャ内部から外部に公開したいものを出してるように見えるけど?
確かによく分からないね。 仮にその通りに書いてあったとしたらシンタックスエラーになるはず。
518 :
Name_Not_Found :2010/02/20(土) 16:27:48 ID:bgc4w/qQ
>>517 すみません、
return {
add: function(addid) { init(addId); },
redraw: function(addid, idnum) { tableaddRedraw(addid, identical); }
};
addが抜けていました
519 :
Name_Not_Found :2010/02/20(土) 16:28:56 ID:1DmFSobh
質問です。 たとえば次のような構造になっているHTMLで、 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" (〜その他各属性は省略〜)> <embed id="emb1" /> </object> <embed>タグにアクセスして属性を設定するにはどうすればいいのでしょうか? どうも<object>タグ内の要素に関してはgetElementByIdが利かないみたいです。
getElementById以外のアクセス方法は試したのか?
521 :
Name_Not_Found :2010/02/20(土) 16:38:44 ID:1DmFSobh
>>520 他にはgetElementsByTagName()やname属性を設定してのwindow['name属性名']等やgetElementsByNameも
ダメでした。
>>518 var counter = (function () {
var n = 0;
return function () { return n++; }; //関数をリターン
})();
counter();
var counter = (function () {
var n = 0;
return { //オブジェクトをリターン
tasu: function () { return n++; },
hiku: function () { return n--; }
};
})();
counter.tasu();
counter.hiku();
523 :
Name_Not_Found :2010/02/20(土) 16:42:27 ID:bgc4w/qQ
>>522 ありがとうございます。なるほどこういう使い方だったのですね。
質問です。 setIntervalで処理を一定時間に繰り返し、その後、一定の条件でclearTimeoutしたいのですが、 どうもうまいやり方が思い浮かびません。 setIntervalの中で、自身のIDを参照する方法が必要だと思うのですが、どうすればよいでしょうか?
>>524 クロージャ使うのがいいと思うよ。
function start() { var tID = setInterval(function() { if (...) setInterval(tID) }, ...) }
>>524 自身ならクロージャ
function start() {
var timerId = setInterval(function() { clearInterval(timeId); }, 10000);
}
527 :
525 :2010/02/21(日) 17:32:10 ID:???
>>525 まちがえたよ。
function start() { var tID = setInterval(function() { if (...) cleatInterval(tID) }, ...) }
>>528 グローバル変数に?それは上手いやり方なのか?
別にグローバルにしろと書いたつもりはないが?
自称中級者ほどクロージャを使いたがる
クロージャ使えないからって・・
サーセンw
534 :
524 :2010/02/21(日) 19:31:56 ID:???
皆さんありがとうございます! クロージャを使う方法でうまくいきました。 こんなに簡単に解決できるとは・・・。 Functionオブジェクトにメソッド組み込んだりいろいろしてた自分がアホみたいです。
クロージャが「使える」とか「使えない」とか 会話の程度が低すぎるだろ・・・
536 :
Name_Not_Found :2010/02/21(日) 20:52:20 ID:D7kmtHzS
JavaScript(not JScript)ならsetTimeout()の第三引数以降にパラメータを渡せるから クロージャを作らずに済むんだよね メモリリーク問題があったIEにこそほしかったけど
クロージャってなんですか?
関数+局所変数
540 :
Name_Not_Found :2010/02/22(月) 11:50:39 ID:e3jSHoX6
541 :
Name_Not_Found :2010/02/22(月) 11:52:53 ID:e3jSHoX6
明日のナージャってなんですか?
スレチ
DOMを使って要素を追加すると何か性質が変わってしまうんでしょうか?
Firefox3.5.8で
<math xmlns="
http://www.w3.org/1998/Math/MathML ">
<mfrac><mn>1</mn><mn>2</mn></mfrac>
</math>
と書き、分数が表示されてるのを確認した上で、jQueryで
$("math").html("<mfrac><mn>1</mn><mn>2</mn></mfrac>");
と同じものを書き込こうとしたのですが、
[1 2] のように数字が並んでるだけの表示になってしまいます。
Firebugで状態を確認したらちゃんと
<math xmlns="
http://www.w3.org/1998/Math/MathML ">
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
</math>
と入力されていました。
このような状態ではどこからエラーを探っていったら良いのでしょうか?
math要素から作り替えてみたら?
>>544 それはDOMを使ってない(.htmlはinnerHTMLを呼ぶだけだから
DOM標準外)。DOM標準に含まれるAPIのみ使ってノード操作すれば
大丈夫なんじゃないですかね。
548 :
544 :2010/02/23(火) 15:59:15 ID:???
レスありがとうございます。 jQueryはすべてDOMを使って実装されているものだと勘違いしていました。 DOMを直接さわる方法を勉強します。
例えば、 var test = {}; test.a = 'hoge'; とかならvar test = {a: 'ok'};みたいに書き換えられてわかりやすいのですが、 var test = function(){ return 'ok'; }; test.a = 'hoge'; みたいな場合、どのようにtestに追加されているのかがよく見えてきません。 アドバイスよろしくおねがいします。
→ var test = {a: 'hoge'}; でした
$(".hoge").click(function(){ var test = jQuery(this).attr("class"); $("#sample").load("index.php?query"+test); } クリックしたものに対して、 読み込む php ファイルを変えたいのですが、 どうしたらいいのでしょうか。 php は動的なので、html で置き換えできないです。
>>551 そのコードが「何をしているか」正確に説明してみなよ。
>>552 class="hoge" がつくものがクリックされたとき、
変数 test にクラス名を入れて、
id="sample" に、index.php?query= に変数test を付け加える。
実際には2行目と3行目の間に、
var test2 = getclassname.replace("hoge ",""); が、
入っています。
class="hoge hoge2" の hoge2 によって
読み込むものを変えたいです。
>>553 その「読み込むものを変える」ののやり方によると思うが。
(1) JavaScriptのif文で枝分かれして別々のloadを実行。
(2) PHPの中で枝分かれして渡されたtestの内容に応じ別のものを返送。
555 :
Name_Not_Found :2010/02/24(水) 12:32:29 ID:ELW5xFLX
>>549 前者と後者は違うもののような気がするのだが。
var test = function(){ return 'ok'; }; // クラス
test.prototype.a = 'hoge';
var A = new test(); // インスタンス
var B = new test(); // インスタンス
みたいなもの(ホントはクラスじゃないよ)と考えるといいかも。
>>554 理解出来ました!
ありがとうございます
>>551 のソースだと
query のあとに = がなかったからでした!
>>554 さん
javacript 側で変える方法と、php 側で変える方法があることを
教えていただいてありがとうございます。
すいません。
>>557 ですが、
if(!empty($_GET["query"]))
{print $_GET["query"];}
load したクリックした要素ごとに変えたいのですが、
で、query の中身が変わらないです。
559 :
Name_Not_Found :2010/02/24(水) 15:10:20 ID:ELW5xFLX
>>558 イマイチわかりづらいな。
まず、
>>411 の新テンプレにあるように
「何を、いつ、誰が、どこに、なぜ、どのように」動作させたいのかを、
簡潔に説明しようよ。テニヲハにも気をつけて。
ちゃんと説明出来るのって、プログラム書く上で大事だよ。
>>559 >>551 に書いたのですが、
$(".hoge").click(function(){
var test = jQuery(this).attr("class");
$("#sample").load("index.php?query"+test);
}
class="hoge hoge2" をもつリスト要素がクリックされたとき、
id="sample" に、php ファイルを読み込みます。
hoge2 の部分は hoge3 , hoge4 などがあるため、
読み込むファイルを jquery で変更して GET で
php 側でパラメータを取得したいです。
>>560 queryとして渡しているのは変数testの値だよね。
それは要素ごとに変化しているの?
562 :
Name_Not_Found :2010/02/24(水) 15:38:58 ID:ELW5xFLX
>>560 queryの後ろにイコールがついてないのは直したんだよね?
あと、testの値が期待通りのものであることを、alertとかで確認した?
>>561 alert(test);
で要素ごとに変化していることは確認しました。
564 :
Name_Not_Found :2010/02/24(水) 15:49:45 ID:ELW5xFLX
>>563 んじゃphp側でprint_r($_GET);では?
>>564 print $_GET["query"];
でも確認しました。
そうじゃなくて、 print($_GET) そのままで。 もしかして、testの中に空白が入ったままとか。 それなら空白をカンマとかに置き換えてから渡すとかで。
567 :
Name_Not_Found :2010/02/24(水) 16:15:37 ID:ELW5xFLX
そうそう。print_rで。 あと、Firebugのコンソールで通信の内容が見れるからそれも確認。
print_r($_GET); でも確認しました。 パラメータは取得できてるのですが、そのパラメータを使って、 他のphp ファイルにある関数を使うときにうまくいってないみたいです。
おいおい…それって完全にスレ違いじゃん。よそでやってよ。 PHPはWebProg板ね。
なるほど それに1、'a'、true、falseなんかも載ってないからきっと定義されてないんだろうな
>>> true instanceof Boolean false あれ?違うの
マジレスしてやるが Booleanオブジェクトはプリミティブのtrueのラッパー プリミティブにドット演算子を使うとラッパーが自動生成されてメソッドを呼び出す
>>574 "" instanceof String
typeof ""
new String("") instanceof String
typeof new String("")
string型とStringオブジェクトの差
同様のことがboolean型とBooleanオブジェクトに存在する
FAQに入っててもいい気がするこれ。はじめはなかなか気づきにくいことではあるし
578 :
Name_Not_Found :2010/02/24(水) 22:22:50 ID:ELW5xFLX
javascriptって手軽に誰でも使えるのに奥が深くていいね
進化がめまぐるしい分野であるからそう感じるのも無理ないけど できることは局所的で少ないからメインでやる言語としては物足りない
最近は3Dグラフィックをぬるぬる描画できたりサウンドを動的生成できたり面白くなってきてる
もうすこしコードの隠蔽性が高ければな、これでいっかって気にもなるけど あと手元のデータに触れないので、日々のちょとしたツールを作成するのに向いてない
>>582 WSHとかRhinoとか
言語的な立ち位置はLuaあたりと同じで、組み込みとかマクロとかなんだよな
だからホストさえ用意すれば相応のことはできる
var s = 'a'; alert(typeof s); // 'string' alert(s instanceof String); // 'false' [0].forEach(function(n){ alert(typeof this); // object alert(this instanceof String); // true alert(this == s); // true alert(this === s); // false }, s);
そらそうだわな
forEachって何? javascriptのforeach文って for(var i in a)だよね? イテレーターみたいなもんじゃろか? ぐぐっても当たり前すぎるワードだから的確なのが出てこないよママン
587 :
Name_Not_Found :2010/02/25(木) 11:17:57 ID:dV9c+jNx
あるサイトの、API画面(
https://example.jp/api )にアクセスすると
ログイン中は(idはユーザごとに違う)
if (typeof(Answer) == 'undefined') { Answer = { "id":"1234" }; }
ログインしてない時は、
if (typeof(Answer) == 'undefined') { Answer = { "message":"you are not logging it in" }; }
と表示されます。
これを別のHTMLページから次のようなJavaScriptで、表示しています。
<script type="text/javascript" src="
https://example.jp/api "></script>
<script type="text/javascript" language="javascript">
<!--
document.open();
if (Answer.id){ document.write(Answer.id);}
else if (Answer.message){ document.write(Answer.message); }
else{document.write("エラーです"); }
document.close();
// -->
ログアウト中は、ブラウザに関係なく「you are not logging it in」と正常に表示されますが、
ログイン中にアクセスした場合、IEでは「you are not logging it in」、FireFoxでは正常に「1234」と表示されます。
なぜ、IEではログアウト中のメッセージが出てしまうのでしょうか?
尚、ログイン中の
https://example.jp/apiの画面には if (typeof(Answer) == 'undefined') { Answer = { "id":"1234" }; }
と正常に表示されています。
>>587 その1個目のscript要素のさらに前に次のものを入れるとどう表示?
<script type="text/javascript">
alert(typeof Answer);
</script>
あともう1つ、1個目のscript要素を<iframe src="..."></iframe>
にしたときは中身は正常に表示?
590 :
Name_Not_Found :2010/02/25(木) 12:33:44 ID:dV9c+jNx
お答えありがとうございます。
>>588 キャッシュは外してみたんですが、だめですね。
>>589 <script type="text/javascript" src="
https://example.jp/api "></script> よりも
alertを上に置くとundefined
下に置くと、object
と表示されます。IEもFFもopraも同じ結果でした。
<iframe src="..."></iframe>
ですと、ログイン中にIEで見ると「you are not logging it in」
Firefox、Operaで見ると「1234」(正常)でした。
591 :
590 :2010/02/25(木) 12:46:28 ID:dV9c+jNx
複数のPCでやってみたけど、590と同じ結果でした。 試したのはWinXPで2台、WinVistaで1台
表をクリック→画像が切り替わる をnameを利用して行っています さらにその画像の上にマウスを乗っけたら画像が変わる というものを作りたいのですが 表の項目ごとに変えたいのでnameを利用してやると二段階目がすべて同じものになってしまうので ファイル名を利用したいとおもうのですが、どのようにしたらいいのでしょうか? レベルの低い質問ですみません。検索してもnameを利用したものばかりだったので・・・
>>590 ブラウザで直に開くとIEでもログインできているのに、
iframe srcだと駄目なわけね?ともかく、script srcでも
iframe srcと同じものが来ると思うからそれが原因だね。
そっから先はそのサイトのしくみの問題のような気がするんで、
このスレではアドバイスが得られないんじゃないかなー。
>>592 今使ってるソースとname="..."に書いているものを貼ってみ。
アドバイスがもらえると思うよ。
>>590 IEのバージョンとかセキュリティポリシーとかcookieとかそのへんだと思う
リクエストヘッダ見るのがよさそうだけど、IEはどうやるのが手っ取り早いんだろう?
すまん、name="..."のほかにonclickに書いているものもね。
スクリプト function myChgPic2(myPicURL2){ document.images["myBigImage2"].src = myPicURL2; } 表の中 <A href="javascript:void(0)" onclick="myChgPic('./name_img/23iri.gif');myChgPic2('./photo/23iri.jpg');appendTDtexts(tableData23)">●●</A> 切り替わる部分の画像 <img src="photo/00.jpg" width="150" height="150" name="myBigImage2"> で、この画像をマウスオーバーでさらに変えたいのですが可能でしょうか?
597 :
590 :2010/02/25(木) 13:14:35 ID:???
>>596 よく分からないんだけど、マウスオーバーで変えた後、外れたら
元に戻すのね?マウスオーバーで変える画像がいつも同じなら
<img ... onmouseover="chg(this,'test.jpg')" onmouseout="restore(this)">
とかにしておいて、chgとrestoreはたとえば次のように?
function chg(elt, file) { elt.save = elt.src; elt.src = file; }
function restore(elt) { elt.src = elt.save; }
>>598 ありがとうございます
こちらの説明不足なのですがマウスオーバーで変わる画像は項目ごとに変えたいのです。
具体的には表の中に名簿があるんです。
その名簿の名前のところが
<A href="javascript:void(0)" onclick="myChgPic('./name_img/23iri.gif');myChgPic2('./photo/23iri.jpg');appendTDtexts(tableData23)">●●</A>
となっており名前をクリックすると違うとところにプロフィールがでるんです。
そのプロフィールの中に画像データがあり
<img src="photo/00.jpg" width="150" height="150" name="myBigImage2">
となっています。個人ごとにさらにマウスオーバーで写真を変えたいのですがどのようにしたらいいか知りたかったのです。
>>599 ようやく分かった。で、myChgPic2で現在はメインの(すぐ表示する)
画像だけ取り替えているけど、ついでにそのimgオブジェクトに交替する
画像の名前も適当な名前で書き込んでおき、マウスオーバー時は
それをsrcにコピーする、メインの画像も元に戻すため適当な名前で
保存しておく、というのはどうかな。
>>598 のelt.save みたいな
のを複数使うわけ。この説明で分からないなら自力で勉強してね。
>>600 なるほど!名前も変えればいいのですね!
ありがとうございました!
キーイベントを取得して関数を実行させているのですが 以下のコードで一応は適用されるものの、実行時にボツボツとアラート音が出てしまいます どこかでエラーが出てると思うのですが、アラート音を出さない、正しい書き方はどう書けば良いでしょうか 環境はMac+webkitです const KEY_J=74; const KEY_K=75; function changeKey(which, to){ switch (which){ case KEY_J: if(to) window.scrollBy(0, 30); break; // j case KEY_K: if(to) window.scrollBy(0, -30); break; // k default:break; } } document.onkeydown=function(e){changeKey((e||window.event).keyCode, 1);}; document.onkeyup=function(e){changeKey((e||window.event).keyCode, 0);}; 後々メタキーと組み合わせることを考えて押し下げ、押し上げを分離しています
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns="
http://www.w3.org/1999/xhtml " xml:lang="Ja" lang="Ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />
<title>test</title>
<script type="text/javascript">
<!--
var eles = document.getElementsByTagName('h3');
alert(eles.length);
//-->
</script>
</head>
<body>
<h1>h1タグです</h1>
<h2>h2タグです</h2>
<h3>h3タグです(1)</h3>
<h3>h3タグです(2)</h3>
</body>
</html>
なぜか、h3要素を取得することができません。
Opera 10.1、Opera 10.5 beta2にて確認しました
・scriptが実行された時点でh3が出現していない ・scriptがコメントアウトされているためapplication/xmlで無視 ・application/xmlでgetElementsByTagNameが名前空間を認識しない
すみません、XHTMLはPCDATAでしたね・・・ script要素をh3タグの後に記述したら、正しく2と表示されましたが、 h3タグが出現する前に実行されるJSでh3タグを取得するいい方法はないでしょうか? (例えば、ブラウザのUserJSなど、)
607 :
604 :2010/02/25(木) 21:54:22 ID:???
documentのaddEventListenerメソッドを使うことでできました。 回答された方はありがとうございました。
>>590 >>594 がいってるcookie関連だな。IEだけはiframeとかだとcookieが使われない。
p3p cp iframeでググれば情報が出てくるよ。
そして解決方法がわかったら教えて欲しい。ヘッダいじってみたけど変化がなくてお手上げ状態。
質問です Windows 環境にてファイル名に使えない文字を大文字化する関数を下記の作ったのですが、 もっと無駄の少ない方法があれば何かお願いします function upperRenameChara(str) { str = str.replace(/\\/g, '¥'); str = str.replace(/\//g, '/'); str = str.replace(/:/g, ':'); str = str.replace(/,/g, '、'); str = str.replace(/;/g, ';'); str = str.replace(/\*/g, '*'); str = str.replace(/\?/g, '?'); str = str.replace(/"/g, '”'); str = str.replace(/</g, '<'); str = str.replace(/>/g, '>'); str = str.replace(/\|/g, '|'); return str; }
replace(〜).replace(〜)・・・ カンマとセミコロンは使えるんじゃね。JSでの扱いによるかもしれないけど。 それぞれを大文字じゃなくて削除とかならスマートにいけるんだけどなぁ。
611 :
Name_Not_Found :2010/02/25(木) 23:10:56 ID:YbbkgIg2
■やりたいこと■ inputタグで、typeがhiddenで、idが/^Watch\d{5}$/であるidのリストをjQueryで簡単に取得したい。 ■質問■ 以下のスクリプトでできるんですが、もっともっとコンパクトに短いコード書くことってできますでしょうか? ------【HTML】-------------------------------------------------- <input type="hidden" id="Watch12341" value="Watch12341"> <input type="hidden" id="Watch12342" value="Watch12342"> <input type="hidden" id="W11" value="W11"> <input type="hidden" id="Watch12343" value="Watch12343"> <input type="hidden" id="W22" value="W22"> <input type="hidden" id="Watch12344" value="Watch12344"> <input type="hidden" id="Watch12345" value="Watch12345"> ------【HTML】-------------------------------------------------- ------【SCRIPT】-------------------------------------------------- var idAry = []; var idCnt = 0; for(var i=0; $("input:hidden:eq("+i+")").attr("id")!=undefined; i++){ if($("input:hidden:eq(" + i + ")").attr("id").match(/^Watch\d{5}$/)){ idAry[idCnt] = $("input:hidden:eq(" + i + ")").attr("id"); idCnt++; } } alert(idAry.join("\n")); // 確認 ------【SCRIPT】--------------------------------------------------
>>609 それは大文字とは呼ばん。
意思の疎通をするには、一般的な言葉を使わんと駄目だよ。
613 :
609 :2010/02/25(木) 23:16:05 ID:???
>>610 ありがとうございます
replaceをつなげただけでも大分マシになった気がします
質問です。
ttp://tech.ironhearts.com/blog/archives/148# 上記のサイトにあるようにチェックボックスのON・OFFでクラスを追加したり削除したりしたいです。
ページを読み込んだ時とクリックでチェックを付けたり外したりした時の両方で動くようにするには
どのような書き方がよいでしょうか?
一応、下記で動いてはいるのですが、もっとシンプルにできますよね?
どなたかご教授おねがいします。
$(document).ready(function(){
$('#box input:checkbox').each(function(){
var chk = $(this).attr('checked');
if(chk == true){
$(this).parent().removeClass('on');
}else{
$(this).parent().addClass('on');
}
return true;
});
$('#box input:checkbox').click(function(){
var chk = $(this).attr('checked');
if(chk == true){
$(this).parent().removeClass('on');
}else{
$(this).parent().addClass('on');
}
return true;
});
});
>>611 $("input:hidden").filter(function(){
return $(this).attr("id").match(/^Watch\d{5}$/);
});
jQuery久しぶりだけどこれでいいかな
>>614 チェックしてないので参考までにして
$(function(){
$(#box input:chceckbox)
.bind("toggleClass",function(){
$(this.parentNode).toggleClass("on", this.chekced);
}).live("click",function(){
$(this).trigger("toggleClass");
}).trigger("toggleClass");
});
617 :
611です :2010/02/26(金) 00:36:13 ID:CXzRK7cW
>>615 ありがとうございます!すごくスッキリしました。
ちなみにfilterのとこはeachでもいけました。
■こんなこともやってみました■
HTML部のhiddenを全てcheckboxに変更し、
「idが/^Watch\d{5}$/であるものにチェックを入れる」という
仕様に変更する、とすると、
$("input:checkbox").each(function(){
$("#" + $(this).attr("id").match(/^Watch\d{5}$/)).attr("checked", true);
});
これでできました。これ以上なものってないですよね?
filter()とeach()って結果は同じでも動作は全然違うけどそれぞれ理解してるか?
619 :
614 :2010/02/26(金) 01:03:12 ID:???
>>616 ありがとうございました!
読み込み時にチェックが有っても無くてもclass="on"がついてしまったので、
もともとチェックされているものとされていないもので、
挙動が逆になってしまいましたがとても参考になりました。
もう少し、自分でも挑戦してみます。
>609,612 ホントそうだね。うちの周りにも勝手な解釈で用語を使うのがいて 困る。
>>609 もう見てないかもしれんが、これでいい?
str.replace(/[\\\/:,;*?"<>|]/g, function($_) {
return String.fromCharCode($_.charCodeAt(0) + 0xFEE0);
});
622 :
621 :2010/02/26(金) 08:54:54 ID:???
すまん。流れに合ってなかった。 うん、用語の間違いはダメだ。
Perlでやれ
>>621 fromCharCode初めて知った。
Stringのメソッドなんて普段使ってないからこういう時しか知識が増えないや
「tr」があればイイのにね。
すいません、どこも教えて頂けるところがないので、お力をください。 入力必須を、javascriptで設定したいのですが正常に作動しません。 必須項目に入力していなくても、そのままスルーしてサーバーへ転送してしまいます。 初心者で本当に申し訳ないのですが、どなたかご教授お願いします。 <meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript"> <!--// function Check_value(){ if(document.form1.last_name.value == ""){ alert("「お名前(姓)」を入力してください"); return false; } return true; } //--></SCRIPT> <form name="form1" action="" method="POST" onSubmit="return Check_value()"> ■お名前・姓(必須) <input id="last_name" maxlength="80" name="last_name" size="20" type="text" /> <input type="submit" name="submit" value="送信"> <input type="reset" name="submit2" value="リセット"> </form>
>>626 > 初心者で本当に申し訳ないのですが、どなたかご教授お願いします。
これ書かなくていいですよ。
パッと見て問題なさそうに見えるな。どのブラウザで試してもダメだった?
>>627 早速のご返答ありがとうございます。
>パッと見て問題なさそうに見えるな。どのブラウザで試してもダメだった?
はい。ブラウザで試してもダメなんです。
一応テストページを仮サーバーへUPしました。
お手数ではございますが、一度ご覧頂くことは可能ですか?
アラートが出来ない症状をご確認頂ければ幸いです。
ttp://u-ram.com/data/test.html (送信ボタンをクリック後は、デバッグページになります)
お忙しいところ恐れ入ります。
宜しくお願いします。
>>628 >>626 の部分は全く関係ないな
多分document.form1.00N10000000ZCMi.valueでエラーだ。
document.fom1.何とか.value
ってなってる箇所を、ドット演算じゃなくて、下のようにカッコと引用符でくくって書きなおせばいけるとおもう
document.fom1['何とか'].value
ついでに言えば、id属性の値は数字で始まってはいけない。 name属性の値は数字で始まってもOKだけど、上記のように問題が起きが ちなので普通使わない。
>>629 >>630 >>631 早速ご返答頂いたのに、すぐにお礼を書き込めなくて申し訳ございません。
まずは、皆様ご回答ありがとうございます。626です。
>>629 >document.fom1.何とか.value
ってなってる箇所を、ドット演算じゃなくて、下のようにカッコと引用符でくくって書きなおせばいけるとおもう
document.fom1['何とか'].value
ありがとうございます。
ご指摘の通り、修正しましたら正常に動きました。
ただ、ラジオボタンの必須部分のscriptがダメなのか
00N10000000ZCNC = document.form1.00N10000000ZCNC[0].checked ?
document.form1.00N10000000ZCNC[0].value;
document.form1.00N10000000ZCNC[1].value;
document.form1.00N10000000ZCNC[2].value
if((document.form1.00N10000000ZCNC[0].checked == false) &&
(document.form1.00N10000000ZCNC[1].checked == false) &&
(document.form1.00N10000000ZCNC[2].checked == false)) {
alert("「ご入居者の性別」を選択してください。");
を入れると、正常に動きません。
再度、ご教授頂けますでしょうか。
>>630 >識別子の先頭に数字は置いちゃだめだよ
すいません、どの部分のことでしょうか。具体的にご指摘頂けると幸いです。
>ついでに言えば、id属性の値は数字で始まってはいけない。
そうですよね。私もそう思うのですが、送信先サーバーのシステム都合上、
数字から始まる値しかいただけなくて…。
>>632 変数名とかプロパティ名とか
ソースコード中に出てくる予約語とリテラルとコメント以外の文字(列)はなんでもIdentifier
>00N10000000ZCNC = document.form1.00N10000000ZCNC[0].checked ?
この行だけで00N10000000ZCNCとform1.00N10000000ZCNCの二カ所でアウト
ところでエラーメッセージ見てる?
今気づいたけど、サンプルコードアップするときはうpろだとか適当なサイト使いなよw
ここで聞いたJavaScriptがサービスで使われるのかと思うとドキドキするわw
document.form1.00N10000000ZCNC[0].checked
は
>>3 からのテンプレ読めばわかる
00N10000000ZCNC =
は変数名なんだから自分の好きなのに変えればいい
あと、三項演算子も間違ってるし、プログミングやったことないならここで聞くより本買いなよ。
手取り足取りスレじゃないし。
>>633 >>634 ご回答ありがとうございました。
すいません、初心者が質問する場ではないと分かっていたのですが
どうしても行き詰まってしまいました。
UP先も、どうしようか考えたのですが
とりあえず急いでいたことや社内で使用するフォームなので安易に
してしまいました。ご指摘ありがとうございます。
皆様のおかげで正常に作動しましたので
本当に感謝しています。
お忙しいのに、色々とありがとうございました。
そして、もっと勉強いたします。すいませんでした。
まずHTMLをまともに書けるようになれ HTML4でもXHTMLでもないからHTML5と判断せざるをえないが だったらContent-Script-Typeなんかいらね HTMLの書き方はDOMに影響するからあんまり適当にやってると後で泣くぞ
>>636 ご指摘ありがとうございます。
勉強致します。本当にありがとうございました。
>>426 やたー今更ながら時間制御出来るようになった
グローバルで基礎となる時間を扱いながら
時間を次の関数に加算しつつバトンタッチする要領で
進めたら関数一つでいけました
639 :
Name_Not_Found :2010/02/26(金) 21:59:26 ID:0YvuzRfL
まさかの代表がこのスレに?ww
>>638 簡単なソースお願い
時間を扱うってことはsettimeoutじゃない・・?
>>425 //ここで10秒待つ
var x = new Date().getTime();
while((10000 + x) > (new Date().getTime())){}
//次の処理//
これでどうだ
先駆者が居たのか
それをマジでやるアホが意外にいるから笑えない
645 :
Name_Not_Found :2010/02/27(土) 01:25:55 ID:6XCxbQrG
onMouseOverで呼び出した関数に、onMouseOverが呼び出されたタグの中身を引数として 渡そうとしてるんですが、うまくいきません。 具体的には、下記のcontentにマウスを乗せると、アラームウィンドウに [object HTMLUnknownElement] と期待している「content」という文字列と違う値が出力されてしまいます。 <div onMouseOver="func(this)">content</div> func(value) { alert(value) } どなたか解決策ご存知ないでしょうか? よろしくお願いします。
value.innerHTML
647 :
Name_Not_Found :2010/02/27(土) 01:32:17 ID:6XCxbQrG
>>646 おお、できました。
ありがとうございました。
HTMLUnknownElementが出る時点で何かが絶望的に間違ってるけどな
jQueryでキーイベントを制御しているのですが、document,bodyに対してキーイベントを当てた場合、 要素の内部のinputやtextareaに入力しようとすると、そこにキーイベントを取られて入力できません そこで、inputにフォーカスがあたった際に一時的にキーイベントをオフ(デフォルト値?)にしたいのですが その方法がわかりません ご教授願います $(document.body).keydown(function(e){doEvent();}); $("input").focus( function () { removeKeyEvent? ; } ); //イベントを外す何か ここが不明 $("input").blur( function () { $(document.body).keydown(function(e){doEvent();}); ; } );//
650 :
Name_Not_Found :2010/02/27(土) 06:39:22 ID:m4Kuyh1x
write()が上手く動作しません。 "this is a javascript<br>Oh, year!"と表示させるつもりだったのですが、なにが間違っているのでしょうか? <html> <head> <title>my javascript</title> <script type="text/javascript"> <!-- function write(){ document.write("this is a javascript<br>Oh, year!"); } //--> </script> </head> <body> <script type="text/javascript"> <!-- alert("my javascript"); document.write("javascript<br> is<br> great"); // --> </script> <form> <input type="button" value="押してみて" onclick="write()"> </form> </body> </html>
>>650 まず、document.write()し終わった後の想定されるHTMLを
書いてみる。それが正しいHTMLになってなければそもそも
うまく動くわけがないでしょ。HTMLのバージョンはどれを想定?
> なにが間違っているのでしょうか? "Oh, year!" ではなくて "Oh, yeah!" ではなかろうか。 という冗談はさておき、 <html> <head> <title>window or document</title> <script type="text/javascript"> window.str = "window"; document.str = "document"; </script> </head> <body> <form> <input type="button" value="押してみて" onclick="alert(str)"> </form> <script type="text/javascript"> alert(str); </script> </body> </html> onclick で呼び出されている write() って実は document.write() の方でしょ。 独自定義の方を _write() とかにしたら意図通りに動くと思うよ。
653 :
Name_Not_Found :2010/02/27(土) 09:26:53 ID:m4Kuyh1x
>>652 ありがとうございます。
解決しました!
654 :
650 :2010/02/27(土) 09:59:27 ID:m4Kuyh1x
たびたびすいません。 onclick 後に、表示は切り替わるのですが、その後更新ボタンを押しても最初のalert("my javascript");が実行されないようです。 これってなぜでしょうか? <html> <head> <title>my javascript</title> <script type="text/javascript"> <!-- function write_msg(){ document.open(); document.write("this is a javascript<br>Oh, year!"); document.close(); } //--> </script> </head> <body> <script type="text/javascript"> <!-- alert("my javascript"); document.open(); document.write("javascript<br> is<br> great"); document.close(); // --> </script> <form> <input type="button" value="押してみて" onclick="write_msg()"> </form> </body> </html>
document.write でページ内容が既に書き換わっちゃっていて、 そのページに更新かけてるから。 location.href とかで google のトップページに飛ばした後で いくらリロードしても google のトップページがリロードされるだけ。 みたいな。
656 :
650 :2010/02/27(土) 10:28:21 ID:???
>>655 なるほど、ありがとうございます。
document.writeは使い道が難しそうですな。。。
"Sun Nov 29 01:20:14 +0000 2009" のような形式の日付文字列を、Dateオブジェクトに変換したいのですが、 どうすればできますか? よろしくお願いします。
>>655 document.openのほうじゃないか?
>>657 new Date("Sun Nov 29 01:20:14 +0000 2009")
>>658 その方法だと、Firefoxは大丈夫なんですが、IEがエラーになります。。。
660 :
Name_Not_Found :2010/02/27(土) 11:35:52 ID:m4Kuyh1x
http://jsajax.com/BasicSubmitEventArticle934.aspx $(function() {
$("form").submit(function() {
$(":submit", this).attr("disabled","disabed");
});
$(window).unload(function() {
sleep(1000);
});
});
このscriptですけど、
$とか
function() {とか
$("form").submit(function() {とか
一体どんな風な意味を持つのでしょうか?
[環境] IE 8 FF 3.6 document.body.innerHTML = document.body.innerHTML .replace(/aaaa/gi,'bbbb') .replace(/cccc/gi,'dddd') .replace(/eeee/gi,'ffff') …(省略) … .replace(/hoge/gi,'geho'); 上記のようにreplaceをどんどん繋げていってreplaceを約1300個繋げたいです。 IEでは問題なかったのですが、 Firefoxでは1000個目前後で、 「too much recursion」というエラーが出て置換できませんでした。 このFirefoxでのエラーを回避できる方法はありますでしょうか? ただし、以下のように document.body.innerHTML = document.body.innerHTML.replace(/aaaa/gi,'bbbb') … ({replaceを500個くらいで分ける}) … replace(/hoge/gi,'geho'); document.body.innerHTML = document.body.innerHTML.replace(/aaaa/gi,'bbbb') … ({replaceを500個くらいで分ける}) … replace(/hoge/gi,'geho'); 2回に分ける方法でいけるといえばいけたのですが、パフォーマンスが落ちるのであまりやりたくないのです。 よろしくお願いします。
>.659 ECMA標準はDate.parse(str)だった それでもダメならパーザ書くしか
>>662 var pattern = [['a', 'b'], ['c', 'd']];
var html = document.body.innerHTML;
for (var i = 0, l = pattern.length; i < l; i++) {
html = result.replace(pattern[i][0], pattern[i][1]);
}
document.body.innerHTML = html;
>2回に分ける方法
innerHTMLへの代入はパースが起きる最後だけしろ変数使え
>>662 var a = [[/aaaa/gi, 'bbbb'], [/cccc/gi, 'dddd'], ...];
var s = document.body.innerHTML;
for(var p in a) s = s.replace(p[0], p[1]);
document.body.innterHTML = s;
また配列にfor-inかよ
>>662 innerHTML弄るときにDOM構造を崩さないように気をつけろよ
>>659 日付書式変えてみるといけると思うよ。↓をいじっていろいろ試してみて。
<html>
<head><title>string to date</title></head>
<body>
<table><tbody id="result"><tr><th>str</th><th>new Date(str).toString()</th></tr></tbody></table>
<script>
var dateStr = [
"Sun Nov 29 2009 01:20:14 GMT+0000",
"Nov 29 2009 01:20:14 +0000", // 曜日とかGMTとかはいらない
"2009 01:20:14 29 +0000 Nov", // 区別がつけば順番ばらばらでも意外といける
"2009/11/29 01:20:14 +00:00", // IE8はタイムゾーンに : が入るとだめ
"2009-11-29 01:20:14 +0000",
"09/11/29 01:20:14 +0000", // IE8不可 他では1929年9月11日に
"2009/11/29", // IE8不可
"01:20:14" // Opera可
], resultSRC = "", resultTable = document.getElementById("result");
function newTR(str){
var tr = document.createElement("tr"); resultTable.appendChild(tr);
var td = document.createElement("td"); tr.appendChild(td); td.innerHTML = str;
td = document.createElement("td"); tr.appendChild(td); td.innerHTML = new Date(str).toString();
}
for (var i = 0; i < dateStr.length; i++) newTR(dateStr[i]);
</script>
</body>
</html>
670 :
669 :2010/02/27(土) 13:47:26 ID:???
訂正。"09/11/29 01:20:14 +0000"(1929年になるやつ)はIE8でもいけた。 "+00:00"で試したときのメモが残ってたごめん。
replace() メソッドの第二引数の function 指定、 皆、利用してないんだな。
こんなの合ったのか。>第二引数がfunction 関数使わないとできないってのにお目にかかったことが無いから使ったことなかったな。
jQueryのイベントハンドラ登録で、 bind()使って登録するのと、click()とかmousemove()で直接結びつけるのってどう違うの?
bindでclickを登録するのとclickを使うのは同じです
iPhoneのときはjavascriptでcssを切り替えるようにしようと思ったのですが、表示が変わりません。 FirefoxのDOM Inspectorで見るとrelの値は変わっているのですが、この変更では切り替えられないのでしょうか? <head> <link href="/src/common.css" rel="stylesheet" title="common" /> <link href="/src/iPhone.css" rel="alternate stylesheet" title="iPhone" /> <script type="text/javascript"> var link = document.getElementsByTagName('link'); for(var i=0;link[i];i++) { if(link[i].getAttribute('title')) { switch(link[i].getAttribute('rel')) { case ('stylesheet'): link[i].setAttribute('rel','alternate stylesheet'); break; case ('alternate stylesheet'): link[i].setAttribute('rel','stylesheet'); break; } } } </script> </head>
idつけてhrefの値を切り替えてみたら?その方がスマートな気がする。
Attribute関係はブラウザを選ぶんじゃなかった?
PC用のをメインにしてappendChildでiPhone用のCSSで上書きするようにしたら?
後からlink要素をいじってもCSSの再読み込みはされなかったような。
不確かな情報は書き込まなくていいよ
>>679 x = document.createElement("link");
x.href = "data:text/css;utf-8,body{background-color:#000;}";
x.rel ="stylesheet";
document.getElementsByTagName("head")[0].appendChild(x);
やってみな
682 :
675 :2010/02/27(土) 20:43:49 ID:???
諦めてhref属性変えることにします ありがとう
と思ったら場合によっては何も表示されなくなってしまう… やっぱり諦めて@mediaで上書きすることにします
bookmarkletを作ろうと思い調べたところJavaScriptを使っている事がわかったのですがURLにあらかじめ 決まった単語を追加するにはどうすればいいですか? lang_ja ←をURLの最後に追加するbookmarkletが作りたいんです。
ページをロードせずにアドレスバーの値を書き換えることは無理。 「lang_ja」を URL の最後に追加した文字列が欲しいだけなら prompt で出せば? IE の場合は、大抵、設定によって prompt はブロックされるけど。
これはリンク要素に付けたいんじゃないかな・・?どちらにしろ意味がよく分からないが
>>685 レスありがとう。
文字列が欲しいだけじゃなくて今表示しているページのURLにlang_jaを追加した後自動でリロードしてくれるものが作りたいです。
MacのSafariを使ってます。
JavaScriptに関してまったく知識が無いので1,2行で済むなら書いていただけると嬉しいのですが。
javascript:location.href=○○○lr=lang_ja; って感じで手探りで作ってみたんですけど無理っす。
javascript:location.href=(location.href+'lang_ja'); javascriptの知識無いとブックマークレットは作るの大変だよ。 win IEでは動いた。 document.とかってどこまで省略していのかわからん。
>>688 location オブジェクトは window のプロパティ。
window はローカル変数と名前が衝突していなければ常に省略できる。
document は基本的に省略できない。
>>650 の件は多分、スコープチェーンの先頭に document が追加されているだけ。
with が使われているのと同じ。タグにハンドラ書くことないから、知らなかったけど。
>>687 javascript:location.href+="付けたい文字列";
でおk?
window.window.window.window.window.window.window.window.window.window.window.window.alert("window!!"); windowオブジェクトの中にwindowプロパティが循環参照になってるからこんなことも出来る
>>688-690 わざわざ書いて頂いてありがとうございます。
文字列を追加できました。
やっぱり何も知らないと無理ですね。
初心者向けのサイト観て来ます。
親切にありがとうございました。
HTMLタグに書いたイベントハンドラの実行コンテキストの件は新鮮だったな。 こんな振舞いをするとは。俺も知らなかった。
はっきり言えばJS1.0からあってHTML5にも明記されている IEはもっと複雑なルールがあるからMSDNでも見ろ
696 :
Name_Not_Found :2010/02/28(日) 16:54:42 ID:LTswKi3O
>>695 IEはようわからんな。
なんかwindowとかdocumentとか参照する度に時間食っている気がする。
なので、とりあえず同じ名前の変数作って入れ直してる。
JavaScriptで、マルチスレッドで処理を行うにはどうすればいいですか?
JavaScript マルチスレッド でググる
>>698 こういうのでも違うっていうこと?
var _document = document;
var _window = window;
継承の使いどころがさっぱり分からないんだけど 自己参照もできるのだからユーザー定義 関数でダメな理由があるのだろうか
>>703 いまいち話が見えないから具体例挙げてくれ
705 :
Name_Not_Found :2010/02/28(日) 19:30:40 ID:LTswKi3O
>>701 windowは正直わからんですが、documentは結構差が出ますよ。
var d = document;
var document = d;
だと二回目のvarの時点で失敗しますが、
var d = document;
eval("var document = d");
とすると、いい感じで期待通りの変数“document”の参照になる模様。
一回あたりの参照にかかる時間は微々たるものだけど。
>>703 自分は、まず動物コンストラクタを作る。
次に哺乳類コンストラクタを作って、動物を継承する、
次に人類コンストラクタを作って、哺乳類を継承する、
みたいなことは良くやりますよ。
あと、Arrayを拡張したオレオレArrayを作って、
コレクションになるようなオブジェクトのprototypeにオレオレArrayを
突っ込んどくと、オレオレArrayメソッドが使えるようになる、とかとか。
>>702 はかってみたら確かに差があった
getElementByIdとかを何度も同じ要素にやるのが
無駄程度の認識しかなかったわ
来週全部修正しよっと
>>705 windowはほとんど変わらんでしたよ
documentはだいたい1.2倍前後だった
グローバル変数を避けたがる奴が windowやdocumentというグローバル変数への依存コードを平然と書いて 複合文書に対応できない罠
>>703 無理すんな
そのうち同じような処理をコンテキストだけを変えてやりたくなるときがくる
そんときになったら共通プロパティを委譲して、コンテキストだけを保持するオブジェクトを作ることになる
その辺のアホくさい似非オブジェクト指向云々に惑わされる必要はない
documentへの依存コードを書くくらいならthis.documentと書くようにしておけ 関数として呼び出されればwindow.documentを指すし 必要ならFunction#callして適当なオブジェクトのdocumentを指すようにもできる 速度?知らん
>>710 やだ、どういうことかしら。
あたしには常にそんなコーディングスタイルにするメリットがあるとは思えないわ。
人の嗜好なんて千差万別じゃない?食糞然り。飲尿然り。
あなたのコーディングスタイルをそれに例えたら、きっと獣姦ね。
獣姦のメリットは何?(あたしには絶対むr!1)
712 :
Name_Not_Found :2010/02/28(日) 23:17:47 ID:7ggQ+u8v
OR条件がたくさんある場合の書き方で、|| を羅列させる方法以外に 見やすくていい書き方がないか調べたのですが、|| を羅列させるよりパフォーマンスが上がる方法ありますか?? ///////パターン(1)///////////////////////////////////////////////// var start = new Date(); for(var a=0; a<10000; a++){ var test = "10"; if(test == 5 || test == 7 || test == 9 || test == 10){ } } var end = new Date(); alert(end - start); ///////パターン(2)///////////////////////////////////////////////// var start = new Date(); for(var a=0; a<10000; a++){ var test = "10"; if(test.search(/^(5|7|9|10)$/) == 0){ } } var end = new Date(); alert(end - start); ///////パターン(3)///////////////////////////////////////////////// var start = new Date(); for(var a=0; a<10000; a++){ var test = "10"; var ary = [5, 7, 9, 10]; var j; for(var i=0,j=ary.length; i<j; i++){ if(ary[i] == test){ break; } } } var end = new Date(); alert(end - start);
713 :
712 :2010/02/28(日) 23:19:15 ID:7ggQ+u8v
ちなみに、 高速順に (1) > (2) > (3) でした。
>>712 そのケースなら switch はどうかしら?
switch早いな switch (test) { case 5: case 7: case 9: case 10:break; }
716 :
712 :2010/02/28(日) 23:46:55 ID:7ggQ+u8v
>>714 >>715 ありがとうございます。単純にswitchでよかったんですね。
///////■switch文/////////////////////////////////////////////////
var start = new Date();
for(var a=0; a<100000; a++){
var test = "10";
switch(test){
case "5":
case "7":
case "9":
case "10":
// 処理
}
}
var end = new Date();
alert(end - start);
///////■if文/////////////////////////////////////////////////
var start = new Date();
for(var a=0; a<100000; a++){
var test = "10";
if(test == 5 || test == 7 || test == 9 || test == 10){
// 処理
}
}
var end = new Date();
alert(end - start);
IEだとそれほど変化はないけど、Fifefoxだと差が歴然でした!!
>Fifefoxだと差が歴然 if文の比較が文字列と数字だから というかたったこれだけのスクリプトじゃ差が小さすぎるw実際のスクリプトで図った方が効果的じゃね
速度を気にするなら、 var test = "10"; をループの外に出した方が速いわね。
>>716 某サイトから引用。
If文では条件分岐の際に毎回変数の値を参照します。
一方、Switch文は値を比較する際に逐一変数を参照しません。ですから、最初に変数の値を
保持しておき、以降はその値を用いて比較を行います。
x引用 ○転載
>>711 >>710 にメリットを感じないなら、
オブジェクト指向のメリットの一つと言われるものに魅力を感じないということだ
確かにオブジェクト指向自体もスタイルの違いでしかないのかもしれないな
お前のそういう大胆なところ、嫌いじゃないぜ
ちょっと3つ質問があるんだがいいか? いや、別にアンケートとかじゃない 切実な悩みなんだ まずメモ帳で数千行とか書くのはそんなにおかしいか? 人に話すと必ずおかしいって言われるんだが 携帯でも書くし自分はこれが一番書きやすいと思うんだが それと変数名に2Byte文字を使うのは異常か? 見やすいし今まで問題起きたことはないから使ってるが問題起きることある? 普通の日本国内の環境で 最後にできる限り間隔を詰めたり短く書くのはきちがいか? スペースを空けたり行を揃えたりしてると面倒だし繋がりが見えにくくなると思うんだが いっそ1行で書いたらいいんじゃないかと思うのはまずいのかなぁ…
厳密に言うと、switch は型まで見るから、test === "5" ... にしないと等価じゃない。
みんなは"canvas"をどう読んでる? カンバスかキャンバスかそれとも他の読み方なのか
シー・エー・エヌ・ヴイ・エー・エス 楽しいな!
726 :
イ・パクサ ◆W4zDCnDhWhZY :2010/03/01(月) 11:22:26 ID:3F/QW/8Q
>>722 少なくとも自分の周りでは
1. レアケース
2. 異常。JSでcjkvを進んで使うとかどうかしてる。
3. 場合による。ファイルサイズ稼ぐためならアリかも。
その方が見やすいと思ってるなら、マジキチ。
メモ帳で数千行とかマジパねぇっす!
保存時に文字コードとか改行コードとか指定できたっけ
729 :
Name_Not_Found :2010/03/01(月) 12:51:22 ID:VXSj4TRE
>>719 じゃあIF文も場合によってはswitch文のが早いって事?
メモ帳はビルゲイツ最大の発明品
面接でメモ帳で全部作りましたって言ったら メwwモwww帳wwwwwみたいになった事はあるな 今ではエディタとってもおいしいです、というか変数と関数を リストで表示してくれるのと、正規表現が最高に感動した
おまえらオススメのエディタはないの?
あると便利なDreamweaver
DWって自動整形とか出来るの?
>>731 10年前ならまだしも、今日日ジョークにもならんわ
UTF-8にBOMとかいうウンコをつけるエディタの筆頭だし
マジレスするなよ・・
世の中にジョークのわからん奴っているよね・・
フリーのエディタでおすすめ教えて
メモ帳
メモ帳
メモ帳はフリーじゃないです
743 :
Name_Not_Found :2010/03/03(水) 12:33:30 ID:XZBolYmn
>>736 MS.comのファイルも全部BOM付きだしな。
エディタは個人的には
Ecrips > Emacs > EmEditor ≒ 秀丸 ≒ mi ≧ vim
744 :
Name_Not_Found :2010/03/03(水) 13:21:53 ID:IiAy4rgf
jQueryでボタンを追加してクリックしたらテーブルデータをクリップボードをコピーするプログラムです。 -----HTML--------- <table border="1" id="no1"> <tr> <td class="a">テキスト1-1</td> <td class="b">テキスト1-2</td> <td class="c" rowspan="2">←ここにボタン追加</td> </tr> <tr> <td class="d">テキスト1-3</td> <td class="e">テキスト1-4</td> </tr> </table> <table border="1" id="no2"> <tr> <td class="a">テキスト2-1</td> <td class="b">テキスト2-2</td> <td class="c" rowspan="2">←ここにボタン追加</td> </tr> <tr> <td class="d">テキスト2-3</td> <td class="e">テキスト2-4</td> </tr> </table>
745 :
744 :2010/03/03(水) 13:26:36 ID:IiAy4rgf
------script--------------- $(document).ready(function(){ $("table tr td.c").prepend("<button class=\"cb\">コピー</button>"); $(".cb").each(function(){ $(this).click(function(){ var a = $(this).parent("td").parent("tr").children("td.a").text(); var b = $(this).parent("td").parent("tr").children("td.b").text(); var d = $(this).parent("td").parent("tr").parent("table").children("tr td.d").text(); var e = $(this).parent("td").parent("tr").parent("table").children("tr td.e").text(); var cbcopy = a + "\r\n" + b + "\r\n" + d + "\r\n" + e; window.clipboardData.setData("text", cbcopy); alert(cbcopy); }); }); }); ---期待する結果--------- テキスト1-1 テキスト1-2 テキスト1-3 テキスト1-4 ---------------------- 最初の二つしか取れません。 正しい動作する方法をご教授いただけませんでしょうか。 また、もっと簡単に書ける方法もあればよろしくお願いします。 ただし、HTML部は変更不可という条件です。
windows 上なら Emacs より xyzzy がオススメ。
firebug
tbody?
Widows使っててフリーで使えるエディタなら、メモ帳を完全に超えるのはEmEditorフリー版くらいじゃない
750 :
749 :2010/03/03(水) 14:44:24 ID:???
Widows→Windows
>>744 $(document).ready(function(){
$("td.c").prepend("<button class='cb'>コピー</button>");
$(".cb").click(function(){
var cbcopy = new Array();
$.each($(this).parent().parent().parent().find("td:not(.c)"), function(){
cbcopy.push($(this).text());
});
cbcopy = cbcopy.join("\r\n");
window.clipboardData.setData("text", cbcopy);
alert(cbcopy);
});
});
動作しなかった原因はchildren()だな、children()は孫要素までたどってくれない
children()をfind()に変えただけでもいいと思う、試してないけど
それと、書き方にいろいろ無駄が多い気がする
td.aとかは特に理由ないなら.aのほうがいい
click()の前にeach()について、each()は該当する要素すべてに指定した処理を行うけど
今回の場合、単純にイベントを一つ登録するだけだからclick()だけでいい、each不要
click()は該当要素すべてに対してイベントを登録するので
あと、click()内の処理でeach()使って書いたけどテーブルのセルの数が少ないなら使わなくてもいい
まあ単純なプログラムなら処理速度気にせず動けばいいよ
753 :
Name_Not_Found :2010/03/03(水) 16:11:22 ID:PVE2ShTX
IE限定ならdocument.getElement.By.Idより document.allのが早いの? 参照要素が1000個前後ならallのが遅いってblogは見つけられたのですが
そんなの気にするなら自分で計ってみなよ 誰かに言われて鵜呑みにするだけなの?
大体何で IE 限定なんな?
756 :
753 :2010/03/03(水) 18:19:00 ID:PVE2ShTX
>>754 背景としてはプロジェクトメンバー内に団塊オヤジがいて
俺がgetElementByIdを使ってDOMってたら
オヤジがdocument.allのが早いしwwwうはww
とか言い出してきて、getElementByIdを全て変更しろと言ってきた
本当に早いか調べたら1000個くらいまでならgetElementByIdのがIEなら早い事が分かった
現プロジェクトでは1000もあれば十分な訳で(ry
ちょっと計ってみるわ
>>755 社内システムなのでIEのみの対応なんです
htmでVBscript記述してIE上で動作させたいのですが、記述のチェック・デバッグを行いたい場合 VB++をインストールすれば解決しますかッ
>>757 例えばundefinedの判定
foo === void 0
>>759 どうもありがとうございますm(_ _)m
function test(a) { return arguments.length; }; のように引数にaという名を指定しておいて 関数内でaの名前を使わないことを なんと呼ぶのでしょうか?
今なら君が名付け親になれるぞ!さぁ急げ!
>>756 わざわざ汎用性の低いスクリプト作る必要なくね
そういう企業がMSの足引っ張ってるんだし
放置プレイ じゃないの?
ファンクに(a)として挟まってるだけで使わないわけだから 「引数のインポ化」だな。さて、どこへ登録すれば?
(u)
(i)
>>763 document.all は 5大ブラウザでサポートてるぞなもし。
あれ?今確認したら動かない・・・・
strict だとダメなのか。
仕様書に無くね?
TypeError: document.all is undefined { message="document.all is undefined", more...}
allはIE独自の実装だったはずだよ、たぶん!
駄目じゃん
775 :
753 :2010/03/03(水) 22:44:36 ID:???
>>763 カタイ客だから多分10年後もIEかと
allのがやっぱ遅い結果になりました
10000とかだとIdのが早い
因みにallはIE以外だと動く物もあるみたいですね
ただ、保障はされてないみたいだけど
document.allは主要ブラウザ(Firefox、Safari、Chrome、Opera)実装してるけど、 どのブラウザもif(document.all)ってやるとfalseを返すようになってる(クローキング あと、FirefoxはHTMLを互換モードで表示してる時しか使えない。 もちろん非標準。
別鯖からフレーム枠を使って自分のホームページが参照された時に <frame>タグか<iframe>タグのどちらを使って参照されたかを判別するパラメータってありませんか? どちらかかによって挙動を変えたいんですが
frame内からjsで判定って無理じゃね?
779 :
777 :2010/03/04(木) 00:46:20 ID:???
自鯖内なら判別できるんですけどね。
iframeは、別ドメインからの通信はできないよ
別にそんな決まりなくね
frameElementが使えると思って調べたら非標準だった
783 :
777 :2010/03/04(木) 01:41:44 ID:???
非標準でも使えるのならいいけど、使えないんですよね。これが
>>777 別鯖ってことはドメインが違っていて、そっちのソースも弄れないんでしょ。
じゃあ無理。ドメインの制約は厳しい。
別鯖側のHTML弄れるならnameプロパティとかでなんとかできるけど。
>>777 裏技的な方法として、iframe内のページにメインページの鯖にあるjsを読み込んで、
そのjsが同じ鯖のFlashを呼び出すようにする。
そのFlashが呼び出されたときシェアードオブジェクトに判別用の文字列を保存して、
更にメインページにもFlashを配置しておいて、そのメインページにあるFlashが
シェアードオブジェクトに保存した文字列が変更されたかどうかを判定させるように、
イベントリスナーで毎フレームごとにスクリプトを走らせる。
変更されたのが認識できたらイベントリスナーをremoveし、FlashからJavaScriptへイベントを投げる。
ここまでいけたら、JavaScript側でなんらかの処理ができるかと。
>>785 不自然ってかvalueOf()メソッドオーバーライドしてるんだろ?わざと
<div id="hoge"> あいうえお<br> かき<b>く</b>けこ </div> っていうHTMLがあって、 $(document).ready(function(){ alert("■jQuery使わない場合\n\n" + document.getElementById("hoge").innerText); alert("■jQuery使う場合\n\n" + $("#hoge").text()); }); jQuery使わないversionでは、改行が反映され、 jQueryを使うと、改行が反映されません。 jQueryを使っても、 ---------- あいうえお かきくけこ ---------- となるようにするにはどうすればよいでしょうか?
\r\n? \n\nって不自然じゃね
792 :
Name_Not_Found :2010/03/04(木) 08:10:47 ID:oUUSe+JF
>>790 論点はそこではなく、
divで囲まれたテキストを取得する際に、
「あいうえお」と「かきくけこ」の間に改行が入る入らないの話だろ
>>789 innerText はIE独自仕様なもの、text() はクロスブラウザで
動作するようにjQueryで作ったものなので、もともと仕様が
違うんでしょ。text()は「テキストノードを結合して返す」
ので<br>とかは削除されるというのが仕様。だから不可能。
不満なら自前でhtml()から不要なタグを削除して<br>は改行に
変換するみたいな関数を定義すればいいんではないの。
あぁ盛大に勘違いしてた。 〜場合のあとの改行が反映されないのかと思ってたw text()だと「指定した要素が持つテキストノードを結合したものを返す。」らしいから無理。 $("#hoge")[0].innerTextじゃだめ?
795 :
Name_Not_Found :2010/03/04(木) 10:07:02 ID:pjritBYE
>>795 肝心のswfファイルは入手済みだろうな
パスの指定が間違ってるんだろ ブログにswfとjsUPしてないオチ
798 :
Name_Not_Found :2010/03/04(木) 11:07:03 ID:y3SOidfw
>>795 誘導した奴だれだよw
JS全く関係ないじゃん。
<img>とかに登録したイベントリスナーを実行する方法ってない? 例えば<input type="button">のclickイベントだとclick()で実行できるとか
$("img").click() jQueryつかわない方法は忘れた
>>788 あれだけだとそう見えるか
undefined === void 0
var x; x === undefined
document.all !== undefined
typeof document.all == "undefined"
document.all[0] === document.all.valueOf()[0]
おまけ
document.all == document.all.valueOf()
document.all == document.all
document.all !== document.all.valueOf()
document.all !== document.all
803 :
Name_Not_Found :2010/03/04(木) 13:24:17 ID:pjritBYE
>>797 upしております
>>796 入手しております
ちがうんですね><
ちょっと他あたってみまーす
>>789 強引だがこんなのもありか
alert("■jQuery使う場合\n\n" + $("#hoge").html().replace(/<br>/ig, "\n").replace(/<.*?>/g, ""));
>>789 .text() だとテキストノード内の改行が除去されちゃうって話だと思うんだけど、↓
ttp://www.glamenv-septzen.net/view/453 によれば IE では dom で改行やホワイトスペースだけのテキストノードは取り出せない
ということなので、ブラウザ判別して IE なら innerHtml 、そうじゃなければツリーを辿って
テキストノードのテキストを連結、というような方法しかないような気がする。
この辺の動作がまちまちだから .text() はそういう空白をざっくり除去しちゃってるんだろうな。
<br>はテキストじゃないからだろ
質問させてください。
ここのスレで聞くのは正しくないのかもしれませんが、
他に見当たらなかったのでおねがいします。
HPで写真を公開するため
http://www.stickmanlabs.com/で 公開されているlightwindowを利用しようと思ったのですが、
閉鎖されたのか、落ちているのか解りませんが、アクセスできません
別の場所で公開されている等の情報をお持ちの方がいれば教えていただけませんか。
zipをお持ちの方がいたら頂けると非常に助かります。
[email protected] よろしくお願いします。
場違いでしたら誘導していただけると助かります。
810 :
807 :2010/03/05(金) 00:22:52 ID:???
>>808 >>809 ありがとうございます!
本当に助かります。
ずいぶんググったんですが、ダウンロードへのリンクばかりで、アクセスできず
なかなかファイル自体に行き着けなかったんですよね...
━━━本スレに書く事を許される者は以下の通り━━━━━
一、自ら学んでJavaScriptコードを書く意思を持つ者
━━━━━━━━━━━━━━━━━━━━━━━━━━━
自分で書けるようになったら、またおじゃまします。
ありがとうございました。
現在作成しているブックマークレットのなかで、 スタイルシートを読み込んでスタイルを適用しているのですが、 このとき、 既存の(ブックマークレットを使用したサイトの)のスタイルの影響を受けないようにするには どうすればよいでしょうか? どうか知恵をお貸しください。
// RSS Feed 読み込み $.get( "/feed/news.xml", null, peropero); var peropero = (function(req){ var item = req.getElementsByTagName("item"); for(var i=0;i<item.length;i++){ var title = item[i].getElementsByTagName("title")[0]; alert(title.firstChild.nodeValue);//Chromeでエラー document.getElementsByTagName("body")[0].appendChild(title);//IEでエラー } }); ちょろ目さんは " Uncaught TypeError: Cannot read property 'firstChild' " となり、 IEは"インターフェイスがサポートされていません"となります この場合どうやって対処したらよろしいでしょうか。
jsスレでの答えなら linkでstyleシート読み込んでいるものをhtmlから除外&styleタグをすべて除外 簡単なのは、!importantを適用させたいスタイルシートのすべてにつける。
>>811 titleってhead内に入れないといけないんじゃないっけ?
item[i]の中身.match(/<title>〜略)で中身の文字列取得して、appendChildは別にまた要素作ればどうだろう
>>814 XMLなんだよね・・これ、とりあえずtextContentで取れることが分かったので一応解決
しかしChromeどうなってるんだこれ
>>> title.textContent
"ほげほげ"
>>> title.nodeValue
undefined
>>> title.nodeType
1
>>> title.firstChild
[ undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined,
undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined,
undefined, undefined, undefined, undefined ]
>>> title.childNodes
[ [ undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined,
undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined,
undefined, undefined, undefined, undefined ] ]
なにこの大量のundefined
ちなみにinnerHTMLも駄目 >>> title.innerHTML undefined >>> title.innerText undefined
>>815 安価ミスしてたねごめん。
body.appendChildの部分はhtmlだよね?だからtitleそのままはどうだろうって思ったんだ。
req.matchでitemの配列作っても同じこと出来るはず。
firefoxもChromeと同じでChildとかで取得するとundefinedが増えたはず。
>>817 有り難う
エラー起こしてる場所勘違いしてた・・
別の場所にある item[i].getElementsByTagName("dc:date") が正しく取得できなかったからでした
<item>
<dc:format>text/html</dc:format>
<dc:date>2010-03-05T20:00:00+09:00</dc:date>
</item>
から要素<dc:date>を取得するのってChromeはgetElementsByTagName("dc:date")で取れなないのか?
IE、Firefoxでは動作するのになんでだろう
>>818 名前空間の問題じゃない?
getElementsByTagNameNS()を試してみるとか。
820 :
Name_Not_Found :2010/03/06(土) 00:41:49 ID:8mcAW0+z
質問させていただきます。 複数のチェックボックスの一括選択を行うボタンを作成しようと思い 下記のように記述いたしました。 IEでは正常な動作を確認したのですが、Firefoxでは動作しません。(ボタンを押しても無反応です) 自分なりに調べてみたのですが、解決法が見つかりませんでした。 書き方に間違っている点がございましたら教えていただけないでしょうか? どうぞよろしくお願いいたします。 -------以下はJavaScript---------------- function test_all() { var test_input = document.getElementById("test").getElementsByTagName("input"); for (var i = 0; i < test_input.length; i++) { if(test_input[i].type == "checkbox"){ test_input[i].checked = true; } } } -------以下はHTML---------------- <input type="button" value="全て選択" onclick="test_all()"> <span id="test"> <input type="checkbox" name="aaa" value="テスト1" />テスト1<br /> <input type="checkbox" name="aaa" value="テスト2" />テスト2<br /> <input type="checkbox" name="aaa" value="テスト3" />テスト3 </span>
>>820 ウチのversion3.5.5だと問題なく動いてるけど。
>>820 見た感じ動くように見えるけどなあ
Firefox使ってるならFirebug使ってみたら
824 :
Name_Not_Found :2010/03/06(土) 02:01:23 ID:8mcAW0+z
>>822-823 ありがとうございます。
3.6にバージョンアップしてから再度試してみましたが、やはり動作していないようです。
Firebugの使用方法を勉強して、原因を追究してみようと思います。
825 :
Name_Not_Found :2010/03/06(土) 02:42:33 ID:8mcAW0+z
>>822-823 >>820 ですが、解決いたしました。
原因はケアレスミスで、html上での<span>タグの位置の誤りでした。
(上記コードとは異なり、<td>タグをまたいでしまっておりました)
お騒がせして大変申し訳ございませんでした。
アドバイスいただき、本当にありがとうございました。
javaかVBScriptから文字列データを所得して、ハンドルが解っているプログラムにデータを渡そうと考えています。 プログラムにデータを渡した時以外は処理をしないように、クリップボード経由等で常時監視は使わないようにしたいです。 JavaScriptとVBscriptからWM_COPYDATAは使えますか? それ以外ではDLL登録して、CreateObjectでプログラムの関数に引数としてデータを渡して、プログラムに処理をさせるぐらいしか思いつきません。
使えるんじゃね? なぜまずやってみない? つかWSHの方の話なら、そっちのスレに行ったほうが良いと思う そもそもWM_COPYDATAは単なる数字だから、これがプログラム中で認識できないなら そのデファインされてる値を送っちゃっても良いと思う あるいはsendkeyで特定の言葉送ってやって、それが来たら、クリップボード見に行くとか あるいは全部sendkeyで送って、受け取るほうは、ある文字列が着たらその後はデータとかやってもいいんじゃね ばかっぽいけど
>>827 プログラム作るのにCの勉強をしていたんですが、script関係は触ったことがなくて記述が解りませんでした。
Scriptの記述や基本が解らない以前に、前提が間違ってないかなと思って確認のため質問してみました。
もうすこし勉強してからいろいろ試してみます、ありがとうございました。
829 :
Name_Not_Found :2010/03/06(土) 23:05:52 ID:CCsGYAuS
<script type="text/javascript"> alert(window); </script> ↓ [object Window] <script type="text/javascript"> alert(window.window); </script> ↓ [object Window] <script type="text/javascript"> alert(window.window.window.window.window.window.window.window.window.window.window.window.window.window.window.window); </script> ↓ [object Window] こりゃいったい何がどうなってんですか?
これテンプレに入れていいんじゃないか
循環参照ですか。つまり自分自身(window)を指していると。。。どうもありがとうございます。
すごくアホな質問かもしれないが 変数を動的に作る方法は無いのだろうか 基本その類いは配列使うので無くても特に困らないのだけど。
for(var i=0;i<100;i++){ eval("var _"+i+" = 'eval is evil';"); }
835 :
Name_Not_Found :2010/03/07(日) 05:10:02 ID:uarazMr/
なんか煙たがられがちだよな、evalって。
JSONの登場でちょっぴり復権した。
ちょっとだけよ
JSONを読むのにevalを使う必要は必ずしもないというか、 使わない方がベターでしょ。
また宗教論争が始まるのか
>>833 試さないで書いてるんだけど、
varname = 'foo';
varvalue = 42;
this[varname] = varvalue;
みたいな感じ?
そんなに嫌われてるならデプリケイテッドにすればいいのに、eval。
ECMA-262 5th ではstrictモードができて、strictモードの 中ではevalでローカル変数を作ることはできなくなったね。
jQueryのJSONってeval?
634 名前:nobodyさん[sage] 投稿日:2010/03/07(日) 14:48:58 ID:??? jQueryのJSONってeval? 全く関係ないPHPスレで聞くような池沼はやっぱりマルチするんだな
845 :
Name_Not_Found :2010/03/07(日) 18:16:19 ID:uarazMr/
一時期、反eval原理主義に傾倒して、 JSON文字列を手で分解する関数作ったりもしたけど、 量が多くなるといかんせん重かったな。 ちゃんとデータの出入りがコントロール下にあって、 スクリプトを外から書き換えられないようになっていれば、 JSONとか、組み込みコンストラクタの書き換えとかに、 eval使うのはやぶさかではないと思う。 evalを使っている、というだけで「お宅のサイト危険ですよ」 とチクリを入れる業者には閉口する。 クラへの説明が大変すぎる。
eval を使って、何をされたら危険なのかがよく分からない。 そこでevalへ渡す値にフィルターを通して影響度が高そうなものを 全部除外しようとしているんだけど、 何か不足はある? 以下除外 ・そのHPで使っている全変数、関数へのアクセス ・document.〜 以下全て ・appendChild, createElement, setAttribute, Function ・setInterva, setTimeout, eval, execScript, addEventListener, attachEvent, onイベント, ActiveXObject ・open, close, showModalDialog, showModelessDialog
>>846 概ねXSSの危険性と同じ
そもそも何にevalを使おうとしてるんだ?漠然と使うもんじゃないぞ
>>847 >概ねXSSの危険性と同じ
想像していた以上の問題は無いみたいですね。
evalでしかできない使い方があるので。
eval使ったスクリプトがあると、サーバ上のデータが改変される・・・? やっぱりよくわからん。
850 :
846 :2010/03/07(日) 20:17:43 ID:???
>>849 URLやサーバ上のデータはそのままで、全然別のページを表示できてしまうってこと。
銀行やショップならいざ知らず、俺ら個人運営のホームページに
個人情報を入力してもらえるほどの信用なんて元から無いよ。
(function(){ var script = window.location.hash; eval(script); })(); こんなのがあると危ないってだけ
hashだから#が含まれてたな var script = window.location.hash.substr(1); に訂正
853 :
849 :2010/03/07(日) 20:27:32 ID:???
>>850 全然別のページを表示させるのは閲覧者側?サイト制作者側?
どちらに対して危険なのかがよくわからないのです。
>>851 が危険なのは理解しました。
evalの引数チェックなんてどうやんの? 渡すのは文字列だから、適当に分割して渡したり変数に入れて渡したり どうとでも出来ちゃうような気がするけど。
evalに渡す引数が完全にユーザのコントロール下にあるならまるで問題ないのに、 たまにevalってだけで条件反射的にダメ出しする人がいるのは何なんだろう。 引数チェックが甘いってんなら、それはスクリプト作者の問題であって eval自身の抱える問題ではないと思うんだが。 適切に実装してあれば何の問題もない。 いや、たとえ引数がノーチェックであっても、ユーザのコントロール下にあるなら 何等問題はないわけで。 現実問題として甘い実装をするヘボ作者が後を絶たないから とにかくevalそれ自体が危険であるかのように騒いで問題意識を植え付け evalを使いにくい(慎重に使わざるを得ない)雰囲気作りをしていこう! ってことなんかな。 「危ない引数を渡すと危ないよ」ってのはある意味当たり前で、 それはevalに限らずコマンドプロンプトだって何だってそうなわけで。
856 :
846 :2010/03/07(日) 20:54:32 ID:???
>>853 危ないのは閲覧者側でしょうね。個人情報をキー入力して盗まれる可能性が
>>854 文字列として分割すると文字列としてしか認識されなくなるので合体しても意味ないし、
チェックされずに変数に入れる余地もないから無理では?
サーバー側でちゃんとチェックしていれば大丈夫だと思うけど
858 :
853 :2010/03/07(日) 21:02:50 ID:???
>>856 あぁ、そっちでしたか。
>>846 の書き方見てサイト管理者&閲覧者にとってかと思ってしまい頭が???な状態でした。
859 :
854 :2010/03/07(日) 21:09:25 ID:???
>>856 確かに。何か勘違いしてたw
どう渡そうがチェッカーが受け取るのも普通に文字列だわなw
クライアントサイドで危険も何もないだろ…
new Image().src='
http://crack.site/ '+id+pass
みたいなことができてしまえば1行でユーザーのパスが取れるから、慎重になるのは当然のこと。
安全に書こうと思ったら、何が実行されるかわかりにくいevalは避ける方が自然だろ。
ポイントはわかりにくいってところだからな。
もちろん、evalを使うしかないなら使えばいいし、使う必要がないならevalは使わない方がいい。
「evalは使わない方がいい」を否定する理由があるなら是非聞いてみたい。
そんなことが出来てしまう時点でXSS脆弱性を孕んでます 終わり
863 :
Name_Not_Found :2010/03/07(日) 21:52:54 ID:vOAs1Osi
そもそも外の入力をそのままevalしたら問題あるってのはJavaScriptに限った話じゃないよね
自分のサイトで自分がコントロールできている値をevalするなら問題なんてない
ただ、「自分でコントロールできている」って思い込んで外から来た値をevalしちゃう人が居るから
>>861 の言う通り使うしかないなら使えばいいけど使う必要がないなら使わない方がいい
XSS自体も金が絡んだり、個人情報持っているようなサイトでやらない限り大した問題じゃない、 無料のレンタルスペース借りたら同じ事出来るでしょw evalなんて好きに使って構わない
外の入力からサーバーのデータを変更するってんなら確かに慎重になるべきだけど サーバーから信頼のおけるデータをロードしてevalするのは別にいいでしょ ただそれにしたってサーバーサイドでチェックすり抜けて危険な状況に陥るわけだから チェックを何重にするってのもわかるけどなんか気持ち悪いな
evalってevaluationの略?だから読みはエバル?
イ・ヴァル
868 :
Name_Not_Found :2010/03/07(日) 22:38:45 ID:uarazMr/
--diary.txt-------------- [ { “date“:“3月1日“, “title“:“今日の出来事“, “desc“:“寝て起きて飯を食ってうんこして寝ました。“ }, { “date“:“3月1日“, “title“:“今日の出来事“, “desc“:“寝て起きて飯を食ってうんこして寝ました。“ } ] ----------------------- (fanction(){ XHR.open(“diary.txt“); 略 var dat = eval(XHR.response.text); })() こんなんでも「御社のサイトは危険ザマス(キリッ」とかw で、予備知識なくこんなこと言われた真面目なweb担当者は あせって「javascript eval 危険」でググっちゃう。
javascript eval 捨てたい
要は、何がどう危険なのかを理解しないままに 思考停止に陥って ただ闇雲に「eval危険eval危険」と 唱えているのが一部いるってことだな
eval自体は危険じゃないな。bookmarkletで自由に使えるんだから。
>>851 みたいなのが書いてあればそりゃあアウトに決まってる。
ていうかjsonのパース以外でeval使う場面にまだ出くわしてないんだが
日本のことだし、多分「eval子タン」とかいう萌えキャラ作って 「べ、別に危険じゃないんだからねッッ!!」とでも言わせときゃ みんな使ってくれるようになると思う
危険じゃないって主張するのは構わんが、 evalを使うと(高速になる|安全になる|可読性があがる)といった理由がない限りは 「evalは使わない方がいい」だろ evalを擁護する理由がわからん
>>875 それだとなんか逆に危険な感じがするのは勘違いなのだろうか
読みはイ・ヴァルコタンなの・・・
json扱う上で十分有用だと思うけど
>>877 ナウシカが「ここには何も無いわ」とわざわざ言って何か有るように感じさせるのと同じ事
evalってなんかinnerHTMLみたいだね
eval使えば楽。じゃだめなのか? forだって使い方間違えたら危険なんじゃね
イベント処理にJavaScriptで追加する記述も危ないんじゃないかな
885 :
Name_Not_Found :2010/03/07(日) 23:32:06 ID:vOAs1Osi
>>882 ぱっとソース見た感じevalという単語があったんだが
json2.jsはJSONとしての正当性チェックして、最終的にはevalしてた気がする
>>846 もjson2.js使うべきだな
JScriptはネイティブでJSONをサポートし始めたな。
>>883 >>884 なんで危ないかどうかって話にもってくの?
>>888 そういやjson2.jsはブラウザがJSONサポートしてれば、そっち使うからそれもメリットだね
>>887 JSONはeval()関数を使うことがベースとなっているようで
>JSONは前述の通り、JavaScriptのサブセットなのでeval()関数で評価することで
>JavaScriptオブジェクトに変換することができるという特徴があります
>>889 あれ、「evalは使わない方がいい」理由は「危険だから」じゃなかったの?
ただ単にeval使うよりはjson2.js使ったほうがいいか
>>891 「evalは危険だから使わないほうがいい」って主張してるやつはこのスレのどこにいるんだよ。
eval使わなくてもsetTimeout("alert('')",0)みたいに出来るし
言語スレではよくあること
(new Function("alert('')"))()みたいにも出来る!
んで結局のところなんでevalって使わない方が良いんだ?
サーバーアプリが脆弱な場合は使わないほうがいいんじゃないか
Firefoxの拡張界隈ではevalを使って既存の関数の動作を書き換えたりするらしい そういう動作をする拡張はレビュワーに「むやみにeval使うな!」って怒られるとか
eval("alert('むやみにeval使うな!')");
function func() {alert("むやみにイベント処理書き換えるな!")} document.body.onload=func;
使わない方がいいというより、 可読性とか速度とか考えるとevalを使う理由がなくて滅多に使わない
ajaxで返ってきたデータのhtmlの中のスクリプトを動かしたいときはevalせざるを得ないと思うんだけど 他にいいやり方あったら教えて欲しいっす。
>>905 htmlの中のscriptをevalってどうやってるの?
文字列から正規表現とかでscriptの中を取り出してevalとか?
普通はHTMLとJavaScriptを分けるよね。
それができないのかな… eval云々以前の問題のような…
ajaxで返ってきたデータのhtmlに中のスクリプトを入れない
909 :
846 :2010/03/08(月) 01:55:10 ID:???
>>905 状況がよく分かりませんが、動かしたいスクリプトが決まっているのなら、
サーバ側でなく端末側にそのスクリプトのパターンを予め持たせておけばいいと思いますが。
910 :
905 :2010/03/08(月) 02:00:44 ID:???
え?やらないんだ。
jQueryなんかは勝手にやってくれるし、prototype.jsなんかでもevalScritpsのオプションをセットすると
>>907 の言うように中のスクリプトを切り出して評価してくれるから当たり前に使ってたけど。
911 :
Name_Not_Found :2010/03/08(月) 04:12:46 ID:Ye2aGSYy
>>705 みたいなことしようとすると、
evalするしかないな。有用だと思う。
>>910 jQueryは確かDOMで<script>作って実行してたぞ
考えなしのeval批判は、 考えなしのgoto批判に似てる。
evalは批判しないがgotoは必要ないだろう
あんまりevalな、と言いたい。
モーダルウィンドウの嫌われ具合と似てる モーダルウィンドウだと何か致命的な事あるの? 何か無駄に嫌われてるよね
プログラミング学習における中二病みたいなモンか。
他人がevalとかgoto使おうが知ったこっちゃ無い ただ自分はそんな物使わない でもウインドウ開くのは勘弁な
5:積極的に使うべき 4:なるべく使ったほうが良い 3:どちらでもよい 2:なるべくなら使わない方がいい 1:使わない方が良い evalは2、それ以上でも以下でもない
evalなんて使う機会が無い。 jsonくらいパーザを書いてしまえ。激遅のw
もー、だるっ
じぇいっ、そんした
>>916 Chromeってアップデートするのにバージョン情報ダイアログを開く必要あるけど、
それを開いてる間はブラウジングできないだろ?
ユーザーエージェントでの判別を書きました。
firefoxで偽装して確認したところ問題なかったのですが、
('iPhone','iPod')←この部分が正しい表現なのか間違っているのか
教えてください。
<script type="text/javascript"><!--
if(navigator.userAgent.indexOf('iPhone','iPod')!=-1){
//iPhone iPod のコード
} else {
//上記以外のコード
//iPhone iPod 以外のページへジャンプ
location.href='
http://www.apple.com/jp/iphone/ ';
}
// --></script>
間違ってます(^o^)
927 :
924 :2010/03/08(月) 16:29:04 ID:???
>>927 それでindexOfの引数の意味はわかったのか?
if(A) 条件Aを満たすとき
if(!A) 条件Aを満たさないとき
if(A && B) 条件Aと条件Bを満たすとき(AND)
if(A || B) 条件Aと条件Bのどちらかを満たすとき(OR)
「'iPhone'を含むとき」の方法がわかるなら
「'iPhone'もしくは'iPod'を含むとき」もこれでわかるだろ
javascriptの勉強をするつもりがない答えだけほしいというならスレチ
900超えたのでテンプレ論議あれば今どうぞ。
930 :
924 :2010/03/08(月) 17:29:57 ID:???
931 :
Name_Not_Found :2010/03/08(月) 17:32:25 ID:efU87MY0
>>928 930の続き
もしindexOfなら
(多分動くと思うけど、違うような気がします。)
<script type="text/javascript"><!--
if((navigator.userAgent.indexOf("iPhone")!=-1) ||(navigator.userAgent.match("Pod")!=-1)) {
} else {
location.href='
http://www.apple.com/jp/iphone/ ';
}
// --></script>
時間がなかったので、これから検証!
あくきん くらった!
>>929 ネタとしてはこのへん
>>406-424 >>575-578 あとは
>>691 ?
・JavaScriptの全てのグローバル変数は「グローバルオブジェクト(window)」のプロパティとなる
window自身もその例外ではないため、window.window.window.…という循環参照が可能
と書き直してみたけど、いらない気がしてきた
934 :
Name_Not_Found :2010/03/08(月) 18:09:56 ID:GGXjTwob
>>923 新規にブラウザを開けないんだっけ?
クロームはわからんがIEとかで
他にモーダルのデメリットってある?
>>930 なんで正規表現なのに個別なんだよ。
/(iPhone)|(iPod)/i とかさ。
>>806 勘違いしてレスしてる連中が <br> に拘ってるだけで、
元の質問の innerText の改行は html のテキストにある改行だろ。
そもそも innerText は <br> を改行に変換したりしないしさ。
モーダルでもalertとconformくらいは別によくね
conformじゃなくてconfirmでした
読みやすさじゃない?
iつけるならPじゃなくていいやん。 /ip(hone|od)/i
/ip/i でいいって事はないか?
>>939 数値演算でも、優先順位に迷ったら括弧付けちゃえってのはある。
後で読む他人(明日の自分も含む)の事を考えて、
>>940 の通り。
正規表現に優先順位とな
>>941 正規表現の柔軟性がかえって仇になってると思うけどなあ
!! みたいに!が二連続してるのってなんなんですか? 検索してもひっかからなくてこまっています よろしくお願いします
否定の否定または二重否定
>>947 なるほど、いっぱいページがでてきました
ありがとうございました!
949 :
Name_Not_Found :2010/03/09(火) 07:57:46 ID:eSdkOC3w
>>937 alertは元々モーダル的な動きじゃ…
頭にきたから新規ウィンドウは全てモーダルでやる事にした
head内にある、特定のスクリプトをオフにする スクリプトの書き方を教えてください sleipnirのseahorseで使いたいと思っています
>>944 例えば /yes|no/ の時、
・「yes」又は「no」
・「ye」に続いて、「s」又は「n」、更に続いて「o」
なのか迷う位なら、括弧で囲んじゃえって事。
>>951 /yes|no/ はyes no yeso yeno にヒットする
/(yes|no)/ はyes no yeso yeno にヒットする
/(yes)|(no)/ はyes no yeno yeno にヒットする
あれ?
最後のyeno yenoはyeso yenoだよな? 数値計算で()はわかるけど正規表現って()で優先順位は変わらねぇんじゃね。変わるとすれば別のマッチになるんじゃない
>>951 正規表現やりなおしたほうがいいんじゃね、デタラメすぎる
/ye (s|n) o/ なん…だ…と……!?
>>953 >>951 の後者のパターンにしたいなら
/yes|no/ じゃなく /ye(s|n)o/ な訳で、
それは正に | の優先順位が変わってるんじゃないの?
958 :
957 :2010/03/09(火) 18:15:37 ID:???
>>953 >優先順位は変わらねぇんじゃね。変わるとすれば別のマッチになるんじゃない
優先順位が変わる事で結果が変わるのは、数値演算でも同じでしょ。
960 :
953 :2010/03/09(火) 19:07:10 ID:???
>>956 ,959
確かに。頭の中でmatchされる文字列は同じ(この場合はyes,noの二種類)
と考えていたら変な文章になってたわ。
日付でnew Date("2010/2/29")ってやっても例外にならないで勝手に1日ずらされちゃうんだね new Date("2010/69/99")みたいに適当なことやっても例外にならないのを今日初めて知った こういうのはむしろ例外だしてほしい気がする
963 :
Name_Not_Found :2010/03/09(火) 21:19:23 ID:n0vsvjFJ
>>961 自動補正されるのを逆手にとって、面倒だったから連番の日付を設定する時に月外でも無視して指定してたんだ(1月30日・1月31日・1月32日みたいに)
大概のブラウザは動くんだけど、chromeはエラーを返してきた
結局組み直したぜ、ちくしょう
>>961 chromeに例外だしてもらって良かったな
966 :
961 :2010/03/09(火) 23:24:54 ID:???
なんだchromeは例外出すのか ちゃんと試せばよかった 日付チェック作り直しだわ
>>964 Chromeは何月でも31日までは良きに計らってくれるみたいだね。32日はダメ。
>>2 の差し替え案
>>419 +
>>423 +
>>411 【質問を書く上で】
1)「どんな意図で/何を/どう」操作した場合「どのように」動作させた
いのかを、一般的な用語で簡潔に説明してください。ただ「動きませ
ん」ではわかりません。脳内オレオレ用語は混乱のもと。
2)自力で調べたこと/試したことを明記のこと。OS、ブラウザ(+バージョ
ン)、(あれば)エラーの行と内容を必ず書きましょう。エラーの行と内
容を見るのはIE8、Firefox、SafariのJavaScriptコンソールで。
3)質問に関するソースコードを出来る限り貼ってください。余分が少な
く、コピペだけで動作やエラー再現のできるものが理想です。長い(1
レスで入らない)場合はアップロードする等工夫を。
4)閲覧者の迷惑になる質問は回答されません。別窓を多数開く、閉じる
/戻る/クリックを妨害、画面占有、など。「分かんねえの?」と煽って
も無駄です。
5)「初心者なので」「初心者だから」「初心者ですみません」とか書か
ない方が無難です。知らない、できない、わからない、まちがい、
は誰にでもありますから。
折り返しが気にくわん、なんか意図でもあんの? ついでに一部表現を修正 IEのことがあるからバージョンは書かせた方がいい 【質問を書く上で】 1)「どんな意図で/何を/どう」操作した場合、「どのように」動作させたいのかを 一般的な言葉や用語で簡潔に説明してください。 「動きません」ではわかりません。脳内用語・オレ用語は混乱のもと。 2)自力で調べたこと/試したことを明記のこと。 OS、ブラウザ+バージョン、(あれば)エラーの行と内容を必ず書きましょう。 エラーの行と内容を見るのはIE8、Firefox、SafariのJavaScriptコンソールで。 3)質問に関するソースコードを出来る限り貼ってください。 余分が少なく、コピペだけで動作やエラー再現のできるものが理想です。 1レスで入らないような長いソースの場合はアップロードする等工夫を。 4)閲覧者の迷惑になる質問は回答されません。 別窓を多数開く、閉じる/戻る/クリックを妨害、画面占有、など。 「分かんねえの?」と煽っても無駄です。 5)「初心者なので」「初心者だから」「初心者ですみません」とか書かない方が無難です。 知らない、できない、わからない、まちがい、は誰にでもありますから。
>エラーの行と内容を見る クロムでもデフォで出来るよ。 5、書かない方が無難です。 書いても好感は得られません。 ってどうだろう。無難です。っていうのが気になる。
今結論が出ないのなら次回回しにするしかないと思うが。もう すぐ975だよ。合意がないものを入れるとまたもめるから。
下記のコードを$("img")を使って(jQueryを使って) 簡単に書くことってできますか? var mx = 500; for(var cnt=0;cnt<document.images.length;cnt++){ if(document.images[cnt].width > mx){ document.images[cnt].width = mx; } }
var mx = 500; $.each($("img"), function(){ if( $(this).width() > mx ) $(this).width(mx); });
文字列内の検索において
ひらがな カタカナを区別しない
大文字 小文字を区別しない
全角 半角を区別しない
と言う条件で検索を行いたいです。
大文字小文字区別なしなら正規表現のIgnoreCaseで良いと思うのですが
その他がイマイチわかりません。
あるかないかだけ返ってくれば問題ないのですが、一番スマートなやり方ってどんな方法でしょうか
カタカナ⇔ひらがな
全角⇔半角
で文字列を変換するサンプルは
ttp://homepage3.nifty.com/aokura/jscript/ 等が見つかるのですが
こんな感じでどちらかに統一してから探す、くらいしか自分では思いつかないのですが
普通は正規化する
976 :
972 :2010/03/10(水) 14:30:24 ID:???
977 :
Name_Not_Found :2010/03/10(水) 14:53:48 ID:HEK3TkMC
<div class="a"> <div id="b"> </div> <div class="c"> </div> </div> このようになっていたときに、 var get_id = document.getElementById('b'); でidを取得して、その親要素であるaクラスのdivのinnerHTMLを取得することは出来ますか? 方法を教えてください。
978 :
977 :2010/03/10(水) 14:58:57 ID:???
自己解決しました
できます。 親を取得して、innerHTMLを取得すればいいのです。
981 :
Name_Not_Found :2010/03/10(水) 16:00:23 ID:HEK3TkMC
>>980 すみませんでした。
>>979 の通りです。
質問なのですが、
str = document.getElementById('body_text')
のような場合に、body_textのIDを持つ要素が無かったらどうなるんですか?
どうにもなりません。
983 :
Name_Not_Found :2010/03/10(水) 16:40:04 ID:HEK3TkMC
エラーになるのかスルーされるのか?
自分で試すって発想はないの? 面倒なテストならともかく数分でできるでしょ
>>983 nullを返す(エラーにはならない)
事前のnullチェックは基本
strの値がなんなのか確認する術を知らんのかね?
試したけどどうにもなからなかったよ
987 :
Name_Not_Found :2010/03/10(水) 17:39:49 ID:HEK3TkMC
>>986 こういうところがJavaScriptの良い面かつ悪い面で
他の言語のように悩むことはない点かつ他の言語から馬鹿にされる点だよね
(*゚д゚)、ペッペッ
989 :
Name_Not_Found :2010/03/10(水) 18:17:46 ID:GtQ05zJW
JavaScriptとHTMLのみでファイル選択ダイアログを出したいです 正確にはファイル選択ダイアログではなく ディレクトリ選択ダイアログです ローカルにアプリとかインストールする時にローカルのディレクトリ一覧がエクスプローラみたいな感じで出るようなあれです ディレクトリを選択して保存ボタン押下すると保存先パスを取得する処理です JavaScriptで出来ますでしょうか? 対応はIEのみです
できますん
>>989 ムリ。
そもそもディレクトリを選んでもらったあとに何がしたいの?
IEのみだとWSHでできるんじゃね? スレ違いだが
<a onclick=" … ">挿入</a> <div id="a"> <textarea …></textarea> </div> 「挿入」をクリックすると、指定したIDを持つ要素内のtextareaに、文字列を挿入するようなことって可能ですか?
可能です
具体的方法をplease get_id = document.getElementById('a') この後どうすれば?
firstChildで調べろ
>>968 5)だけど、「初心者」と書くのが嫌われるのはそういう理由からだろうか。
誰でもまちがいはある、と言うことじゃないと思われ。初心者だと書けば、
自分でやってもみず調べもしないでとんでもないことを聞いてくるから
じゃないかな、と洩れは思ってきた。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。