のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,432,615人
昨日:no data人
今日:
最近の注目
人気の最安値情報

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

JavaScript覧 / PC版 /
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
701 = :

ページ内の幾つか(=連続してない)の要素<a>のonclickにある関数を書いておいて、
クリックでその関数が実行されたら、その要素の前や後の要素を特定って簡単ではないですよね?
<a onclick="test('~~要素ごとに違う~~')"
現在考えているのは、document.getelementsByTagName('a')からString(a[i].onclick).match(/test\(/)が真である要素の配列をつくって、
onclick="test('~~の~~が最後に実行されたものと同じやつを探して、±1するというのなんですが、
これ以上にスマートなやり方は無いでしょうか?

702 = :

>>701
何がやりたいのかよくわからないな

> クリックでその関数が実行されたら、その要素の前や後の要素を特定って簡単ではないですよね?
previousSiblingとかnextSiblingで辿ってくのじゃだめなの?

703 = :

>>702
Lightboxみたいなのを自作しているんですが、前の画像次の画像へ移動するには前後のonclick="testを探さないといけなくて、
<a>の階層はバラバラなので、getElementsByTagName('a')がまず思いつきました。

704 = :

>>703
a要素に連番の入ったidを割り振れば簡単じゃない?
なんだか基本設計を変えた方がよさげだけど。

705 = :

サンプル見ないとさっぱりわからないネ
結局前後とは何を指してるのか

706 = :

>>696
document.bodyはDOM Level 2 HTMLで定義されてる
レガシーである、という記述はどこにもない
http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-26809268

無論、もともとは独自拡張から始まったものではあるけれどね

708 = :

>>706
ああ、誤解を与えたかもしれないが
DOM-HTMLがそもそもレガシーから始まっており
Window、HTMLDocumentそのものがレガシーの正当化に過ぎないという意味で
「レガシー」を使った
事実XHTML5でHTMLDocumentは使えないようになっただろ

709 = :

>>704,705
前後はそうですね、
オミトロンで全ページ対象に導入しているuserscriptのようなものです。
素直にidつけて回してみます。。。とcss3セレクタでうまい取得方法がありました。
a[onclick^=test]

710 = :

いろいろ途中で送信してしまった。
前後はそうですね、→jQuery('a[onclick^=test]')[4].onclick()の状況なら
jQuery('a[onclick^=test]')[3]とjQuery('a[onclick^=test]')[5]ってことです。
セレクタで取得しても最後のイベントの発生した要素の番号がわからないので
また別にいじらないといけないですね。orz

711 = :

>>695
どうもありがとう
違いはないから名前も付いてないんですね

712 = 693 :

>>699
その流れで、このスレでエライ怒られたことがある。
ちょうどPrototype.jsが話題だった頃。

質問した時に、要素にあれこれメソッドをくっつける作りになってて、
「そんなことしたら、他の人がいじろうとしたときに云々…」と。

おまえら俺のサイトでなにする気だよ!と思った。

714 = :

単なる属性セレクタだろ

715 = :

CSS3ではこの辺も入るんだよな確か

716 = :

^がべき乗じゃないときもいという意味なら、その発想の方がきもいな

717 = :

アホを刺激しないように

719 = :

^を実装するとしたらそれは演算子として扱うようにするのがたいていの開発者思想
ただJavaScriptにそれは通用しない

720 = :

正規表現disってんじゃねーぞ

いややっぱdisってもいいや

721 = :

CSSでも実装されてるのに何を今さらって感じだな

722 = :

>>718
悪いが、鬱陶しいから確証がないならいちいちリンク挙げんな
俺もだいたい目を通しているんだから、見落としが明らかなときだけ挙げてくれ

とは言え、今回は明らかに俺の誤りだったから>>708は撤回する
XHTML5でdocument.writeが使えないということを
HTMLDocumentをサポートしないと脳内変換してしまっていた
すまんかった

とにかく、俺が>>696で言いたかったのは
「レガシーな」HTMLDocument::bodyを前提にしておきながら
「レガシーな」HTMLScriptElement::srcを避けるのは無意味であり
スタイルとして一貫してなく不格好だということ

ここで俺は「レガシー」を後方互換性確保の意味合いが強いという
それだけの意味合いで用いている
根拠はDOM2-HTMLの1.1-1.3節、DOM-FAQあたり

規定で定義されればレガシーでない、という立場なら
今やdocument.allすらレガシーではなくなった

724 = :

レガシーレガシー連呼すんじゃねえよ
横文字かっこいいとかおもってるの?

725 = :

説明下手なだけ、ほっといてあげるべき

726 = :

>>718, 722
なんだか濃密な議論サンクス
深い意味もなくsetAttribute使ってたけど、
不快感を感じる人もいるんだね。
俺としては、属性値の設定はsetAttributeで統一したほうが読みやすい
って感じがあるな。慣れちゃったからかも。

ところでdocument.getElementsByTagName('body')[0]って、
ブラウザ互換的に安全に使えたっけ?

727 = :

>>722
吃驚したわー

728 = :

>>722
レガシーレガシー言うから、久々にマジック・ザ・ギャザリング思い出しちまったぜ。

729 = :

http://nanto.asablo.jp/blog/2005/10/29/123294
を読むと setAttribute を使えなくなって、IEが嫌いになる

730 = :

レガシーはレガシー。他の言葉がない。

731 = :

遺産でいいじゃん

733 = :

そのバグ>>4に書いてあるじゃん

734 = :

>>726
setAttributeは値を必ず文字列として扱う
たとえばinput.setAttribute('checked', true)は<input checked="true">にする
もちろんこれは誤りでchecked="checked"が正しい
だが最近はブラウザが補正してくれているから気付かない奴が多い

setAttributeは属性の意味を考慮せず言われたままセットするだけだから
HTMLの文法が頭に入ってなきゃきちんと使えないんだよ
DOMをHTMLに戻して検証にかければ、当たり前だがエラーになる

一方、DOM-HTMLのはプロパティの種類に応じて
数値・ブール値として、あるいは絶対URIに適切に変換してくれる

いろんな情報がごっちゃになって結局間違えるくらいなら
setAttributeなんか使わない方が無難だろうよ

IEバグで言えば、ごく一時期setAttribute('class')||setAttribute('className')なんて
馬鹿げた書き方が流行ったんだぜ
IEは酷いが、こんなのに疑問すら持たず喜ぶアホどもも大概だ

735 = :

> HTMLの文法が頭に入ってなきゃきちんと使えないんだよ
考え方の相違かもしれんが、HTMLを理解してる人には、
むしろsetAttributeのほうが自然で使いやすいと思う

> 数値・ブール値として、あるいは絶対URIに適切に変換してくれる
こういう変換は、コードに不透明感が出るというか

736 = :

動きゃいいんだよ、好きにやれや

737 = :

> checked="checked"が正しい
HTML 4.01 Transitionalだとこういう書き方はしないし
HTMLの種類によって正しいかどうかは違ってくるかと

738 = :

それじゃ納得行かないから揉めてんだろw
主に>>696さんが

739 = :

>>737
してもいいんじゃないの
checked="checked"の属性名を省略してるってことでしょ

740 = :

>739
違ってたら申しわけないけど、
それは省略したんじゃなくてxmlに対応させたんじゃなかっけ

742 = :

var Foo = function(){};
Foo.prototype = {};
と、
var Foo = {};
についてですが、

前者の中身にアクセスするにはFooをインスタンス化しないといけない。
後者は中身をスタティックに呼ぶことができる。
という認識であっていますか?

743 = :

インスタンスがなくてもFoo.prototypeから直接アクセスできるお

744 = :

>>743
確かめました。
参考になりました。どうもありがとうございます。

745 = :

>>728
懐かしいなw
俺もウルザ、マスクス・ブロックの頃はまってたわw

746 = :

最近、ホームページを作っています
そろそろJavaScriptを使ってみようと思っているのですが中学生でも始められますか?
あと、家にパソコンないんですけど携帯で作ってる人もいるみたいなのですが大丈夫ですか?

747 = :

釣りだろうが携帯は無理

748 = :

携帯でタグ打ち(笑

749 = :

携帯のメールでスクリプトタグかなんか使って動きつけたりして遊べたよな

750 = :

ケータイのメモ帳なんかでサクサクっと作ってたらそれはそれでカッコいいかもな。


←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について