15/11/17 21:07:42.70 .net
サイトのサイドメニューをパーツ化したくてjavascriptのdocument.writeで吐き出しています。
その吐き出したサイドメニュー内の、カレントページのリンク部分にclassを付けたいのですが、javascriptで生成した要素だと通常の書き方ではなく生成した用の書き方でないとダメぽい感じでした。
生成した要素に対しての処理は主にクリックを想定しているのかonに関する記事は沢山ありました。
しかし私がやりたいカレントページ用のやり方は見つけることが出来ませんでした。
今移動中なので後からコードを投稿するのですが、この段階でやり方をご存知の方いたら教えていただけますでしょうか。
よろしくお願いいたします。
957:924
15/11/17 21:08:31.34 4kTtEgib.net
idを出しておきます。
958:Name_Not_Found
15/11/17 21:17:02.97 .net
まずdocument.write()についてググってどういうものか把握した方がいいよ
class付与はサイドメニューの要素からanchor要素の一覧を取�
959:セして付けるだけ
960:Name_Not_Found
15/11/17 21:31:13.43 .net
>>928
location.href で現在のURLを参照できるので document.write で出力前に該当リンクだけ class 属性を付与すればいいだろう。
ただ、共通パーツ目的で JavaScript に依存するのはお勧めしない。
通常はサーバサイドで include するか、Web制作環境でテンプレート化して各々でHTML出力させる。
JavaScript は必須機能(リンクがなければサイトとして成り立たない)に適用しない方が良い。
961:Name_Not_Found
15/11/17 23:21:38.18 .net
久しぶりにjavascriptを調べていたのですが
もしや昔(5年前くらい)に比べてクロスブラウザ的な問題はなくなりましたか?
昔jQueryをみていて、document.getElementByIdひとつとってもここまで場合分けしないといけないのか・・
と若干引いてしまった印象があるので今はどうなのかなと
962:Name_Not_Found
15/11/17 23:32:26.11 .net
>>932
昔というのがいつを指すのかわからないが、少なくとも getElementById でクロスブラウザをする必要はない
963:Name_Not_Found
15/11/17 23:36:54.93 .net
document.all, document.layers が現役だった頃の時代?
とりあえず、今はそこまで酷くはない
964:Name_Not_Found
15/11/17 23:47:51.20 .net
jQueryが出てきた時には流石にdocument.layersは滅んでたと思うが
965:Name_Not_Found
15/11/18 00:11:57.75 /+zN3ekZ.net
>>928
まだ生成されてないDOM要素に対してアクセス(class付与)しようとしてるかもな
・class付与のコードはdocument.writeのあとに実行されているか
・class付与の直前でconsole.logで対象要素出力してみる
こんなところからチェックしてみるとよさげ
966:Name_Not_Found
15/11/18 01:08:43.41 .net
2つの画像を同じ位置に被せて使う方法で、相対位置と絶対位置を組み合わせる方法以外ってありますか?
image.srcを使って両方relativeでできるみたいなのですが…
967:Name_Not_Found
15/11/18 01:11:59.88 .net
>>937
background-image と img 要素
968:Name_Not_Found
15/11/18 01:38:07.93 .net
>>928に対する答えが的外れすぎて笑える
後から追加された要素に対してjqueryのonのように自動的にaddClassしたいってことだろう
969:Name_Not_Found
15/11/18 01:44:38.27 .net
関数名とか変数名とか決めるときに
initializeとかもっと言えばhogeとかfugaみたいな暗黙のなんたらがあるじゃん
ああいうプロジェクト中によく使われる命名一覧みたいなのないの?
ネーミングに時間かかってしんどい・・・
970:Name_Not_Found
15/11/18 01:53:37.56 .net
変数名 困った
でググるといろいろ出てくるよ
971:Name_Not_Found
15/11/18 01:55:24.00 .net
>>939
そこまでわかってるならアドバイスしてあげなさい
972:Name_Not_Found
15/11/18 02:11:40.37 c/XPDcMH.net
javascriptで 小数点 末尾の0を消すには、どうしたらいいでしょうか?
10.0000 → 10
10.1000 → 10.1
10,0001 → 10.0001
上記のような変換をしたいのですが上手くいきません。
教えて頂けますでしょうか。
正規表現を使えばうまくいきそうだと思うのですが
よく分からなくて・・・
973:Name_Not_Found
15/11/18 02:22:36.54 .net
>>943
Math.floor
974:Name_Not_Found
15/11/18 02:54:00.43 .net
>>943
Number()
975:Name_Not_Found
15/11/18 04:05:11.79 .net
>>943
console.log(+10.0000);// → 10
console.log(+10.1000);// → 10.1
console.log(+10.0001);// → 10.0001
976:Name_Not_Found
15/11/18 06:37:12.77 .net
10.1000
って何もしなくても10.1になるけど
文字型の"10.1000"ってことかな
977:Name_Not_Found
15/11/18 08:13:41.46 .net
>>928
jQueryで、attr メソッドで、
HTMLの属性を追加変
978:更/取得できる また、removeAttr で属性を削除する セレクター.attr({alt:'ロゴ', width:'80'})
979:Name_Not_Found
15/11/18 19:15:36.69 Tt0kgCn6.net
xdomainajaxを使ってサイトのスクレイピングをしたいんだけど、
【スクレイピングするサイトHTML】
<div id=“list”>
<a>hoge</a>
<a>hoge</a>
<a>hoge</a>
<a>hoge</a>
</div>
【JS】
url = 'URLリンク(~~)’;
$.get(url, function(data){
var content = $(data.responseText).find('#list').html();
$(".list").html(content);
});
</script>
<div class="list"></div>
上記のfind(‘’)内にID名を指定しても中身が持ってこれない…
aタグに<a class=“list”>とクラス名を指定してfind(‘.list’)にすればデータは持ってこれるんだけど、最初の1行だけになってしまう。
div内のリストを全部持ってくるにはどうすればいいか教えてくれ…
980:Name_Not_Found
15/11/18 19:37:24.47 .net
find("#list a")
にすれば?
981:Name_Not_Found
15/11/18 19:37:43.50 .net
jQueryはよくわからんけど
fetch(url).then(r=>r.text()).then(t=>new DOMParser().parseFromString(t,'text/html').querySelector('#list'))
で取ってこれたよ
982:Name_Not_Found
15/11/18 20:16:38.69 Tt0kgCn6.net
>>950
>>951
返信ありがとう。試してみる。
取り急ぎお礼まで
983:Name_Not_Found
15/11/18 22:06:28.09 c/XPDcMH.net
>>944>>945>>946>>947
コメントが遅れてすいません。
いろいろなお教え、ありがとうございました。
実は、反復処理を行い、計算をさせる過程で
コンピュータに特有な小数点以下の丸め誤差が生じてしまい
実行結果が
高さは0m です
高さは5.804m です
高さは11.216m です
高さは16.236000000000004m です
高さは20.864m です
高さは25.1m です
高さは28.944m です
高さは32.396m です
高さは35.455999999999996m です
高さは38.123999999999995m です
高さは40.4m です
高さは42.28399999999999m です
高さは43.775999999999996m です
高さは44.87599999999999m です
高さは45.584m です
高さは45.9m です
というような感じになるので
これを、.toFixed(3) としてみると
984:Name_Not_Found
15/11/18 22:08:03.50 c/XPDcMH.net
高さは0.000m です
高さは5.804m です
高さは11.216m です
高さは16.236m です
高さは20.864m です
高さは25.100m です
高さは28.944m です
高さは32.396m です
高さは35.456m です
高さは38.124m です
高さは40.400m です
高さは42.284m です
高さは43.776m です
高さは44.876m です
高さは45.584m です
高さは45.900m です
となった次第なのです。
985:Name_Not_Found
15/11/18 22:11:10.13 c/XPDcMH.net
それで、ここから、小数点以下の末尾の0を取りたいと思い
いろいろ試行錯誤するも、うまくいかず・・・。
という訳なのです。
986:Name_Not_Found
15/11/18 22:14:57.65 .net
文字列にしちゃあかんよちみ
987:Name_Not_Found
15/11/18 22:16:08.38 .net
>>954
>>945を読んだか?
Number(kekka.toFixed(3))
988:Name_Not_Found
15/11/18 22:19:23.05 .net
>>955
まず、反復計算で何やってるか知らんけど
コンピュータでの数値計算について勉強して適切なアルゴリズムで処理させるのがまず第一
計算結果を丸めや切り上げ切り捨てしてやるには Math オブジェクトの round()、ceil()、floor() を使う
989:Name_Not_Found
15/11/19 00:00:39.56 NGtRGcYd.net
>>956
すいませんでした。
>>957
うまくいきました
本当にありがとうございました!
感謝です。
>>958
親身なアドバイス
感謝して精進します。
ありがとうございます。
990:Name_Not_Found
15/11/19 00:38:10.12 .net
toFixedか、もっといろいろ調整したいのならi18nAPIを使うのが吉
991:Name_Not_Found
15/11/19 00:40:15.81 .net
改行入りの文字列から~行目までを取り出し方法をご教授ください
AAA\nBBB\nC
992:CC\nDDD の文字列データからCCC\nDDDの部分だけ取り出したいのです。
993:Name_Not_Found
15/11/19 00:41:16.38 .net
¥nでスプリットして数えればいいじゃん
994:Name_Not_Found
15/11/19 00:44:59.89 .net
ありがとうございます。試してみます
995:Name_Not_Found
15/11/19 06:51:13.20 .net
var n = "moo<いろは<hoge><73,.<>fuga<foo<<";
//["moo","hoge","fuga","foo"]を得たい
console.log(n.split(/[<>]+/)); //"いろは"や"73,."や""が余計
console.log(n.match(/[a-z]+[<>]+/g)); // <>が各語尾についてくる
一発でやるにはどうすればいいのでしょうか?
996:Name_Not_Found
15/11/19 07:27:32.37 .net
JavaScriptのタッチイベントにはmousedownにあたるtouchstart、mouseupにあたるtouchendはあるのに
clickにあたるtapが無いのですが、通常どのようにマウスイベントと互換性を持たせるべきでしょうか?
押したところで間違いに気づいてもそっと離せばセーフな感じにしたいです
997:Name_Not_Found
15/11/19 10:31:12.80 .net
>>964
英語だけを取得したいの?
998:Name_Not_Found
15/11/19 10:31:53.88 .net
>>965
普通にclickじゃあかんの?
999:Name_Not_Found
15/11/19 10:52:07.81 .net
function hoge() { ~ }
function() { ~ }
名前のある関数の時にはfunctionの直後に半角スペースがきますが、
無名関数の時は半角スペースを消すケースが多いようです
実際は半角スペースがあろうがなかろうが動作には影響無いようですが、
何故消すのか疑問です
個人的には「名前を消しただけなんだから半角スペースは維持すべきでは?」と思ってしまいます
明確な理由をご存知の方はいらっしゃいますでしょうか
あるいはこの件に触れたサイト等があるようなら誘導して頂けないでしょうか
宜しくお願いします
1000:Name_Not_Found
15/11/19 11:09:45.52 .net
>>966
はい
もしくは数字だけとか、ひらがなだけとか
そして配列に入れたいのです
今はn.replace().split()みたいにやっていますが
もしかすると自分の正規表現などが原因で一発でできていないような気がしたのです
1001:Name_Not_Found
15/11/19 11:09:54.95 .net
自分は基本離すよ。
何故ならtoString時や、そういったアルゴリズムを考えた時それが自然だから。
でもただ無名関数を表すリテラルだと捉えたらそう詰めるのも自然じゃないかな。
カンマの後のスペースとかもそうだけと、書き手の意志が表れてるだろうね。
1002:Name_Not_Found
15/11/19 11:13:15.99 .net
>>969
.match(/[^<>,.]+/g)
1003:Name_Not_Found
15/11/19 11:15:52.72 .net
>>968
逆にfunction () {}に疑問がないなら
function hoge () {} にすべきでは?
1004:Name_Not_Found
15/11/19 11:19:30.65 .net
>>968
くだらんこと考えてるとハゲるぞ
functionhoge() はエラーになるが function() はエラーにならない
それだけで意味は無い
ちなみに俺は JavaScript ではブレースとか丸括弧の余分なスペースは入れない派だ
演算子とかには適時入れる
if(){
}
let = function(){
}
そいうレベルの話
1005:Name_Not_Found
15/11/19 11:31:28.65 .net
また髪の話してる…
1006:Name_Not_Found
15/11/19 11:31:40.03 .net
>>970
離す人もいたようで安心しました
>>972
呼び出し時に離してる例を見たことがないので定義時に離すという発想にはならなかったです
>>973
「エラーにならない」だと他も当てはまるので納得の行く理由にはなりませんでした
1007:Name_Not_Found
15/11/19 11:38:42.53 .net
>>971
ありがとうございます
参考にして
.match(/[^<>亜-熙あ-んァ-ヶ1-9.,/s\\]+/g)
みたいにしました
1008:Name_Not_Found
15/11/19 12:04:16.39 .net
ま、アルファベットだけなら
.match(/[A-z]+/g)でいいと思うけどね
1009:Name_Not_Found
15/11/19 12:17:22.61 .net
ジェネレータに関しては皆どうしてる?
1. function* gf(){}
2. function * gf(){}
3. function *gf(){}
A. { *gf(){} }
B. { * gf(){} }
自分は1-Aだったけど、3-Aにしようかと思い始めてる。
1010:Name_Not_Found
15/11/19 13:01:08.37 .net
>>978
1だよ
function* - JavaScript | MDN
URLリンク(developer.mozilla.org)
1011:Name_Not_Found
15/11/19 13:02:32.58 .net
>>978
C言語のポインタ宣言じゃないんだからさあ
1012:Name_Not_Found
15/11/19 13:20:37.37 .net
>>979
仕様的には「function * BindingIdentifier」で、
「function*」というキーワードがあるわけでもなくMDNは一例でしかないよね。
自分も1-3だけなら1が自然だと思うし、ChromeとかのtoString結果も1だけど、
A-Bを考えた時、Chromeの結果はAを採用しててやや違和感があるんだよね。
やっぱり間を取って2-Bにするのがいいかな。
>>979,976はA-Bではどちらを選ぶの?
1013:Name_Not_Found
15/11/19 13:28:27.90 .net
ほんと暇なんだな
1014:Name_Not_Found
15/11/19 13:38:08.21 .net
何個か同時進行でやってることの1つであるだけで暇ではない
1015:Name_Not_Found
15/11/19 13:40:25.21 .net
>>968
私は気にするが、使用しているエディタで補完してくれるか程度の問題にしか思っていない人が多いと思う。
> 個人的には「名前を消しただけなんだから半角スペースは維持すべきでは?」と思ってしまいます
スペースを空けるなら "hoge()" も "hoge ()" のようにスペースを空けなければ統一性を保てないだろう。
私は下記コードのように書く。
function hoge () { ~ }
function () { ~ }
1016:Name_Not_Found
15/11/19 13:45:57.57 .net
全てのトークンの間に空白をいれるのか?
それなら呼び出すときもhoge ()としないと統一でないし、
もっと言えば(と)の間にも入れないとおかしくないか?
1017:Name_Not_Found
15/11/19 13:45:58.67 NGtRGcYd.net
>>960
i18nAPIって初めて知りました。
ありがとうございます。
1018:Name_Not_Found
15/11/19 13:50:31.89 NGtRGcYd.net
for 文で カウントで回している回数をプロンプト窓に表示するにはどうしたら良いでしょうか?
for (count = 1; count <= 3; count = count + 1)
{
var a = window.prompt(count,"個めの数値を入れてください","*");
}
としたら、出るには出るんですが・・・
1019:Name_Not_Found
15/11/19 13:51:12.21 .net
>>984-985
統一感は大事だと思いますが、状況に応じた法則性があるのならそっちを優先するのも自分的にはやぶさかではありません
今のところは「()演算子は左隣の文字にくっつく慣習がある」というのが自分の中での落とし所です
1020:Name_Not_Found
15/11/19 13:58:45.98 .net
>>987
JavaScript入門サイトで1から勉強すれば今日中にできるようになるよ
その程度のことを一々他人に聞くもんじゃないよ
1021:Name_Not_Found
15/11/19 14:14:37.40 .net
>>968
それが英語圏でも一般的だからそれに合わせるでいいと思うけど。
まあ意味をつけるのであれば「英語はスペースで単語を区切るもの」
これが日本人には頭で理解していても、ネイティブのようには感じられない原因だろう。
ソースコードが英語のキーワードの羅列の用に感じてしまう。
余談だけど、例えば検索エンジンの検索キーワード。日本人にとっては
「単語をスペースで区切って入れる。これがAND検索という特殊な機能なんだ」と捉えていると思うけど、
英語だとスペースで区切るのは当たり前なので普通に文章を入力しているだけなんだよね。
さて話を戻して、
「hoge関数」を英語にすると「function hoge」
「関数」を英語にすると「function」
数学で、f(x) = 2 x + 6 みたいな括弧の使い方をがあるけど、
この f はfunctionだよね? つまりこの括弧と同じ使い方で、function()
これがhoge関数(function hoge)だったらどうなるのさ?
⇒ function hoge()
function
1022:というキーワードがあって、その後にhogeという名前があるんじゃなくて 単にhoge関数と書いてあるだけなんだ。だから関数に括弧をつければ、関数() だし、 名前がある関数であれば、hoge関数() という風に、英語圏の人は見えてるんじゃないのか?
1023:Name_Not_Found
15/11/19 14:21:15.10 .net
f(x) = 2 x + 6
のfはfunctionキーワードに値するわけじゃない
別にg(x)やh(x)もある、funcやfnみたいなただの名前で
置き換えるなら
f = (x) => 2 x + 6
1024:Name_Not_Found
15/11/19 14:21:52.59 .net
こまけーことはどうでもいいんだよ
1025:Name_Not_Found
15/11/19 14:28:49.70 .net
>>990
山田()
山田 太郎()
要するにこういうことですね
1026:Name_Not_Found
15/11/19 14:33:03.68 .net
>>993
そういうこと。
数学で、f(x) = ~っていうのは、カッコの前にスペースを入れないことについてね。
通常の英文だとカッコの前にはスペースを入れる。
でも入れないのはなぜか?ということ。
英語でも数学由来であれば、括弧を入れないこともあるという例
1027:Name_Not_Found
15/11/19 14:33:14.21 .net
いみわからん
1028:Name_Not_Found
15/11/19 14:35:34.55 .net
>>994
なにをトチ狂ったことを言ってんだか
国語と数学は違うし、数学とプログラミングも違うだろ
英文がどうのこうのなんて、JSでどうするのが良いのかに全く参考になるものではない
そんなことは当たり前だ
1029:Name_Not_Found
15/11/19 14:39:20.48 .net
>>994
それでで、あんたは何かためになる話したの?
うざいね。荒らしかねw
1030:993
15/11/19 14:39:46.53 .net
間違えたw
>>996あて
1031:Name_Not_Found
15/11/19 14:41:36.79 .net
>>996
トチ狂ってるのはおまえだ
もともとどうでもいいつまらない話題なんだよ
どうするのが良いとかどうでもいいんだよ
ただプログラミング言語作ってるのは殆どが欧米人だってことだよ
だから彼らの言語の普通で考えるのが自然
そして今のコンピュータ言語は数学的な考え方を多く含有してる
それだけの話しだ
1032:Name_Not_Found
15/11/19 14:42:17.18 .net
>>996
ソースコードに可読性が重要なのは、
ソースコードは読むべき文章だからだよ。
括弧の位置も、可読性を重視して、英文として極自然に
なるような理屈で決まっている。
そのことに気づかないようじゃ、まだまだだね。
1033:Name_Not_Found
15/11/19 14:46:00.57 .net
>>993
チョーわかりやすいと思う
1034:Name_Not_Found
15/11/19 14:47:41.17 .net
英文で文章の一部として使われるカッコは、前の文章を補助する追加の文章であり、
関数のカッコは、関数へ渡すパラメータで関数に強く紐付いている。
使い方が違うから、カッコの前にスペースを入れないんだろうね。
ソースコードを文章ではなくトークンの並びと捉えていると理解できないだろう。
1035:Name_Not_Found
15/11/19 14:49:10.68 .net
>>993
まあニュアンスとしてはわかるけど、
山田も太郎も名前なので、ちょっと違うかなw
1036:Name_Not_Found
15/11/19 14:50:23.74 .net
間に合った。次スレ
+ JavaScript の質問用スレッド vol.127 + [転載禁止]©2ch.net
スレリンク(hp板)
1037:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
1038:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています