元スレ+ JavaScript の質問用スレッド vol.93 +
JavaScript覧 / PC版 /みんなの評価 :
151 = :
tableの中のcellをクリックすると、
新しいrowが生成され、クリックされたcellがあるrowの一行下に追加される。
というプログラムを作っています。
すべてのcellのオンクリックイベントに以下のように指定しています。
var row = table.insertRow(lineNum+1);
var cell = row.insertCell(0);
cell.innerHTML = lineNum;
はじめのひとつをクリックしたときは想定通りに動くのですが、
クリックするごとにrowが追加され、rowの行数が増えてしまい、
table.insertRow(lineNum+1)で指定した場所からズレて行ってしまう問題が起こります。
アルゴリズムが悪いのだと思いますが、どうすれば解決できるのかアドバイスをお願いします。
152 = :
クリックされた後、そのクリックされたセルは何行目なのかを調べ
なければ「絶対に駄目」だよね。だって何行目なのか分からないまま
正しい位置に挿入なんてできないから。
153 = :
>>151
何行目かを判定する必要は全くない
クリックされた要素から見て insertBefore もしくは appendChild すればいいだけ
あと、cells にイベントを貼り付けるやり方だと insert する度にイベント定義しなくちゃいけないから tbody あたりにイベント定義する方がいいと思う
154 = :
> クリックされたセルは何行目なのかを調べなければ「絶対に駄目」
そうでもない。
155 = :
oh... かぶりやがた
157 :
ウェブアプリケーションという不幸 】
現在、多くのプログラマ(素人)が
ウェブアプリケーションというものが
ベストな正しい方向だと勘違いしている。
ソフトウェアの作るにおいて
そのアプリケーションに応じた
状態遷移を実装するというのは
基本中の基本である。
その点においてウエブブラウザという
ある状態遷移が実装されているアプリケーションの上に
また別のアプリケーションを実装するのは
論外である。
そこまでするなら普通にアプリケーションを実装
してダウンロードして使って
もらえばいいのである。
ウェブアプリケーションとは
虚構にしか他ならない。
ウェブアプリケーションを
作ろうとしているあなた。
今すぐ普通のアプリケーション
とし設計し始めては
いかがだろう。
そうすればきっと後悔しないですむ。
158 = 157 :
HTMLやHTTPを悪者にはしていない。
TCP/IPができあがり、その応用として、ファイルを送ったりするようになった。
ファイルの中身のテキストにデータ構造をもたせ、それはつまりツリー構造なわけだが
その実装としてのハイパーテキスト、つまりHTMLという送る側と送られる側で決め事(プロトコル)
をつくり、画像や音楽など表現の幅を広げることは当然の成り行きだっただろう。
そして、その送る側としてのHTMLファイルサーバ、つまりWebサーバ、送られる側としてのプロトコルの解釈・表示系としての
ブラウザというアプリケーション。
ここまではいい。
だが、そこから先が素人の発想というか、いそがばまわれを忘れた者の愚かな発想。
つまりブラウザ上で、アプリケーションを動かすという発想なのである。
ブラウザというのは、おくられてきたステートレスな通信内容の一瞬の表示手段でしかない。
つまりアプリケーションのためのひとつのパーツなのである。
Windowsでいえば、コントロールのひとつ。(実際WebBrowserというコントロールがある。)JavaならWebClietnだ(これは、ブラウザではないが。)。
包含関係が逆なのである。
ブラウザ上にアプリケーションを作るのは愚かなブームである。
161 = :
現在はes5はまだまだでes3が一般的だと思うんですが、firefox js (mozilla仕様のjs)だと現在どのバージョンが一般的に使われてる(許容されてる)んでしょうか?
164 = :
>>157-158
スレ違いだけどWebアプリのデメリットのみを強調してる恣意的な主張だな
デメリットとメリットを秤にかけてメリットが大きいと見るからWebアプリ選択するものだろうに
165 = :
>>157-158
google先生にも言って今後webアプリ作らないよう説得してください。
167 = :
mozilla rhinoを使っているので実際のところバージョンに神経質になることはありません。
しかし未だにes3が一般的だとgenerator式やタプル渡しなどがes3系のブラウザだと使えないので、このままだとrhino jsで書いたコード修正が必要になりかなり面倒になります。
es5がまだ一般普及してないなら旧式の構文で書こうかなっているので普及してるjsのバージョンは気になります。
168 = :
以下のスレの住民は皆あなた達を見下してます
JavaScriptスレ
http://toro.2ch.net/test/read.cgi/tech/1314333133/
170 = :
MDNではタプル渡しじゃなくて分割代入と翻訳してましたね。
このスレでバージョンやjs1.6以降についての反応がないところを見ると未だにes3のままでes5系のコードはまだ普及もしてないようですね。
171 = :
>>170
分割代入とかは今のところ実装としてはMozilla JavaScriptの独自実装に過ぎず
仕様としてはES5ではなく、ES.nextの仕様に取り込まれる見通しだよ
ES5は既に最新のブラウザーでだいたい実装済みだよ
http://kangax.github.com/es5-compat-table/
172 = :
>>168
見下してるようには見えませんでしたが・・
173 = :
>>170
他の人が使ってるから使うのか、流行に乗りたいだけ?
普通はブラウザが対応しているかで決める
ES5使ってるが、他の人が使っているかを気にしたことはない
174 = :
ES5は流行ってるんですか?
175 = :
流行ってるよ
176 = :
マニアの間で
177 = :
なんで流行っているかに拘るの?
179 = :
ここは ECMAScript の話題を制限してないよ
180 = :
>>172
全部読みましたか?
>>179
ム板のjsスレの先生方はここは質問用って言ってましたよ
181 = :
同じjsを扱うようですけどそもそも板が違うので内容や目的はまったく違うと思いますよ
183 = :
>>180
ES5の質問しかないように見えるけど、どの辺が問題?
184 = :
<div id="P">
<div class=a>aaa</div>
<div class=b>bbb</div>
</div>
$('#a').click.(function(){
クリックしたaと同じ要素内にあるid=bのhtml
}
とやりたいのですがprentやthisの指定が上手くいきません
本当に初歩的な質問ですみません
185 = :
失礼します。
jQueryで非同期POSTをする場合このようなサンプルがありますが
$.post("hoge.php", {"hoge1" : 1, "hoge2": "hoge"}, my_func);
引数に自分のform要素内のinput要素すべてを一括して送信するにはどうしたらいいでしょうか?
簡単に言えば普通にsubmitしていたページを非同期で更新したいのです。
したがってform要素すべてをtargetのURLに送信し、もどってきたhtmlDomを自分自身に適用したいのです。
ヒントだけでもお願いいたします。
187 = :
>>186
setTimeout(anim_func, 2000, 1);
188 = :
俺毎回思うんだけど、処理でsetTimeout(func,1)ってあるけど
setTimeout(func,0)でよくね?
俺毎回そうやってるんだけどコレもしかて悪いやり方?
マウスアウト→マウスオーバーって動作が行われるとき
var a=1
マウスアウト{
a =0
setTimeout(alert(a),0)
}
マウスオーバー{
a=1
}
ってやるとちゃんとaは1になってるし
190 = :
>>188
最小値は仕様で定められていたような
191 = :
>>189
クオートで括ってないから
194 = :
なんでそんなトリッキーな書き方してるかわからないが
HTMLは基本class="class1 class2"って書くのがデフォだから
そんな書き方やめんしゃい
気になってチンコムズムズしてるんだろうけど正規じゃない書き方はいつの時代も弾かれる
195 = :
>>187
できました。ありがとう。
196 = :
>>188
それだとsetTimeout使う意味がなくね?
197 = :
>>196
もしも、setTimeoutの中身が無いときと同じような順番で実行されるとしたら
a=0の直後に実行されるわけだから0がalertされるわけじゃん?
んでもマウスアウト→マウスオーバーの順番に実行されるような状況下でもちゃんとマウスオーバーのaの値が適応される
var a=1
マウスアウト{
a =0
alert(アウト)
setTimeout(alert(a),0)
}
マウスオーバー{
a=1
alert(オーバー)
}
ってやるとアウト→オーバー→1ってなる
最小値設定されてんのか、そうなんか。処理の優先度だと思ってた
199 = :
初歩的な質問すいません。
var year = 2011;
var name;
name = year;
var nextyear;
nextyear = name + 1;
alert(nextyear);
この結果が20111になるのは何故でしょうか?
200 = :
DOMのwindow.nameがstringだからやね
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.93 + (1001) - [100%] - 2011/12/10 18:31
- + JavaScript の質問用スレッド vol.97 + (1001) - [97%] - 2012/3/1 3:31
- + JavaScript の質問用スレッド vol.96 + (1001) - [97%] - 2012/1/28 23:01
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/10/26 4:18
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/11/15 20:32
- + JavaScript の質問用スレッド vol.99 + (1001) - [97%] - 2012/5/7 4:32
- + JavaScript の質問用スレッド vol.98 + (1001) - [97%] - 2012/4/9 14:46
- + JavaScript の質問用スレッド vol.83 + (1001) - [97%] - 2011/2/24 8:02
- + JavaScript の質問用スレッド vol.94 + (1001) - [97%] - 2012/1/8 15:46
- + JavaScript の質問用スレッド vol.95 + (1001) - [97%] - 2012/1/17 4:16
- + JavaScript の質問用スレッド vol.113 + (1001) - [95%] - 2014/1/25 12:46
- + JavaScript の質問用スレッド vol.131 + (1000) - [95%] - 2017/1/25 8:01
- + JavaScript の質問用スレッド vol.130 + (1001) - [95%] - 2017/11/25 20:45
- + JavaScript の質問用スレッド vol.131 + (1004) - [95%] - 2018/3/7 13:30
- + JavaScript の質問用スレッド vol.132 + (1001) - [95%] - 2018/4/19 11:00
- + JavaScript の質問用スレッド vol.113 + (1001) - [95%] - 2014/3/15 21:30
- + JavaScript の質問用スレッド vol.133 + (1001) - [95%] - 2018/6/8 10:45
トップメニューへ / →のくす牧場書庫について