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

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
901 : Name_Not - 2010/09/04(土) 15:48:00 ID:??? (+57,+29,-24)
勉強にもなるのでもうしばらく続けてほしい
他に質問なり何なりが飛んできてるのにやってたらどうかと思うけど
902 : Name_Not - 2010/09/04(土) 15:57:56 ID:??? (+57,+29,-5)
はい盛り上がったので900超えました。テンプレ論議あれば今どうぞ。
903 : Name_Not - 2010/09/04(土) 16:11:09 ID:??? (+52,+29,+0)
じゃあ、そろそろまとめて
904 : Name_Not - 2010/09/04(土) 16:34:17 ID:??? (+3,-30,-72)
call-by-value:組み込み型
call-by-sharing:オブジェクト
call-by-reference:関数の返値として参照を返すのは仕様上認められている
 ただ、現実そういう実装はない(flanaganの本に書いてある)
905 : Name_Not - 2010/09/04(土) 18:29:55 ID:??? (-1,-29,-14)
call-by-sharingってCで言うところのポインタ渡すのと同じって考えればいいかな?
906 : Name_Not - 2010/09/04(土) 19:00:55 ID:??? (+52,+29,-5)
Javaは「参照の値渡し」でござる
907 : Name_Not - 2010/09/04(土) 19:32:28 ID:??? (-2,-30,-15)
それをcall by sharing/call by object/call by object-sharingと呼ぶそうな
908 : Name_Not - 2010/09/05(日) 15:54:34 ID:??? (+9,-30,-288)
document.evaluateの使い方?ついて質問です
xhrとかでhtmlを取得した値をDOMにしてからcontextNodeに指定し

var dom = document.createElement("HTML");
dom.innerHTML = res.responseText;

document.evaluate(xpath,dom,null,7,null)

としてdomの中からid hoge を取得する時

firefoxだとid('hoge')で取得できるのですが
chromeの6.0以降だとid('hoge')では取得できません
仮にidがついてるのがdiv要素だとして//div[@id="hoge"]だと取得できます

これはcontextNodeの使い方がそもそも間違ってるのでしょうか・・?
それともevaluateの実装の違いによる問題なのでしょうか・・・
909 : Name_Not - 2010/09/05(日) 22:51:02 ID:??? (+19,-8,-10)
誰かこの質問スレのdatファイル持ってない?
できれば1からほしいんだけど。。
910 : Name_Not - 2010/09/05(日) 23:01:36 ID:??? (+3,-30,-300)
jQueryのプラグインでclickイベントで動くものがある場合に
プラグイン上でclickイベントを動作させた後で
独自のclickイベントを実行させたいのですが、
その場合はプラグイン内のclickイベントの内容を
改造するしかないのでしょうか

