元スレ+ JavaScript の質問用スレッド vol.78 +
JavaScript覧 / PC版 /みんなの評価 :
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 = :
ケータイのメモ帳なんかでサクサクっと作ってたらそれはそれでカッコいいかもな。
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.74 + (1001) - [97%] - 2009/12/1 6:08 ○
- + JavaScript の質問用スレッド vol.75 + (1001) - [97%] - 2010/1/23 1:07 ○
- + JavaScript の質問用スレッド vol.76 + (1001) - [97%] - 2010/3/10 4:02
- + JavaScript の質問用スレッド vol.77 + (1001) - [97%] - 2010/5/8 19:06
- + JavaScript の質問用スレッド vol.79 + (1001) - [97%] - 2010/9/11 6:50
- + JavaScript の質問用スレッド vol.88 + (1001) - [97%] - 2011/7/20 7:03
- + JavaScript の質問用スレッド vol.98 + (1001) - [97%] - 2012/4/9 14:46
- + JavaScript の質問用スレッド vol.138 + (1004) - [95%] - 2019/4/20 23:45
- + JavaScript の質問用スレッド vol.128 + (1001) - [95%] - 2016/2/26 6:45
- + JavaScript の質問用スレッド vol.108 + (1001) - [95%] - 2013/9/21 15:16
- + JavaScript の質問用スレッド vol.118 + (1002) - [95%] - 2014/8/29 22:30
- + JavaScript の質問用スレッド vol.94 + (1001) - [95%] - 2012/1/8 15:46
- + JavaScript の質問用スレッド vol.93 + (1001) - [95%] - 2012/1/1 4:46
- + JavaScript の質問用スレッド vol.96 + (1001) - [95%] - 2012/1/28 23:01
- + JavaScript の質問用スレッド vol.95 + (1001) - [95%] - 2012/1/17 4:16
- + JavaScript の質問用スレッド vol.97 + (1001) - [95%] - 2012/3/1 3:31
- + JavaScript の質問用スレッド vol.99 + (1001) - [95%] - 2012/5/7 4:32
トップメニューへ / →のくす牧場書庫について