元のhtml上で
$("#○○○").click(
 function() {
  alert("OK");
});
等と書いてもプラグインのclickイベントに食われてるようです。
なら
$("#○○○").mouseup(
 function() {
  alert("OK");
});
とやってみたのですが、逆にプラグイン側のイベントを食ってしまいました
911 : Name_Not - 2010/09/05(日) 23:12:05 ID:??? (+10,-30,+0)
>>908
Chromeの他、Opera、Safariも同様の動作で、Firefox(の3.5以上)だけが
本来のDOMツリーに属してないDOMにもid関数を使える。仕様的には未定義だった気がする。
各ブラウザでid関数を使えるようにするのは結構面倒で、なるべく簡単書いてみると
var html_text = 'HTML<p>hoge<p>fuga<span id="a">aaa</span>';
var doc = document.implementation.createDocument(null, 'html', null);
var body = document.createElement('body');
body.innerHTML = html_text;
doc.documentElement.appendChild(doc.adoptNode(body));
console.log(doc.evaluate('id("a")',doc,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue);
こんな感じ。
最近ならquerySelector使うほうが断然楽だね
912 : Name_Not - 2010/09/05(日) 23:19:31 ID:??? (+45,+27,-2)
はぁ?
913 : Name_Not - 2010/09/05(日) 23:53:12 ID:??? (+40,+22,+0)
ふぅ
914 : Name_Not - 2010/09/06(月) 00:25:32 ID:??? (+89,+29,-43)
ライブラリ類を使う必要性を感じないのだけど、
トレンド的にはやっぱ使うべきなのかね。
なんつーか、ライブラリはコードが濁って本質が見えなくなる気がする。
915 : Name_Not - 2010/09/06(月) 00:34:07 ID:??? (+57,+29,-14)
仕事じゃ開発効率が大切だからねえ。
勉強が目的ならライブラリは後回しにするべき。
917 : Name_Not - 2010/09/06(月) 03:32:02 ID:??? (+10,-30,-78)
>>911
なるほど・・・
Chromeの5.0.xまでは同じソースコードで取れてたので謎でした
id関数は//*[@id="hoge"]とかに置き換えるほうが楽なのかな・・・


そしてchromeやfirefoxじゃとれる
"//a or //b"といったxpathでbooleanの結果が取れなかった・・・
この書き方自体が変なのかな・・・
918 : Name_Not - 2010/09/06(月) 10:31:46 ID:??? (+69,+29,-93)
>>914
実際の案件やってると確実にIEに悩まされるから、ライブラリやフレームワークって便利なんだよ・・・
レアケース以外は差異を考えなくてよくなる
あとイベントまわり
921 : Name_Not - 2010/09/06(月) 12:58:40 ID:??? (-2,-30,-18)
if (entry.title.match(/.*(PR:|新しい語句).*/mi) == null) {
こんな感じで
mは改行への対応
iは大文字小文字問わず
922 : 919 - 2010/09/06(月) 13:12:16 ID:??? (+44,+16,-19)
バッチリ動きました!
miではなくmとiだったんですね・・・もっと勉強します。
本当に有難うございました
924 : Name_Not - 2010/09/06(月) 13:59:27 ID:??? (-1,-29,-3)
俺も$は好きになれない
IDゲト!("")
なら気に入ったかもしれないが
925 : Name_Not - 2010/09/06(月) 14:00:07 ID:??? (+57,+29,-4)
大量にあってもベタ書きしてるってこと?
926 : Name_Not - 2010/09/06(月) 14:03:48 ID:??? (-1,-29,-12)
$がいやならidget('foo')ってかけるように定義すればいいだけなんじゃ?
$だってjavascriptの文法で決められた、利用出来る識別子じゃん
927 : Name_Not - 2010/09/06(月) 14:06:55 ID:??? (-1,-29,-5)
$id("fooooooooooooooooooooooooooo")
$xp("//a")
$css("a > b")

こんな感じならいいということか
928 : Name_Not - 2010/09/06(月) 16:09:20 ID:??? (-1,-29,-37)
ES3 7.6 "ドル記号は機械的に生成されるコード中のみの使用を意図される。"

ライブラリが乱用しだしたからかどうか知らないがES5でこの文言は消えたけど
929 : Name_Not - 2010/09/06(月) 16:10:38 ID:??? (+28,+29,-48)
他言語の宿題スレ的な質問が不適当でしたらすみません。

・入力としてプレーンテキストを受け取る
・リンクとして張るべき文字列(http/https スキームで良いです)
 アンカー付きの HTML にして返す

といった処理はどうすればよいでしょうか。
Web メールのビューアあたりでよくありそうな処理ではないか…と思っているのですが…
930 : Name_Not - 2010/09/06(月) 17:23:32 ID:??? (+4,-30,-50)
>>917
Chrome5では動いてたんだ…。動かない気がするけどなぁ。
実行している元のページ上にid="hoge"な要素があって、そっちを取得してた可能性も…。
ちなみに //*[@id="hoge"] も .//*[@id="hoge"] と相対パスにしておかないと↑と同じことに。
> "//a or //b"といったxpath
"//a | //b" かな。
933 : Name_Not - 2010/09/07(火) 09:45:00 ID:??? (+71,+29,-59)
突然すいません
http://xn--5usq05i.com/
↑このサイトの様に、ページを移動せずにAPIの検索結果のソートを変更していくのはどうしたらいいんでしょうか?
全パターンを最初に読み込んで表示を切り替えてるだけのようには思えないんですけど・・・
934 : Name_Not - 2010/09/07(火) 09:47:05 ID:??? (+60,+26,-14)
リンク先見てないけど普通にリクエストをサーバに投げてるんじゃないの
935 : Name_Not - 2010/09/07(火) 10:13:52 ID:??? (+12,-21,-48)
>>931
ありがとうございます。プレーンテキストなのでどこで切るべきか迷っていたのですが
スペースと改行コードあたりでそれなりに動いているようですのでこれで行ってみます。

>>933
クリックのタイミングでサーバに問い合わせ→DOM を削除 / 追加しているんじゃないでしょうか?
936 : Name_Not - 2010/09/07(火) 10:16:34 ID:??? (+28,-29,-88)
>>934,935
リクエストをサーバに投げるというのは、ボタンをクリックするとパラメーターを送ってその条件に応じたapiを
javascriptでパースして表示しているということでしょうか?
それだとブラウザでは表示されても、HTMLソースに表示されなくないでしょうか?
937 : Name_Not - 2010/09/07(火) 15:20:53 ID:FWjhBF6p (+28,+29,-25)
>>936
なんかAPIって言葉の使い方が間違ってる気がするが、それはさておき。
サイト見たけど普通に同期通信してるだけだと思う。
938 : 932 - 2010/09/07(火) 17:27:59 ID:9vNsFXzG (-26,-30,-273)
alertを挟んでデバッグしてみた結果、
Firefox,Chromeの場合、
innerHTMLでは、フォーム部品(テキストボックスなど)の入力内容が、
属性valueの値として取得できないようです。

IEではちゃんと、innerHTMLで、valueが補完された状態で出てくるので、
その行の各セルがどんな内容だろうと、
上で書いたswapRow()メソッドで、ゴッソリ入れ替えができるのですが。

Firefox,Chromeで同じようなことをする場合、
innerHTMLで見ないで中身のアイテムを参照し、
document.getElementsByName("text_" + r1).item(0).value
のようにすれば個々のvalueを正しく参照できるようですが、
縦列のアイテムの種別ごとに特別にコードを書かないといけないため、かなり冗長することになります。

縦列の数が多いので、
できればIEで成功しているような「Rowを内容も含めてゴッソリ入れ替え」ができれば良いのですが、
何か良い方法はありませんか?
939 : Name_Not - 2010/09/07(火) 18:35:13 ID:??? (-11,-29,-52)
>>938
FirefoxとChromeの方が規格に準拠した動作。
HTMLテキストじゃなくてDOMノードを入れ替えればいいんじゃない?
940 : Name_Not - 2010/09/07(火) 20:07:54 ID:??? (+14,-18,-10)
http://kjirou.sakura.ne.jp/wiki_mirror/index.php?a%2FPHPer%A4%CE%B0%D9%A4%CEJavaScript%B2%F2%C0%E2%20-%20%A5%AF%A5%E9%A5%B9%A4%CE%C4%EA%B5%C1
ここのthisの説明にあるけど、thisってダイナミックスコープの変数なんですか?
941 : Name_Not - 2010/09/07(火) 21:04:16 ID:??? (+57,+29,-20)
そもそも変数じゃないし。

本人が理解している内容を、正しい言葉で表現できていないだけかと。
942 : Name_Not - 2010/09/07(火) 22:33:41 ID:??? (+3,-30,-68)
var new_div = document.createElement('div') などしたあとに、 new_div.id = "div_id" などできますが、この new_div に生えているメソッド一覧はどうすれば確認できますか?
943 : Name_Not - 2010/09/07(火) 22:40:23 ID:??? (-2,-30,-30)
var str = '';
for (var prop in new_div) {
str += prop + ': ' + new_div[prop] + '\n';
}
alert str;
944 : Name_Not - 2010/09/07(火) 22:41:11 ID:??? (+18,-29,-14)
っと、alert(str);
945 : Name_Not - 2010/09/07(火) 23:42:21 ID:??? (+44,+18,+2)
>>944
ありがとうございます。
946 : Name_Not - 2010/09/08(水) 00:11:14 ID:??? (+57,+29,-40)
「生えているメソッド」なんて言い方、初めて聞いた。
自分の髪もユーザ定義で生やすことできないかなぁ。
947 : Name_Not - 2010/09/08(水) 01:47:08 ID:??? (+7,-30,-298)
var 毛根達 = 人間.evaluate(".//毛根",頭皮,null,7,null);

if (毛根達.resultType != 7 || 毛根達.snapshotLength == 0) {
 return "毛根死んでるので手遅れです";
}

var 毛根の数 = 毛根達.snapshotLength;
for (var i = 0; i < 毛根の数; i++) {
 var 毛根 = 毛根達.snapshotItem(i);
 var has毛 = false;
 for (var j = 0; j < 毛根.childNodes.length; j++) {
  var 毛根についてるもの = 毛根.childNodes[j];
  switch (毛根についてるもの.nodeValue) {
   case "フケ":
    毛根.removeChild(毛根についてるもの);
    break;
   case "毛":
    has毛 = true;
    育毛剤(毛根);
    break;
   default:
    洗浄(毛根);
  }
 }
 if (has毛 == false) {
  毛根.appendChild(人間.createElement(毛));
 }
}



こんな感じじゃだめか
948 : Name_Not - 2010/09/08(水) 01:53:37 ID:??? (+57,+29,-41)
「生えている」はあんまり聞かないけど、「メソッド/プロパティを生やす」ならたまに使うかな
949 : Name_Not - 2010/09/08(水) 06:40:12 ID:??? (-1,-29,-3)
>>947
3 行目で return する状況なのです;;
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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