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

このエントリーをはてなブックマークに追加
1Name_Not_Found
━━━本スレに書く事を許される者は以下の通り━━━━━
 一、正しい(validな)HTMLとは何か知っており書ける者
 一、JavaScriptはJavaとは別物であると知っている者
 一、自ら学んでJavaScriptコードを書く意思を持つ者
 一、ユーザに迷惑となるスクリプトを書かない者
 一、質問を分かる日本語できちんと説明できる者
 一、トラブルを再現する最小限のサンプルを貼れる者
 一、テンプレ+FAQ>>2-10/過去ログ/関連資料を読める者
━━━━━━━━━━━━━━━━━━━━━━━━━━━
自力で書く気がない人は他のスレへ(テンプレ末尾参照)。
前スレhttp://hibari.2ch.net/test/read.cgi/hp/1289130738/
[必読]過去スレ全集 http://www2.atpages.jp/mirror/2ch/javascript/
      (閲覧のみ) http://usamimi.info/~mirrorhenkan/2ch/javascript/
      (閲覧のみ) http://wing2.jp/~mirrorhenkan/2ch/javascript/
[必読]ガイド https://developer.mozilla.org/Ja/JavaScript
(GuideをReferenceに→Netscape版言語仕様。多くの実装が準拠:ECMA-262.ed3)
FAQ・注意・過去ログ・仕様書・関連資料・関連スレ>>1-7
2Name_Not_Found:2010/12/10(金) 15:45:38 ID:8tOixelJ
【質問を書く上で】
1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。
 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。
 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。
2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。
 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!)
 長い(1レスに入らない)場合はアップロードしてURIを貼る。
3)初心者という言葉は危険なので使わない方がよい。
 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。
4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。
 ただ「動きません」「エラーです」は何も情報がないため嫌われる。
 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。
 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!!
 OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。
5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度
 手間を食わせる可能性大
6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。
 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、
 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け!
7)質問はまっとうな(他人に理解できる)日本語で。
 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
3Name_Not_Found:2010/12/10(金) 15:45:52 ID:8tOixelJ
【FAQその1】
Q1. 開いた別窓/フレームの内容にアクセスできないのですが…
A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。
Q2. JavaScriptでローカルファイルを読み/書きたいのですが…
A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに…
Q3. 同じタグの中でonclick="foo()"とonclick="bar()"を同時に使いたいのですが…
A3. セミコロンで複数の文を区切れます。onclick="foo();bar();"としましょう。
Q4. document.write(...)でページ内容を追加したいのですが…
A4. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。
  部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、
  (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。
  innerHTMLは非標準ですがIE、Opera、Safari、Gecko(N6/N7/Firefox等)で対応済。
Q5. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが…
A5. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるか
  <div><table>...</table></div>とでもしてdivのinnerHTMLを書き換えましょう。
Q6. DOMでtable要素にtr要素を追加しても表示されないのですが…
A6. DOMでは(XHTML 1.x除く)tbody要素にtr要素を追加する必要があります。
  tbody要素はtbodyタグを書いていなくても自動的に作成されます。
  またはtable.insertRow()/tbody.insertRow()を使いましょう。
Q7. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが…
A7. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。
Q8. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A8. 「document.forms.myform.elements[変数名].value」でどぞ。
  JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
Q9. Aタグのonclickで動作指定してるのですが時々動きません…
A9. 「onclick="...;return false"」としないとページ移動しちゃうから。
4Name_Not_Found:2010/12/10(金) 15:46:03 ID:8tOixelJ
【FAQその2】
Q10. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A10. 取得には document.defaultView.getComputedStyle() を使う必要あり。
  IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q11. 100*1.15の結果が114.999…998となってしまうのですが…
A11. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。
Q12. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが…
A12. IE7/Gecko/Opera/Safariのnew XMLHttpRequest()、IEの
  new ActiveXObject("Msxml2.XMLHTTP.6.0") (または"Msxml2.XMLHTTP.3.0")
  を使えばできます。古いブラウザだと隠しフレームに読むなどのワザが必要。
Q13. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A13. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
  複数の関数を呼びたいときは obj.onclick=function(){foo();bar();};
  という風に無名関数を作りましょう。中に書かれたコードが実行されます。
Q14. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
  「"...this..."」とか「function(){...this...}」ではうまく行きません。
A14. それらが実行されるときはthisは別のもの(window等)を指してしまってる。
  「function(x){return function(){...x...};}(this)」のようにthisを別の変数に
  束縛しその変数を使って。循環参照によるメモリリーク問題あり(この項記述検討中)
Q15. 文字列の置き換えをするときにコードを使いたい(Perlのs///e)のですが…
A15. string.replace(/.../,function(str,p1,p2,...,offset,s){...})としましょう。
  正規表現にマッチした文字列がreturnで返された文字列に置き換えられます。
  各引数はstrがマッチした部分文字列、p1,p2,...が1番目、2番目、…の()の中身、
  offsetがマッチした位置、sが置き換え前の文字列全体になります。
5Name_Not_Found:2010/12/10(金) 15:46:14 ID:8tOixelJ
【FAQその3】
Q16. input type="file"の値を設定(参照)できないのですが…
A16. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q17. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A17. コード実行時点でHTMLがそこまで読まれてない。onload中でやるとか。

【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】
・仕様を読む:回答者なら仕様の該当部分は読んでいるべき。質問者でも
 仕様を読まずうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。
・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、
 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。
・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと
 は無視」は不毛。質問者が分かって選択していれば尊重する。無知か
 らIE専なのは指摘してあげると親切。
・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される
 可能性大。非標準機能も損得を分かった上で使うならよい。
・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、
 そこだけ見ているとIE専になる。あとは上2件と同様。
・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当
 な理由があることも。尋ねて分かってないようなら煽っても可(w
・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選
 択するべき。一概にどちらは駄目、とは言えない。
・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性
 で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。
6Name_Not_Found:2010/12/10(金) 15:46:24 ID:8tOixelJ
7Name_Not_Found:2010/12/10(金) 15:46:36 ID:8tOixelJ
【チュートリアルサイト・サンプルサイト】
規格が読めないならまずはチュートリアル。サンプルサイトも沢山ある。
(以下は精選すべきとの議論あるが進んでいないので玉石混淆)
MetaGraphic Cell
http://www2u.biglobe.ne.jp/~oz-07ams/prog/
どら猫本舗のリファレンスカウンター
http://www.doraneko.org/
はぎさんちのページ Mozilla's DOM Sample Project
http://cgi.din.or.jp/~hagi3/JavaScript/JSTips/Mozilla/mds.cgi
一撃必殺javascript
http://www.openspc2.org/JavaScript/
【関連スレ】
板違い、スレ違いに注意!サーバ側での処理はWebProg板へどぞ!
Webサイト制作初心者用質問スレ part221
http://hibari.2ch.net/test/read.cgi/hp/1286969289/
CSS初心者スレッド=9th=
http://hibari.2ch.net/test/read.cgi/hp/1287470663/
役に立つ書籍は? 4冊目
http://hibari.2ch.net/test/read.cgi/hp/1172823674/l50
1行javascriptプログラミング
http://hibari.2ch.net/test/read.cgi/hp/1066750037/l50
WSH(・∀・)スレッド! Part 4
http://hibari.2ch.net/test/read.cgi/tech/1243095768/l50
8Name_Not_Found:2010/12/10(金) 15:51:19 ID:8tOixelJ
テンプレ議論はメ欄にテンプレ議論と書いて進めますかね

では質問ドゾー
9Name_Not_Found:2010/12/11(土) 13:45:35 ID:2b6nLnHO
<table border="1">
<tr><td rowspan="2" bgcolor="red">1</td><td>2</td><td rowspan="3" bgcolor="red">3</td></tr>
<tr><td>5</td></tr>
<tr><td bgcolor="red">7</td><td>8</td></tr>
</table>
<script language="javascript">
var table = document.getElementsByTagName('table')[0];
var td = document.getElementsByTagName('td');
for (i=0; i<td.length; i++) {
td[i].onclick = function() {
for (j=0; j<table.rows.length; j++) {
//alert(table.rows[this.cellIndex].cells.length);
}
}
}
</script>

こんな感じで赤い部分の数を縦に数えたいのですがうまくできません。
1と7をクリックすると2、
3をクリックすると1がかえってくるようにしたいです
よろしくおねがいします
10Name_Not_Found:2010/12/11(土) 14:01:31 ID:???
>>1
11Name_Not_Found:2010/12/11(土) 15:12:01 ID:71WdmdZe
ブラウザのサイズを
document.documentElement.clientWidth;
document.documentElement.clientHeight;
で取得して、その値の0.8倍の大きさのテキストフィールドを作ったのですが
今のところブラウザのサイズを変更してテキストフィールドをonclickやonFocusで選択した時変更されるという方法しかわからないのですが

サイズを変更してる時、一々クリックしなくてもブラウザを引き伸ばししたりしてる時リアルタイムで変更される方法は無いでしょうか?
12Name_Not_Found:2010/12/11(土) 15:15:17 ID:???
onresize
13Name_Not_Found:2010/12/11(土) 15:57:47 ID:???
>>9
var column = 3;
var table = document.getElementsByTagName('table')[0];
var tr = table.getElementsByTagName('tr');
var counter = [];
var idx = 0;
for (var i = 0; i < tr.length; i++) {
var td = tr[i].childNodes;
for (var j = 0; j < td.length; j++) {
while (true) {
if (counter[idx] == null) {
break;
}
idx++;
}
counter[idx] = 1;
var rowspan = td[j].getAttribute('rowspan');
if (rowspan) {
for (var k = 1; k < rowspan; k++) {
counter[idx + column * k] = 0;
}
}
}
}
alert(counter);

後はわかるな?
14Name_Not_Found:2010/12/11(土) 16:00:40 ID:???
わっかりましぇーん
15Name_Not_Found:2010/12/11(土) 16:10:53 ID:???
1 2 3     1 1 1
  5    →  0 1 0
7 8       1 1 0
          -------
          2 3 1
169:2010/12/11(土) 17:48:57 ID:???
>>13
ありがとう素晴らしいです!
17Perl忍者 ◆M5ZWRnXOj6 :2010/12/12(日) 00:19:33 ID:gJmT6h52
ここがうわさのWEB土方の巣窟ですかっ!
18Name_Not_Found:2010/12/12(日) 00:35:15 ID:???
このスレはWebProg板とどこがちがうんですか?
19Name_Not_Found:2010/12/12(日) 00:40:06 ID:???
板のローカルルールを読みましょう
20Name_Not_Found:2010/12/12(日) 00:47:37 ID:???
>>18
板が違います。
21Name_Not_Found:2010/12/12(日) 01:05:48 ID:???
>>19
WebProg板は何で過疎ってるんですか?
22Name_Not_Found:2010/12/12(日) 01:12:04 ID:???
>>21
住人がいないからです。
23Name_Not_Found:2010/12/12(日) 01:39:13 ID:???
このスレ -> 初心者歓迎大繁盛
WebProg板 -> 住人不在
24Name_Not_Found:2010/12/12(日) 02:44:01 ID:???
>>12
すみません、寝てました
ありがとうございます!
25Name_Not_Found:2010/12/12(日) 11:05:34 ID:???
function henkou()
{
yoko = document.fo,text1.value;
tate = document.fo.text2.value
}

<form name="fo">
<input type="text" name="text1">
<input type="text" name="text2">

<textarea cols="80" rows="10" name="hoge"></textarea>

<input type="submit" onclick="henkou()">
</form>

というのを作ったのですが、このyokoとtateをどーにかしてテキストエリアのcolsとrowsに入れたいのですが
どうしたらいいのでしょうか?
とりあえずtextareaオブジェクトのプロパティやメソッドは調べたのですが
26Name_Not_Found:2010/12/12(日) 11:29:56 ID:???
.cols .rows
27Name_Not_Found:2010/12/12(日) 11:36:45 ID:???
そんなのがあったんですか、ありがとうございます

自分の使ってる本とかサイトだと、フォームオブジェクトのテキストオブジェクトだと
defaultValue
name
value
type

しか書いてなかったり、イベントハンドラも書いてないのがあったりするんですが
そういう一覧でオススメな所ってあったりします?
それともこういうのってもし

<textarea tyome="" name="hoge"></textarea>
ってのがあったら.tyomeとかでできちゃうものなんでしょうか?
28Name_Not_Found:2010/12/12(日) 11:39:21 ID:???
var a=[],d=document;for(var i in d.createElement('textarea'))a.push(i);d.write(a.join('<br>'));
29Name_Not_Found:2010/12/12(日) 11:40:48 ID:???
>>27
逝ってよし
30Name_Not_Found:2010/12/12(日) 11:42:18 ID:???
なんでやねん
31Name_Not_Found:2010/12/12(日) 11:43:27 ID:???
このスレは専門板での成功例。
専門板が一見さまや初心者お断りしたら衰退するだけだ






逝ってよし見たの何年ぶりだろうか
32Name_Not_Found:2010/12/12(日) 11:49:31 ID:???
>今時の高校教科書には「鯖にうp汁」「教えて厨は逝ってよし」等のネットスラングが解説されているらしい。
だそうですよ
33Name_Not_Found:2010/12/12(日) 11:52:52 ID:???
それって結局捏造だったやつじゃなかったっけ
スパロボ偽情報みたいな
34Name_Not_Found:2010/12/12(日) 12:50:31 ID:???
>>31-33
逝ってよし
35Name_Not_Found:2010/12/12(日) 12:52:31 ID:???
>>34
オマエモナー
36Name_Not_Found:2010/12/12(日) 12:55:05 ID:???
>>35
ギコニャハハ
37Name_Not_Found:2010/12/12(日) 12:58:55 ID:???
古いんだよ!ちっとは黙っとけオッサンども(藁)
38Name_Not_Found:2010/12/12(日) 13:02:29 ID:???
まぁオッサンだよな逝ってよしなんて未だに使ってる奴は
39Name_Not_Found:2010/12/12(日) 13:02:33 ID:???
>>27
そりゃHTMLのサイトみろ
どのタグがどんな属性を持っているか
40Name_Not_Found:2010/12/12(日) 14:40:35 ID:???
>>27
そういう仕様じゃない
DOM1とかで規定されてるから読んでみるといい
41Name_Not_Found:2010/12/13(月) 00:01:47 ID:???
>>32-34
実話でしょ。紹介ニコビデオ。
ttp://www.nicovideo.jp/watch/sm12271177
42Name_Not_Found:2010/12/13(月) 00:23:22 ID:nPZ3XYrs
学校の課題でこんな問題が出ました。(javascript)

「3つの引数(二つの数値と四則演算記号)を受け取り、
計算結果を出力する機能を関数で実現する。ただし入力はテキストボックスとし、
0で割る場合はエラーメッセージが出力できる。」
htmlで作成して提出なのですが、
さっぱりわからなくて困ってます。
解る人タグを教えてください・・・。
43Name_Not_Found:2010/12/13(月) 00:27:31 ID:???
タグとか言ってる時点で望みがなさすぎるので
諦めて真面目にテキスト読み直してこい。
いやマジで。
44Name_Not_Found:2010/12/13(月) 00:46:44 ID:???
四則演算記号も受け取るって事はevalが楽そうだな
45Name_Not_Found:2010/12/13(月) 01:23:04 ID:LMOelhkO
foo.xml | jsengine > bar.txt
みたいな感じで、完全にローカルな環境でxmlのフィルターを書きたいと思ったのですが、
ファイルの読み込みはAjaxで何とかなるとはいえ、書き出しのほうはJSではどうしようもありません。

・ブラウザから強制ダウンロード
とか
・JSのエンジンを他の言語に組み込む
以外で、出力されるhtmlテキストをお手軽に保存する方法はありませんか?

46Name_Not_Found:2010/12/13(月) 01:23:38 ID:???
書いてもいいけどそれだと学校も課題を出した意味が無いし機会を奪うだけだな
あと、eval is evil
47Name_Not_Found:2010/12/13(月) 01:34:45 ID:???
>>45
var data = encodeURI("<strong>データ、なんでもいい</strong>");
window.open("data:application/octet-stream; charset=UTF-8," + data);

表示だけなら
window.open("data:text/html; charset=UTF-8," + data);

ただし、IEは8以降のみ。Firefoxとかは大丈夫
48Name_Not_Found:2010/12/13(月) 01:36:21 ID:???
>application/octet-stream
それ
>・ブラウザから強制ダウンロード
じゃないの
49Name_Not_Found:2010/12/13(月) 01:40:51 ID:???
ajaxで読み込むならajaxで保存すりゃいいだけじゃないのか
5045:2010/12/13(月) 01:50:01 ID:LMOelhkO
>>48
それですね。保存するファイル名とか指定できなかった気がします。

>>49
それローカルに保存できますか?
できればそれが一番いいんだけど・・・。
51Name_Not_Found:2010/12/13(月) 01:50:52 ID:???
>>45
ローカルでやるのにどうしてブラウザを通したいのか…。
Windows なら JScript が楽だと思うが。
52Name_Not_Found:2010/12/13(月) 01:52:58 ID:???
>>49も結局レスポンスヘッダにapplication/octet-streamをセットする方法になるのでは?
5345:2010/12/13(月) 01:59:58 ID:LMOelhkO
>>51
Unix系(手元はMac)ならどうですか?
ブラウザは通さなくてもいいんですが、新しめのJSエンジンは通したいかなぁ。
5447:2010/12/13(月) 02:06:08 ID:???
>>53
http://0xcc.net/blog/archives/000048.html
jsでやりたいならこういうのもあるよ
5545:2010/12/13(月) 02:18:08 ID:LMOelhkO
>>54
方向性は同じで、Webkitだと
/System/Library/Frameworks/JavaScriptCore.framework/Versions/Current/Resources/jsc -i
がそれみたいです。
ただ、結局ネックになるのはFile I/Oですね。
標準出力はprintでやるとして、入力はどうするんだろう?

xmlをパースして情報をまとめるというのを言語ネイティブにやろうとすると
JSが一番ラクだから、というのが元々のモチベーションだったのですが、
やっぱ使い方まちがってますかね・・・。
56Name_Not_Found:2010/12/13(月) 02:23:21 ID:???
5745:2010/12/13(月) 02:30:45 ID:LMOelhkO
ほぅ、そんなのもあるのか。
このサーバサイドJSとかいうのの動作原理を理解すればよろし、ってことだろうけど、結局
> JSのエンジンを他の言語に組み込む
とかになりそう・・・。

ところで、さっきのjscかjsかでechoコマンドを作れたら、
cat foo.xml | ./jsc -e '...' > bar.txt
で完成する感じですが、何とかなりませんかねぇ。
5845:2010/12/13(月) 02:39:35 ID:LMOelhkO
お、それっぽいの発見。
ttp://blog.8-p.info/articles/2006/10/05/spidermonkey
59Name_Not_Found:2010/12/13(月) 02:46:34 ID:???
>>57
ECMAScript + DOM に File I/O がないのだから、如何様にしても JavaScript だけでは解決できない。
60Name_Not_Found:2010/12/13(月) 02:46:50 ID:???
>>55
使ったことないが、node.js かねぇ…。
6145:2010/12/13(月) 03:04:36 ID:LMOelhkO
とりあえず
echo '<foo><bar>Hello World!</bar></foo>' | ./jsc -e 'var ln; while(ln=readline()){print(ln)}'
な感じですが、readline()がECMA準拠してないってことですね。

>>60
そのへんで手を打ってみます。
いろいろありがとうございました。
62Name_Not_Found:2010/12/13(月) 07:13:31 ID:???
IEかどうかを判断するときnavigator.userAgent.matchで判断してたのですが
他の人のソースを見るとdocument.attachEventがあるかないかで判断してる記述がありました
他にも例えばIEだけで使えるもの
typeof ActiveXObject == "function"でもいけるのを確認してナルホドなーと思ったのですが
なんか判別する場合のスタンダードな書き方が存在するのでしょうか?
6362:2010/12/13(月) 07:23:06 ID:???
記憶が曖昧だったのでもう1度見たところ
document.attachEventではなく
window.attachEvent && !window.opera
のように書いてました
この表記を見ると好きにしろって感じなんですかね・・・
64Name_Not_Found:2010/12/13(月) 08:43:36 ID:???
>>62-63
洩れは「ある機能を使うとき」「その機能のオブジェクトがあるか
どうかをチェックする」ようにしている。つまりIEかどうかを判別
するというより、attachEventを使うブラウザかどうかを判別する
という意識かな。
6562:2010/12/13(月) 08:57:41 ID:???
>>64
あーナルホド!
とても納得です
66Name_Not_Found:2010/12/13(月) 17:50:36 ID:???
テキストエリアをブラウザのフチギリッギリまで表示する方法ありませんか?
最大化しようが縮小しようがギリッギリになるっていう感じのです
67Name_Not_Found:2010/12/13(月) 18:12:13 ID:???
>>66
スレ違いだけど、CSSでいいんじゃね?
68Name_Not_Found:2010/12/13(月) 18:20:21 ID:???
まずJavascriptだとブラウザのサイズ取得して0.8とかかけてやるやり方かなぁ?
だけどテキストエリアはブラウザによってサイズが違うからCSSの方が良い

だけどCSSとかにブラウザのサイズに合わせて変更するのがあるかは知らん
じゃあJavascriptでCSSの変更をと言われても俺CSS全然ダメだから他を当たってくれ
CSSだけはダメだ、俺はフレームのデザインとか本当にダメ
69Name_Not_Found:2010/12/13(月) 18:31:57 ID:???
>>66

<!DOCTYPE html>
<html>
<head>
<style>
html,body,form,div { margin: 0; padding: 0; height: 100%; }
textarea { display: block; height: 100%; }
</style>
</head>
<body>
<form><div><textarea></textarea></div></form>
</body>
</html>
70Name_Not_Found:2010/12/13(月) 18:32:51 ID:Viou2WGZ
IE6とFirefoxで試してみたけど、width:100%でいけた
親要素がbodyじゃないと%の計算が面倒なんでJS使ってやりたくなった

テキストエリアのデフォルトスタイルが厄介で、
borderStyleをsolidにして、左右borderとpaddingは0にしないと
IEで横スクロール出る

スレ違いすまんこ
>>66は責任とって、テキストエリアにリサイズトグル付けて
自由にリサイズできるようにしんしゃい!
71Name_Not_Found:2010/12/13(月) 18:39:32 ID:???
皆さんありがとうございます!
CSSもやってみようと思います
7269:2010/12/13(月) 18:45:11 ID:???
>>70
display: block; で width は不要となる。height は calc() で演算。
calc未対応ブラウザは JavaScript で演算。
ここまで拘ると JavaScript が必要になる。
73Name_Not_Found:2010/12/13(月) 19:13:44 ID:OMicxQ5I
Defining Getters and Setters - MDC Doc Center
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Guide/Creating_New_Objects/Defining_Getters_and_Setters
これってo.aを直接呼んで値を取得したり設定したりできますよね?
そういうものなんですか?ゲッター・セッターって
カプセル化というものと関連した仕組みというわけではないんですか?
74Name_Not_Found:2010/12/13(月) 20:13:55 ID:Viou2WGZ
o.aがリードオンリー的な何かじゃないとまずかろう、ってこと?
7573:2010/12/13(月) 20:49:57 ID:???
あまりよく理解できていませんがゲッターセッターで検索すると
値(>>73の場合o.a)に対して外部から直接操作できないようにしておいて
ゲッターやセッターを通してのみ値にアクセスできるようにすることによって
それ以外の方法で値が変更されていないことを保障するとか何とか説明されていたりするので
そういう用途で使うものだと思っていたのですが>>73はそうなっていないみたいなので
ゲッター・セッターというものがまたよくわからなくなって
76Name_Not_Found:2010/12/13(月) 22:26:58 ID:???
たとえば四角形を表すオブジェクトが x, y, width, height の4つのプロパティを持っていたとします
後で気が変わって、データの持ち方を left, right, top, bottom のように変更したくなりました
getterとsetterを使っていれば、たとえばwidthのgetterでright - leftを返すようにすることによって
widthプロパティを使った既存のスクリプトに影響が出ないようにすることができます
77Name_Not_Found:2010/12/13(月) 22:41:05 ID:/1bZvcig
>>75
固定観念にとらわれる必要はないかと。

var quadrilatera = {x:5, y:7, get area () { return this.x*this.y; }, get allSide () { return this.x*2+this.y*2; }}; // 四角形
console.log(quadrilatera.area); // 面積
console.log(quadrilatera.allSide); // 4辺の総和
78Name_Not_Found:2010/12/13(月) 22:48:04 ID:???
ゲッタせった初めて知ったけど、これすごいな。便利そうだ。ぱっとは使い道が思い浮かばんけど。
79Name_Not_Found:2010/12/13(月) 23:19:40 ID:???
>>76-77
なんとなくわかったような気がします
o = { x, y, width, height } を o = { left, right, top, bottom } に変更しても
o = { left, right, top, bottom, get width() { return right - left; } } のように
width: function() {} ではなく get width() {} を追加することで
o.width()ではなく変更前と同じo.widthで値が得られるってことでしょうか
特徴はメソッドをプロパティのように表記できること・・・?

ステップアップしたくて新しく覚えたものを取り入れてみようとするのですが、
このgetやsetももし使う機会があれば使ってみたいと思います
今回はちょっと思っていたのと違ったみたいです
8079:2010/12/13(月) 23:29:23 ID:???
return right - left

return this.right - this.left
ですねすみません
8177:2010/12/13(月) 23:41:30 ID:???
>>79
一応、プライベートに定義することも出来る。get だからプライベートというわけじゃないが。

function Quadrilatera (x, y) {
Object.defineProperty(this, 'area', {get: function () { return x*y; }});
Object.defineProperty(this, 'allSides', {get: function () { return x*2+y*2; }});
return this;
}
var q = new Quadrilatera(5, 7);
console.log(q.area);
console.log(q.allSides);
82Name_Not_Found:2010/12/14(火) 00:40:15 ID:???
getter,setterをちゃんと知りたいならjavaをやるのが近道。
83Name_Not_Found:2010/12/14(火) 01:15:40 ID:???
そもそもアクセス修飾子がないJavaScriptでカプセル化しようっていうのはなぁ・・・
84Name_Not_Found:2010/12/14(火) 01:20:51 ID:???
getter,setterだけなら個人的にはjavaよりC#のが好み
85Name_Not_Found:2010/12/14(火) 01:24:07 ID:???
好みの問題じゃないしデザパタの問題ですし
86Name_Not_Found:2010/12/14(火) 03:44:09 ID:???
すいませんHttpRequestのonreadystatechangeのイベントでつかう関数の指定の仕方について教えてください

function a(){
ResponseCheck = aCheck;
c(ResponseCheck);
}
function b(){
ResponseCheck = bCheck;
c(ResponseCheck)
}

function c(ResponseCheck){
httpRequest.abort();
httpRequest.onreadystatechange = ResponseCheck;
httpRequest.open('GET', Url, true);
httpRequest.send(null);
}

function aCheck(){

}

function bCheck(){

}

という感じで
aから来た場合レスポンスが有ればaCheckに
bから来た場合レスポンスが有ればbCheckにonreadystatechangeを指定したいのですが
この方法だとうまくいかず困っています。
適切な方法を教えていただけないでしょうか
87Name_Not_Found:2010/12/14(火) 04:21:57 ID:???
その aCheck、bCheck は send() 後に呼び出されているか確認!
「〜」内で readyState と status の値をチェックしてるか確認!!
他の伏せてるコードに間違いがないか確認!!!
88Name_Not_Found:2010/12/14(火) 05:18:20 ID:???
>>87
ありがとうございます。
ResponseCheck内に入れてあるaCheckやbCheckなどを見に行かずに
httpRequest.onreadystatechange = ResponseCheck;
のところでResponseCheck()という関数を指定しようとしちゃってるみたいなんですよ
で、aCheckとbCheckに行かずにResponseCheck()は無いのでエラーが発生してしまってます。
aCheckやbCheck内のコードはこの分岐使わずに単体で動かした場合はちゃんと動作しているので大丈夫だと思います。
89Name_Not_Found:2010/12/14(火) 05:49:45 ID:???
ResponseCheck が呼び出されているとしたら abort() しているところでじゃないかな(2回目以降の呼び出しの場合)。
それでもちゃんと readyState を確認していれば問題ないはずだけど。

見た限りのコードからは、エラーの原因は分っかりっましぇ〜ん!
90Name_Not_Found:2010/12/14(火) 05:55:11 ID:???
んー
自分はhttpRequest.onreadystatechangeにResponseCheck内にあるaCheck()かbCheck()を指定しようとしてるんですが
この書き方だと
ResponseCheck自体が指定されてResponseCheck()という関数を指定しようとしてると思うんですよ
でレスポンスが来てhttpRequest.onreadystatechangeのイベントが発生しようとして
ResponseCheck
91Name_Not_Found:2010/12/14(火) 05:57:19 ID:???
すいません途中で送ってしまいました。

んー
自分はhttpRequest.onreadystatechangeにResponseCheck内にあるaCheck()かbCheck()を指定しようとしてるんですが
この書き方だと
ResponseCheck自体が指定されてResponseCheck()という関数を指定しようとしてると思うんですよ
でレスポンスが来てhttpRequest.onreadystatechangeのイベントが発生しようとして
ResponseCheck()が無いからaCheck等に記述してあるreadyStateなどのチェック等関係無しにエラーが出ちゃってると思うんですよ

だから
ResponseCheck = bCheck;

httpRequest.onreadystatechange = ResponseCheck;
のところの記述の仕方が正しくないんだと思うんですけど
探してもいまいちわからなくて・・・
92Name_Not_Found:2010/12/14(火) 06:15:36 ID:???
デバグに先入観は禁物!
別のとこに原因はあんだよ、少なくとも上記のレスに書いたコードとは別の。

アハ体験がアンタを待ってるぜ!
93Name_Not_Found:2010/12/14(火) 09:18:15 ID:1pt1ZD9M
質問です

こちらの
http://f32.aaa.livedoor.jp/~azusa/?t=ajax&p=jquery_plugin_pagenation
一番目にあるjQuery pager plug-inについてです。
サンプルではページ送りの位置が下部にきてますが、これをもう一つ、上にも配置するには、
どうすればよいでしょうか?
お願いいたします。
94Name_Not_Found:2010/12/14(火) 09:41:49 ID:2UYeEgU2
jQueryで<div>の中で2つの処理を続けてしたいと思います。

1)画像がフェードインで出現
 <div id="actArea"><img src="fade.jpg" id="test" style="display:none;" /></div>
2)出現し終わったら5秒間を置いたあと、別の要素<div>に書きかわる
 <div id="actArea"><div><img src="finish" /></div></div>

と言った感じです。
最初の画像のフェードインはできたのですが、
フェードイン完了後の処理(5秒待って書き換え)ができません。
<script type="text/javascript">
$(function() {
$('img#test').fadeIn(3000, function() {
// 処理終了後にダイアログ表示
/*window.alert('フェードイン完了');*/
//$('div#actArea').html('あいうえお');//テスト、書き換えはこれかな
ct = new Date();
st = ct.setSeconds(10);
//ここからわからない
});
});
</script>

countdownプラグインを使って処理するのかと思いましたが
目当ての時間まで〜するものらしく、使えないというかどうしたらいいのかわかりませんでした
どなたか回答お願いします
95Name_Not_Found:2010/12/14(火) 10:31:39 ID:???
textボックスに入力された文字列の容量を何バイトか表示する関数や方法ってあります?
96Name_Not_Found:2010/12/14(火) 10:59:21 ID:???
>>95
同じ文字列でも文字コードによってバイト数が変わると思うが。
97Name_Not_Found:2010/12/14(火) 11:02:48 ID:???
>>94
setTimeoutではだめなの?
98Name_Not_Found:2010/12/14(火) 11:16:38 ID:???
setTimeoutを知らないに1票。
99Name_Not_Found:2010/12/14(火) 11:17:37 ID:???
wait sleep 実装まだぁ
100Name_Not_Found:2010/12/14(火) 12:10:04 ID:0b6yTFwV
dan氏のこのページを参考に頭に入れようかと思っているのですが、
http://blog.livedoor.jp/dankogai/archives/50783210.html

このページにある encodeURIUnicode 関数中の7列目辺りにある
----------
var ord = c.charCodeAt(c);
----------
の意味がよくわからないのですが、0文字目を取得ということで c.charCodeAt(0)
では駄目なのでしょうか?
101Name_Not_Found:2010/12/14(火) 12:59:34 ID:???
>>97,98
おお、これでどうにかなりそうです! ありがとうございました
102Name_Not_Found:2010/12/14(火) 13:59:18 ID:???
>>100
1. c.charCodeAt(c) の引数の c が数値型に変換される。
2. 今、c として 0-9 のケースは除外されているので、これは NaN が返る。
3. 結果的に c.charCodeAt(0) と同じ値が返る。

というテクニック。
103Name_Not_Found:2010/12/14(火) 14:02:10 ID:???
>>93

$(function(){
var obj = $('#exp1').pager('div',
{
height:"200px",
prevText: "« 前へ",
nextText:"次へ »"
}
);
// nav要素 - clone - id変更 - 挿入
obj.before(obj.find('#nav').clone(true).attr('id', 'nav1'));
});
104Name_Not_Found:2010/12/14(火) 14:33:16 ID:1pt1ZD9M
>>103
ありがとうございます!
おかげで上下に配置できました。
ただもうひとつ、表示中のページがわかるように、ページナンバーのaタグに
class="highlight"が振られるようになってるみたいなんですが、
これがnavのほうでは上手く機能してますが、nav1のほうだと1ページ目のナンバーに
振られたまま動きません。
navのほうは、たとえばページナンバー「3」をクリックしたら、class="highlight"が振られ、
アクティブなページがわかるようになってます。
しかし、nav1のほうはclass="highlight"がページナンバー「1」から動きません。
これはどうすればよろしいでしょうか?

105Name_Not_Found:2010/12/14(火) 14:49:33 ID:???
やっつけ仕事

//jquery.pager.js
function highlight () {
$(me).find(navid).find('a').removeClass(settings.highlightClass);
$('#nav1').find('a').removeClass(settings.highlightClass);
var show = $(me).find(navid).find('a').get(i+1);
var show1 = $('#nav1').find('a').get(i+1);
$(show).addClass(settings.highlightClass);
$(show1).addClass(settings.highlightClass);
}

あとは上手くやりなされ
106Name_Not_Found:2010/12/14(火) 15:12:04 ID:1pt1ZD9M
>>105
神よ・・・
完全解決しました!最高です!ありがとうございます!
勉強になりましたm(_ _)m
107Name_Not_Found:2010/12/14(火) 15:15:41 ID:???
礼はいらねえ
成長して
このスレに来る迷える子羊たちを導いてくれ
108Name_Not_Found:2010/12/14(火) 15:44:20 ID:???
屁こいちゃったw
109Name_Not_Found:2010/12/14(火) 15:53:33 ID:???
かっこよすぎる・・・>>107
110Name_Not_Found:2010/12/14(火) 15:57:14 ID:???
ここまで自演


次の方どうぞ
111Perl忍者 ◆M5ZWRnXOj6 :2010/12/14(火) 17:37:22 ID:rQueV4DL
javascriptをやってるやつは低能なんだろ
ゴミ頭がごみめら
マジ可哀想なんていうかかすそのもの
javascriptwwwwwwwwwwwwwww
ウェブサイト?wwwwwwwwwwwwww
わらわせんじゃねえよごみめら
112Name_Not_Found:2010/12/14(火) 17:41:32 ID:???
>>111
Perl忍者たん、だーい好き♥
113Name_Not_Found:2010/12/14(火) 17:46:39 ID:???
Perl忍者氏に JavaScript でどんな嫌なことがあったんだろうかと想像すると、じわじわ込み上げてくるものがあるな。
114Name_Not_Found:2010/12/14(火) 17:59:16 ID:???
感謝されたことないんだろうな
胸熱
115Name_Not_Found:2010/12/14(火) 18:01:11 ID:???
典型的なステレオタイプ
116Name_Not_Found:2010/12/14(火) 18:09:56 ID:???
質問なんですが、
var array = [{'a':10,'b':20},{'a':40,'b':10},…続く];
こういうスクリプトを簡潔に書く方法はありますでしょうか?
117Name_Not_Found:2010/12/14(火) 18:32:04 ID:???
十分簡潔だと思うが・・・
何をどうしたいのかがよくわからんからなんとも
118Name_Not_Found:2010/12/14(火) 19:58:37 ID:???
今日から調べながら作り始めたので変なところがあったら申し訳ない

exelでは30分程度で作れたが
ゲームの数値計算をjavascript作ろうと考えて色々試している
基本ステータスを入力して成長後の基準値を出すところまではできたが
その成長後の基準値に倍率を掛ける方法がわからない

A,B、C、D、Eを入力

F,G,H,I,J・・・10種類程度の基準値表示

パターン選択ボタンまでは完成

パターンα選択時 倍率F*105%、J*104%
β選択時 倍率F*110% G*105%




最終的には基準値を出さずに
選択したパターンに応じて修正値だけを表示したい
119Name_Not_Found:2010/12/14(火) 19:59:56 ID:???
>>116
var x = [10, 20, 40, 10, …];
var array = [];
for (var i = 0; i < x.length; i += 2) { array.push({'a': x[i], 'b': x[i + 1] }; }
こういうこと?
120Name_Not_Found:2010/12/14(火) 20:01:23 ID:???
function bp()
{
frm1.hp.value = (frm1.tai.value * 5 + frm1.atk.value * 4
+ frm1.w2k.value * 2.5 + frm1.agl.value * 5.1 + frm1.min.value * 6.5);

frm1.mp.value = (frm1.tai.value * 4.9
+ frm1.atk.value * 6.5 + frm1.w2k.value * 7 + frm1.agl.value * 5.6 + frm1.min.value * 6);

こんな感じで出した数値にAパターンを選んだらHP*105%だけ
BパターンでHP*110% 攻撃力*120%のような修正を加えたい

function pa()
{
frm2.hp.value = (frm1.hp.value * 1.05) ;
とかやってるんだけど反応しないので詰まった
121116:2010/12/14(火) 20:18:02 ID:???
>>119
なるほど、そういう書き方もできるんですね。ありがとうございました。
122Name_Not_Found:2010/12/14(火) 20:39:27 ID:???
>>120
報告乙
123Name_Not_Found:2010/12/14(火) 21:00:20 ID:???
複数のフォームをJqueryで 追加、 削除したいです。

http://jquery-howto.blogspot.com/2009/05/remove-table-row-on-user-click.html
このサイトを参考にremoveを作成しました。

$('img.removeButton').click(function(){
$(this).parent().parent().remove();
});

最初のフォームだけは削除できるのですが、同じくJqueryで新しく追加したフォームが削除できません。
どうすれば解決できるか教えてもらえないでしょうか?

下記のようにaddで 新しいnewFormが生成される。
<tr class="newForm">
<td>
<input type="text" name="data[Alert][1][keywords]" value="" id="Alert1Keywords">
</td>
<td><img src="/select/img/cross.png" alt="remove" class="removeButton"></td>
</tr>
<tr class="newForm">
<td>
<input type="text" name="data[Alert][2][keywords]" value="" id="Alert2Keywords">
</td>
<td><img src="/select/img/cross.png" alt="remove" class="removeButton"></td>
</tr>
124Name_Not_Found:2010/12/14(火) 21:02:53 ID:+UPQxh6r
>>118
わかりづらいからドラゴンボールで例えて
125Name_Not_Found:2010/12/14(火) 21:05:09 ID:+UPQxh6r
>>123
addがどこにあるのか知らんが、
var newNode = あたらしく追加するnewForm;
add(); // newNodeを追加
remove(); // newNodeを削除

ってやる
126Name_Not_Found:2010/12/14(火) 21:19:42 ID:???
>>125

レスありがとうございます。

addはこんな形です。 しかし、addで追加したフォームだけremoveが効かず、
最初に生成されるフォームだけremoveできるのです。
指摘されたnewNodeといった形でやってるのではないかと思うのですが、
これではだめなのでしょうか?

$("#addMore").click(function() {

var newForm = $(".newForm").last();
newForm.after(<tr class="newForm">
<td>
<input type="text" name="data[Alert][1][keywords]" value="" id="Alert2Keywords">
</td>
<td><img src="/select/img/cross.png" alt="remove" class="removeButton"></td>
</tr> );
});
127Name_Not_Found:2010/12/14(火) 21:29:40 ID:???
>>123
未検証だが、こんな感じ。

$('table').click(function (event) {
 var target = $(event.target);
 if (target.is('img.removeButton')) {
  target.parent().parent().remove();
 }
});
128Name_Not_Found:2010/12/14(火) 22:41:56 ID:???
118ですが自己解決しました
exelで30分も掛からない作業に5時間掛けた・・・
129Name_Not_Found:2010/12/14(火) 22:57:57 ID:0b6yTFwV
>>102
ありがとうございます。
なら、c.charCodeAt(0) でいいじゃんってどうしても思ってしまうんですが
なにか意味があるのか・・
130Name_Not_Found:2010/12/14(火) 23:04:52 ID:???
exelじゃなくExcelね。
131126:2010/12/15(水) 04:11:43 ID:???
>>127さん

上手く動きました!! 感動!!

どうやってるのかは理解できてないので、今からなんでこうやると
上手くいくのが勉強します!

本当にありがとうございます。
132Name_Not_Found:2010/12/15(水) 04:17:49 ID:???
かーめーはーめーはーーーー
133Name_Not_Found:2010/12/15(水) 05:07:21 ID:???
Javascriptでツイッターへの投稿用のものを作ろうとしているのですが
現在OAuth認証でアクセストークンを取得するところまでできています。
次に

var params = "oauth_consumer_key=コンシューマキー&oauth_nonce=ランダム文字列&oauth_signature_method=HMAC-SHA1&oauth_timestamp=タイムスタンプ&oauth_token=アクセストークン&oauth_version=1.0&status=test&oauth_signature=シグネチャ"

というデータを作って

function StatusUpdate(){
var Url = "http://api.twitter.com/1/statuses/update.xml";
var Data = params
SendXmlHttpRequest(Url, Data);
}

function SendXmlHttpRequest(Url,Data) {
XmlHttpRequest.abort();
XmlHttpRequest.onreadystatechange = ResponseCheck;
XmlHttpRequest.open('POST', Url, true);
XmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
XmlHttpRequest.send(Data);

function ResponseCheck(){
if (XmlHttpRequest.readyState == 4 && XmlHttpRequest.status == 200) {
document.getElementById("txtresult").value = XmlHttpRequest.responseText;
}

という感じで「test」とツイッターにつぶやきたいのですがうまく投稿できません
初心者なりに調べてみたのですがいまいちわからなくて悩んでいます。
POSTでのXmlHttpRequest送信で間違っているところなどありましたら教えていただけないでしょうか?
134Name_Not_Found:2010/12/15(水) 05:10:20 ID:???
>>129
テクニック = たまたま上手く動くミス
135Name_Not_Found:2010/12/15(水) 11:07:16 ID:yrRyBbJa
こんにちは。
またお世話になります。
昨日、こちらのサイトの、
http://f32.aaa.livedoor.jp/~azusa/?t=ajax&p=jquery_plugin_pagenation
一番目にあるjQuery pager plug-inについて質問させていただいた者です。

昨日の段階で6ページ作り、問題なく動いていたのですが、
ページ数を20に増やしたところ、ページ送り部分が1〜20まですべて表示され、
レイアウトが崩れてしまいます・・・
これを10くらいまでの表示に留めておき、残りは「…」とかにする方法ないでしょうか?
おそらく、
for(var i = 0; i < size; i++) {
var j = i+1;
str += '<a href="#" rel="'+j+'">';
str += (settings.linkText == null) ? j : settings.linkText[j-1];
str += '</a>';

このあたりに条件式を入れてやればできそうなのですが、
わかりませんでした・・
よろしくおねがいします。
136Name_Not_Found:2010/12/15(水) 11:27:11 ID:Q34Xx5d3
はじめまして。
ググっても分からなかったのでこちらで質問させて頂きます。場違いでしたらすみません…
ツイッターのウィジェットに関しての質問です。
ホームページに複数のアカウントのプレビュー画面を表示させたいのですが、
アカウント別に表示させる事が出来ません。

使用しているのがこちらのページ中部のコードです。
http://blog.japonsuki.jp/?eid=844237
背景や表示させたい文字をカスタムする為に、このデータを使っています。

また、下記のページで紹介しているやり方で複数のアカウントのつぶやきが
表示されるのですが、

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1447277044

このやり方だと一つの入れ子の中に複数のウィジェットが表示されてしまいます。

あくまでも1つの入れ子に対して1ウィジェット、というやり方で
1つのページ内に複数のウィジェットを表示させるやり方を探しています。

javascriptが絡んでいるので、こちらで質問させて頂きました。
どなたか分かる方がいましたら、よろしくお願いします。

137Name_Not_Found:2010/12/15(水) 14:50:31 ID:???
>>135

for(var i = 0; i < size; i++) {
var j = i+1;
if (j < 11) {
str += '<a href="#" rel="'+j+'">';
str += (settings.linkText == null) ? j : settings.linkText[j-1];
} else if (j === 11) {
str += '<a href="#" rel="'+j+'" style="text-decoration: none; color: #000; font-weight: bold;">';
str += (settings.linkText == null) ? '...' : settings.linkText[j-1];
} else {
str += '<a href="#" rel="'+j+'" style="display: none;">';
}
str += '</a>';
}
-------------------------------------------------
// 改行挿入
for(var i = 0; i < size; i++) {
var j = i+1;
str += '<a href="#" rel="'+j+'">';
str += (settings.linkText == null) ? j : settings.linkText[j-1];
str += '</a>';
if (j > 10 && j % 10 === 1) str += '<br>';
}
138Name_Not_Found:2010/12/15(水) 15:41:26 ID:yrRyBbJa
>>137
ありがとうございます。
上のほうの式でできそうです。
しかし、[前へ] 1 2 3 … [次へ]
という表示なのですが、(3まで表示とした場合)、
これを … のあとに、最終ページを表示することはできますでしょうか?

記述いただいた式のあとに、
str += '… <a href="#" rel="'+j+'">';
str += (settings.linkText == null) ? j : settings.linkText[j-1];
str += '</a>';
を、書けばできますが、これだと、その最終ページをアクティブにしても、
class"=highlight"が付きません。なので、回答者さんの記述された式の中に組み込んで、
うまくやる方法はないでしょうか?
139Name_Not_Found:2010/12/15(水) 15:51:29 ID:yrRyBbJa
>>137
何度もすいません・・・
ちょっと説明の仕方間違えました。。
全部で20ページあったとして、
[前へ] 1 2 3 … 20 [次へ]
という感じにする方法が知りたいです・・・
それで、3をクリックしたときは、
[前へ] 1 2 3 4 … 20 [次へ]
で、20をクリックすると、
[前へ] 1 … 18 19 20 [次へ]
みたいな感じで常に前後のページは表示されるような仕組みにするには、
ちょっと大がかりな書き換えが必要なんですかね?
もし無理であれば諦めますが、可能なのであればご教示願います。
イメージとしてはこういった感じです↓
http://kyoto-design.jp/photo
140Name_Not_Found:2010/12/15(水) 15:59:34 ID:???
いまいちよく分かんないんだけど、こんな感じか?

for(var i = 0; i < size; i++) {
var j = i+1;
if (j < 11) {
str += '<a href="#" rel="'+j+'">';
str += (settings.linkText == null) ? j : settings.linkText[j-1];
} else if (j === 11) {
str += '<a href="#" rel="'+j+'" style="text-decoration: none; color: #000; font-weight: bold;">';
str += (settings.linkText == null) ? '...' : settings.linkText[j-1];
} else if (i === size - 1) {
str += '<a href="#" rel="'+j+'">';
str += (settings.linkText == null) ? j : settings.linkText[j-1];
} else {
str += '<a href="#" rel="'+j+'" style="display: none;">';
}
str += '</a>';
}



暇だからいいけど、少しは自分でがんばってみれ
141Name_Not_Found:2010/12/15(水) 16:02:37 ID:???
>>139
ずっこけたwずいぶん面倒そうな注文だねw

期待しないほうがいい
142Name_Not_Found:2010/12/15(水) 16:11:54 ID:G0mhSjVW
>>134
分りました。あえてそうしてるのか、間違ってそうしてるのか判断ができなくて。
143Name_Not_Found:2010/12/15(水) 17:31:58 ID:???
>>139
とりあえずこれまでのは忘れる

function hoge(n, f) {
var a1 = $(me).find(navid).find('a');
var a2 = $('#nav1').find('a');
var len = a1.length - 1;
var c = 3; // 表示件数
var num = len - n;
for (var i = 1; i < len; i++) {
if ((i >= n + 1 && i <= n + c) || (c >= num && i >= len - c)) {
$(a1[i]).css('display', 'inline');
$(a2[i]).css('display', 'inline');
} else {
$(a1[i]).css('display', 'none');
$(a2[i]).css('display', 'none');
}
}
}

function highlight () {
$(me).find(navid).find('a').removeClass(settings.highlightClass);
$('#nav1').find('a').removeClass(settings.highlightClass);
var show = $(me).find(navid).find('a').get(i+1);
var show1 = $('#nav1').find('a').get(i+1);
$(show).addClass(settings.highlightClass);
$(show1).addClass(settings.highlightClass);
hoge(i); // ここで呼出し

イメージとは少し違うけどね
もう今日はしんどいけど、バグがあったら一応報告は頼むね
144Name_Not_Found:2010/12/15(水) 17:34:03 ID:???
function hoge(n, f)

fは消し忘れ。いらん
145Name_Not_Found:2010/12/15(水) 19:58:01 ID:???
function hoge(n) {
var a1 = $(me).find(navid).find('a');
var a2 = $('#nav1').find('a');
var len = a1.length - 1;
var c = 3; // 表示件数
var num = Math.floor(n / c);
var s = num < 1 ? 1 : num * c + 1;
var m = s + c - 1;
for (var i = 1; i < len; i++) {
if (i >= s && i <= m) {
$(a1[i]).css('display', 'inline');
$(a2[i]).css('display', 'inline');
} else {
$(a1[i]).css('display', 'none');
$(a2[i]).css('display', 'none');
}
}
}

こっちの方がユーザに優しいかもしんない
シンプルな動きだし
146Name_Not_Found:2010/12/15(水) 20:33:34 ID:f7VdyVgb
postメソッドにかんする質問です。

フォームにXを入力してsubmitボタンを押すとF(X)が表示されるページがあったとします。
使われているのがPOSTなので、jQueryのajaxを使ってquery Qを送りつけ、結果を解析してF(Q)
を得るところまでは自力でいきました。

さて、問題はqueryのリスト[Q1,Q2,...]があったとき、各queryについてajaxを起動するのは
コストがかかりそうな気がします。(実装によるのかな?)
ので、一気にリストを送りつけて、非同期で結果を表示していく感じにしたいのですが、
参考になりそうなページとか、概念とか教えてください。
サーバー側のF()はいじれないものとします。
147Name_Not_Found:2010/12/15(水) 22:06:05 ID:D8ahOVyt
F()は変えられない=一度に引き受けられる引数は一つ
なんだから、何度もクエリを送りつける以外ないんじゃなかろか?
148Name_Not_Found:2010/12/15(水) 22:40:06 ID:/MljnSa6
画像のプリローダーってありますよね?
が、ありすぎてどれが良いのかわかりません。皆さんどれを使ってますか?
jqueryを使うものを教えてくれると嬉しいです。よろしくお願いします。
149Name_Not_Found:2010/12/15(水) 22:42:19 ID:???
>>146
>各queryについてajaxを起動するのは
>コストがかかりそうな気がします。(実装によるのかな?)

なんでそう思うの?
あと同時にXHR投げるとき気にする必要があるのは
ブラウザが張れる同時接続数の方な。
150Name_Not_Found:2010/12/16(木) 00:57:33 ID:???
>>147
やっぱそうですか・・・。
$.ajaxのdataフィールドにオブジェクト置けるんだから、
POSTの接続を開きっぱなしにして一気に送りつけるとか、できるのかなぁと思ってたのですが。
>>149
接続の確立って時間かかりそう、と思ったけど仕方なさそうですね。
同時接続数とか考えてませんでした。たしかに面倒くさそう・・・。

ありがとうございます。
はじめたばかりで非同期のパラダイムについていけてません。
経験積むしかないですね。
151Name_Not_Found:2010/12/16(木) 08:59:48 ID:hHEpXsI6
>>140
>>143
>>145
返事おそくなりましてすいません。
これ(>>145)は、今までと同じ位置に挿入でよかったでしょうか?
やってみたのですが、前へと次へしか表示されませんでしたorz
やはりちょっとややこしいみたいですね・・・

あとは教えていただいたものを自分でいじってみます。
色々とお答え頂きありがとうございましたm(_ _)m
152Name_Not_Found:2010/12/16(木) 13:05:30 ID:???
var i;

for(i = 0;i < 1000;i++)
document.write(i + "<br>");

上記で1000まで文字を表示させたいのですが、
1の場合、0001と言う風に数字の前に0をつけたいんですが、どういう関数を使えばできるでしょうか?

153Name_Not_Found:2010/12/16(木) 13:16:50 ID:???
(i + 10000 + "").slice(1)
154Name_Not_Found:2010/12/16(木) 13:17:01 ID:???
('000'+i).slice(-4)
155Name_Not_Found:2010/12/16(木) 13:42:27 ID:???
>>151
http://library.nukimi.com/sample/

とりあえずこれまで書いたの上げといた。
いい加減に書いたし、参考とか手本にされると困るけど
手直しすれば使えるかもしれない。ま、がんばりなされ。

他人さまのソース借りてるからすぐに削除しますです。
156Name_Not_Found:2010/12/16(木) 15:22:02 ID:hHEpXsI6
>>155
おお!ありがとうございます!!!
助かります!
ダウンロードさせていただきました。
一つずつ試してみます。たぶんこれでいけそうです!
ありがとうございましたm(_ _)m
157Name_Not_Found:2010/12/16(木) 18:19:10 ID:5TeJVssl
値の種類を判断するにはまずtypeofで判断して
objectだった場合はさらにinstanceofで判断するものなんですか?
普通はどうするものなんですか?

「new String("〜")」も「"〜"」も同じ種類として扱いたい場合は
if ( typeof hoge == "string" || ( typeof hoge == "object" && hoge instanceof String ) )
みたいにするものなんですか?
158Name_Not_Found:2010/12/16(木) 18:58:00 ID:???
new String("a") == "a" // true
new String("a") === "a" // false
159Name_Not_Found:2010/12/16(木) 19:20:21 ID:???
>>158は「同じ種類として扱いたい」場合についてのレスですか?>>158は何を示唆しているのですか?
言葉も添えていただけるとありがたいです
Stringオブジェクトの値とプリミティブの文字列の値を比較したいわけではありません
160Name_Not_Found:2010/12/16(木) 19:26:34 ID:???
Object.prototype.toString.call(hoge) == "[object String]"
161Name_Not_Found:2010/12/16(木) 19:31:04 ID:???
>>160
そうするのが普通のやりかたなんですね
どうもありがとうございます
162Name_Not_Found:2010/12/16(木) 20:15:05 ID:QA4Lgp7F
<div id="line-1"></div>
<div id="line-9"></div>
こんな感じで左に行数を表示させるまではできたのですが、
今度はテキストボックス + ボタンで指定された行数にジャンプさせたいのですが

試しに
<div id="line-500" name="500"></div>として<a href="#500">500</a>でジャンプさせようとしましたが
ジャンプさせることができませんでした。(divにname属性は無いみたいです・・・)
どのようなものを使えばidまたはnameを参照して指定行ジャンプさせることができますか?
163Name_Not_Found:2010/12/16(木) 20:16:13 ID:???
<div><a></a></div>
164Name_Not_Found:2010/12/16(木) 20:22:25 ID:???
href="#line-500"でいけるんじゃない?
jsでやるなら、IDで要素特定→ページの左上からの位置を計算→スクロールさせる。
prototype.jsならその機能がデフォであるよ。
165Name_Not_Found:2010/12/16(木) 20:46:05 ID:BkiAvchp
JSの話じゃないけど、
ロケーションハッシュ使うときのname属性のことはもう忘れてやれ
166Name_Not_Found:2010/12/17(金) 00:44:30 ID:???
<input name="email" type="text" value="メールアドレス入力欄">
で、テキストフィールドをクリックすると、初期状態の「メールアドレス入力欄」という文字が消える方法が知りたいのです。
また、メールアドレス入力欄という文字の色を薄くするにはどうしたらよいでしょうか?

宜しくお願い致します。
167Name_Not_Found:2010/12/17(金) 01:16:42 ID:???
check = function(){
  if (this.defaultValue == this.value) {
    this.style.color = "gray";
  }else {
    this.style.color = "black";
  }
};
defaultValueとvalueを比べてstyleをいじる
168Name_Not_Found:2010/12/17(金) 02:06:29 ID:???
真面目にやろうとすると地味に面倒くさい。
サーバ側に「メールアドレス入力欄」みたいな文字列が
送信されてしまうことがあったりとか。
素直に既製品使うか、ヒントを描いた背景画像を貼り付ける方が楽かもしれん。
169Name_Not_Found:2010/12/17(金) 02:31:50 ID:???
<input name="email" type="text" value="メールアドレス入力欄" onclick="if(this.value=='メールアドレス入力欄')this.value=''">
170Name_Not_Found:2010/12/17(金) 03:02:17 ID:oSfL2Ota
ページ全体では無く、一つのidを振ったdiv枠だけをクリックでリドローしたいのですが
IFRAMEはこれから駄目になるらしいしjavascriptでやる方法は無いですか?
171Name_Not_Found:2010/12/17(金) 03:04:11 ID:???
非同期で通信してinnerHTMLを書き換えればいいじゃん
172Name_Not_Found:2010/12/17(金) 05:59:04 ID:???
>>166
<input name="email" type="text" placeholder="メールアドレス入力欄" value="">
173Name_Not_Found:2010/12/17(金) 06:37:31 ID:Knq57y4o
>>172
すれ違いだからずっと書くの我慢してたのに…
はやく気兼ねなく使えるようになるといいな、と
174Name_Not_Found:2010/12/17(金) 07:41:50 ID:???
function kakunin(document.form.mail.value == Null)
{alert(メール蘭が空です!)}

<form name="form">
メール:<input type="text" name="mail" />
<input type="submit" name="sousin" value="送る" onmousedown="kakunin">
</form>

とメール蘭が空だった場合アラートが表示されて送信できないという風にしたいのですがどうすればいいのでしょう?
175Name_Not_Found:2010/12/17(金) 07:53:43 ID:???
メール欄のvalueを見て
空ならアラートを表示
空じゃなければ送信
という風に分岐させればいい
176Name_Not_Found:2010/12/17(金) 08:09:45 ID:Knq57y4o
var f = フォーム要素;
var t = メール欄のinput要素;
f.addEventListener("submit",function(evt){
    if(t.value == ""){
        alert("boo");
        evt.preventDefault();
    }
},false);
177Name_Not_Found:2010/12/17(金) 09:24:22 ID:+4z7HO8r
>>168
Submit前にローカルで入力チェックくらいするだろ
サーバに何でもかんでも送って画面遷移増やすより良くね?
178Name_Not_Found:2010/12/17(金) 10:01:18 ID:MlDgw+Cb
この方がいいのか?な?

var f = フォーム要素;
f.addEventListener("submit",function(evt){
    var t = evt.target.qurySelector("input[name=mail]");
    if(!t || t.value == ""){
        alert("boo");
        evt.preventDefault();
    }
},false);
179zardrell:2010/12/17(金) 12:47:40 ID:???
>>178
それIE非対応ですね
<script type="text/javascript">
function kakunin(){
if(!document.form.mail.value){
alert("メール蘭が空です!");
return false;
}
}
</script>
<form name="form" id="form" action="http://www.google.co.jp/" onsubmit="return kakunin();">
メール:<input type="text" name="mail" />
<input type="submit" name="sousin" value="送る">
</form>
180Name_Not_Found:2010/12/17(金) 12:56:38 ID:???
placeholderだのIEで動作しないのだの普段からそんな俺俺コード書いてるの?
せめてただし書きのひとつでも添えればいいのに
181Name_Not_Found:2010/12/17(金) 13:17:53 ID:???
はぁ
182Name_Not_Found:2010/12/17(金) 13:26:08 ID:???
ゆとり乙
183Name_Not_Found:2010/12/17(金) 13:31:22 ID:???
ゆとり(・ω・`)乙  これは乙じゃなくてポニーテールなんだからね!
184Name_Not_Found:2010/12/17(金) 13:57:33 ID:mkxOMW2F
>>180
ほら、各種ブラウザ対応とか書きだすと長くなるじゃん
でも、フレームワーク使う前提とかで書くと根本的に理解出来ないじゃん
かと言って、レガシーな書き方を今更教わっても嬉しくないじゃん

そんな感じで
185Name_Not_Found:2010/12/17(金) 13:59:04 ID:???
まあ趣味なら別にいいだろ
186Name_Not_Found:2010/12/17(金) 14:16:52 ID:???
ゆとり乙
187Name_Not_Found:2010/12/17(金) 17:04:45 ID:???
蘭ねぇちゃ〜ん!
188Name_Not_Found:2010/12/17(金) 19:03:41 ID:???
テーブルのソートと検索をやりたいと思っています。
http://coliss.com/articles/build-websites/operation/javascript/792.html
を比べてみたのですが、どれも1行ずつの処理のようです。

例えば、
|名前|年齢|メールアドレス|
|自己紹介文|
のように、2行で1単位のテーブルを処理するにはどのように実装すれば良いでしょうか?

189Name_Not_Found:2010/12/17(金) 19:30:34 ID:LLU+8/OE
>>188
その2行ずつのtrをtbodyでくくって、tbodyごとソート処理したらいい
190Name_Not_Found:2010/12/18(土) 00:05:19 ID:???
>>166
>168 も指摘しているが、JS無効も考慮すると結構面倒。

・window.onload 時に input.value = 'メールアドレス入力欄'; を実行
・初期値判定は input.value === 'メールアドレス入力欄'
・form.onsubmit 時に input.value === 'メールアドレス入力欄' なら input.value = ''; にする
・input.onchange 時に input.style.color = input.value === 'メールアドレス入力欄' ? 'glay' : 'black';

対応数が多いなら、初期値を格納したオブジェクトor配列を別途用意した方が良い。
191190:2010/12/18(土) 00:12:31 ID:???
input.onchange は input.onfocus の間違いだった。

placeholder は getAttribute を使えば未対応ブラウザにも対応できないわけじゃない。
>166 が HTML5 で書かれたものかどうかはわからないが。
192Name_Not_Found:2010/12/18(土) 00:20:04 ID:???
>>189
あれ?tbodyって、幾つあってもいいんだっけ?
193Name_Not_Found:2010/12/18(土) 00:30:44 ID:???
>>192
<!ELEMENT TABLE - -
   (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/struct/tables.html#h-11.2.1
194190:2010/12/18(土) 00:41:08 ID:???
何度もごめん。input.onchange で良かったが、input.onfocus 時に input.style.color = 'black'; にする必要があった。
http://lab.dotjay.co.uk/experiments/forms/input-placeholder-text/
195Name_Not_Found:2010/12/18(土) 01:25:00 ID:???
<div id="foo">........</div>
こんな感じになっているときに、jQueryで新しいdiv要素<div id="bar">*****</div>をfooのあとに付けて
<div id="foo">........</div>
<div id="bar">*****</div>
のようにしたいです。
どんな感じで出来るのでしょうか?
196Name_Not_Found:2010/12/18(土) 01:26:55 ID:???
197Name_Not_Found:2010/12/18(土) 01:29:02 ID:???
jQuery限定の質問はjQueryのスレで
198Name_Not_Found:2010/12/18(土) 01:42:56 ID:???
同じ JavaScript なんだからここでいいんじゃないか
jQuery質問スレはないし
199Name_Not_Found:2010/12/18(土) 01:44:33 ID:???
分けなきゃならんほど人もおらんしな
200Name_Not_Found:2010/12/18(土) 02:42:56 ID:1Ia/M7D5
div id=abc で
<img src="img/botann.png" onclick="var e = document.getElementById('abc');e.innerHTML = e.innerHTML;"/>

なボタンでabc内を更新をしてもIE6,7,8では更新できるのですがffやsafari、オペラで更新できません
どうしたらIE以外のブラウザでも正常に動きますか?
201Name_Not_Found:2010/12/18(土) 03:01:40 ID:???
今後、jQuery UIを使っていこうと思うのですが

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>



<script src="http://www.google.com/jsapi"></script>
<script>
google.load("jquery", "1");
...
</script>

の違いってなんでしょうか。
どっちがいいのかいつも迷います…
202Name_Not_Found:2010/12/18(土) 03:12:19 ID:???
そういや、もう冬休みの季節なんだな。
203Name_Not_Found:2010/12/18(土) 03:20:50 ID:???
そうだな。未来ある若者には、この休みを使って存分にレベルアップしてほしい
204Name_Not_Found:2010/12/18(土) 03:24:15 ID:???
また丸投げしてさんざんスレでいじめられるやつが出てきそうだな
205Name_Not_Found:2010/12/18(土) 08:46:35 ID:???
>>198

【誰か】jQueryのここがわからない【助けて】
http://hibari.2ch.net/test/read.cgi/tech/1229881548/
206Name_Not_Found:2010/12/18(土) 10:00:24 ID:???
スレあるなら次スレからテンプレに入れたら
207Name_Not_Found:2010/12/18(土) 15:53:18 ID:???
>>201
前者は、そのURLに常に最新のjQuery 1.xが置いてあることを
Googleが約束しているから、それを自分で読みに行っているだけ。
後者が何やってんだか分からない場合、あるいは一緒に利用できる機能
(google.loader.ClientLocationとか)を知らない/使わない場合は
無駄にオーバーヘッドが生ずるだけだから前者の方を採用しておけば良い。

もうちょっと詳しく知りたいのであれば、
http://www.google.com/jsapiはただのJSのコードだから
直接ブラウザで開いて中を見てみればいい。
後ろ1/3ぐらいにJSのライブラリの名前やバージョンのリストがずらずら書いてある。
google.load("jquery", "1"); とやると、そのコードがそれにマッチするURLを作って
(この場合はhttp://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js
そのURLを含むscriptタグを生成するという仕組み。
208Name_Not_Found:2010/12/18(土) 17:09:16 ID:???
>>205
そこはjQueryの総合質問スレッドじゃない
たまに俺も回答するが、ほとんど人がいないし
209Name_Not_Found:2010/12/18(土) 18:58:18 ID:???
変数に入っている数値の後ろから2文字だけ抜き出して他の変数に代入したいのですが
どの関数を使えばできるでしょうか?

var a,b

a = 1945;
b = 45
210Name_Not_Found:2010/12/18(土) 19:13:19 ID:???
>>209
.toString() .slice()
211Name_Not_Found:2010/12/18(土) 19:15:49 ID:???
x % 100
212Name_Not_Found:2010/12/18(土) 21:46:51 ID:???
ひと桁の時にゼロを補うのかどうか。
213Name_Not_Found:2010/12/18(土) 22:32:51 ID:???
"0" を補うとデータ型が変わってしまうけどね…。

function foo (a) {
a = Math.abs(a) % 100;;
return a < 10 ? '0' + a : a;
}
foo(1945);
foo(9);
foo(-109);
214Name_Not_Found:2010/12/18(土) 22:40:52 ID:???
文字列になってしまうことよりも8進数になる可能性があることのほうが問題だろ
javascript最大の糞仕様
215Name_Not_Found:2010/12/18(土) 22:50:44 ID:???
>>214
ES5 の strict mode では、その動作は解消されてるよ。
216Name_Not_Found:2010/12/18(土) 22:52:54 ID:???
8進数の心配はいらないでしょ。
「2文字だけ抜き出して」であって
「2桁だけ抜き出して」ではないんだから。
217Name_Not_Found:2010/12/18(土) 22:59:48 ID:???
2文字なら>>213
2桁なら>>211で問題ないでしょ。
218Name_Not_Found:2010/12/18(土) 23:44:56 ID:???
String型に変換するのだから8進数の問題はないだろう。
そもそも何も考えないでも、106 % 100 === 6
8進数として扱われる処理を書く方が難しいと思う。eval() を使うぐらい?

>>211 は負の数を考慮していないのがやや気になる。
219Name_Not_Found:2010/12/19(日) 00:18:06 ID:???
parseInt
220Name_Not_Found:2010/12/19(日) 00:20:08 ID:???
>>219
意味がわからない
221Name_Not_Found:2010/12/19(日) 01:06:40 ID:???
parseInt(n,10) なら8進数の問題はないと言いたいのかな。
222Name_Not_Found:2010/12/19(日) 01:26:44 ID:???
>>221
それはわかるんだけど、parseInt を使って >209 を実装する形が見えない。
実はゼロが必要なくて数値型が欲しくて文字列処理した後に parseInt という落ち?
223Name_Not_Found:2010/12/19(日) 02:43:49 ID:???
OpenSocial扱いたいのですが
Javascriptってどれくらいのレベルが必要ですか?
224Name_Not_Found:2010/12/19(日) 03:04:57 ID:???
達人級
225Name_Not_Found:2010/12/19(日) 03:05:59 ID:???
最後の中ボスを倒せるくらいのレベル
226Name_Not_Found:2010/12/19(日) 03:19:14 ID:???
あきらめました
227188:2010/12/19(日) 04:17:16 ID:???
tbodyって複数書けるんですね、知りませんでした!

ただ、このスクリプトの場合、どこを変更すればいいんでしょうか(汗)
http://sprymedia.co.uk/dataTables/example_zero_config.html
228Name_Not_Found:2010/12/19(日) 05:19:25 ID:8JM4lqU/
>>227
元々あるやつでどうにかしようとしたら結構修正必要だと思うよ。べた書きだろうし。
229Name_Not_Found:2010/12/19(日) 05:38:07 ID:???
全部。
230Name_Not_Found:2010/12/19(日) 07:55:27 ID:???
最後の本ボスを倒せるレベルだとhtml5も余裕ですか?
231Name_Not_Found:2010/12/19(日) 12:10:42 ID:???
巡航ミサイルの誘導プログラムが書けます。
232Name_Not_Found:2010/12/19(日) 13:30:55 ID:???
それの難しいところはプログラミングの知識ではありません
233Name_Not_Found:2010/12/19(日) 14:18:51 ID:???
>>232
プログラミングとコーディングの区別が付いてない様です
234Name_Not_Found:2010/12/19(日) 16:55:19 ID:???
tab.setup = {
tabs: document.getElementById('tab').getElementsByTagName('li'),

pages: [
document.getElementById('page1'),
document.getElementById('page2'),
document.getElementById('page3'),
document.getElementById('page4'),
document.getElementById('page5')
]
} //オブジェクトをセット
tab.init(); //起動!

上記は公開してあったのを持ってきたのですが
一番上のtab.setup〜からtab.initまでがわかりません
一瞬関数かなと思ったんですけど、よくわかりません
名前もわからないので調べようがありません
上記のような物をなんていうのでしょうか?
235Name_Not_Found:2010/12/19(日) 16:57:01 ID:???
オブジェクト
236Name_Not_Found:2010/12/19(日) 18:27:21 ID:???
>>234
オブジェクトリテラルまたはオブジェクト初期化子
237Name_Not_Found:2010/12/19(日) 18:57:55 ID:???
initって関数よく見るけどなんでinitなんだろう
238Name_Not_Found:2010/12/19(日) 19:01:47 ID:???
239Name_Not_Found:2010/12/19(日) 19:05:17 ID:???
initializeの略だってことは百も承知だろ馬鹿w
240Name_Not_Found:2010/12/19(日) 19:07:22 ID:???
初めに行う処理をまとめているから、initialize
241Name_Not_Found:2010/12/19(日) 19:08:57 ID:???
はじめに行う処理をまとめているってconstructerなんじゃ
242Name_Not_Found:2010/12/19(日) 19:11:27 ID:???
コンストラクタと関数実行は別だろ
コンストラクタに小文字で始まる名前なんか付けないし、"init" なんて命名しないぞ
あと、constructer じゃなくて constructor じゃないのか?
243Name_Not_Found:2010/12/19(日) 19:20:46 ID:???
「馬鹿」という言葉は自分より馬鹿な相手に使うべきだ
244Name_Not_Found:2010/12/19(日) 19:23:59 ID:???
>コンストラクタと関数実行は別だろ
>コンストラクタに小文字で始まる名前なんか付けない

ごめんさっぱりわからない
245Name_Not_Found:2010/12/19(日) 19:27:58 ID:???
最初に実行する関数ならstartでもbeginでもよさそうだけどね
呼ばれるたびに初期化させる目的の関数に限ってinitって名前を付けてるわけでもなさそうだし
246Name_Not_Found:2010/12/19(日) 19:28:10 ID:???
今んとこ歌はミズノ>サカナ>>>>>>>ワコだな
247Name_Not_Found:2010/12/19(日) 19:31:41 ID:???
僕は
それを
左へ受け流スぅうゥうウー
248Name_Not_Found:2010/12/19(日) 19:33:05 ID:???
>>246 誤爆すまん
249Name_Not_Found:2010/12/19(日) 19:35:37 ID:???
初期化が必要な場合は「最初に呼ばれる関数」でやるのが当たり前で、
それにinitって付けるのはだいぶ昔からの慣習だからなあ
少なくとも90年代初頭に「構造化プログラミング」って言葉が流行りだした頃には
init()って関数名をあちこちで見てたような記憶がある
250Name_Not_Found:2010/12/19(日) 19:40:14 ID:???
251Name_Not_Found:2010/12/19(日) 19:40:57 ID:???
Windowsプログラミングでも、たとえばダイアログを生成するときには
WM_INITDIALOGってメッセージを使うことになっていたりする
こういうのに触れているうち「初期化=init」ってのが頭に刷り込まれてきて
もはや疑問を覚えることすらなくなってくるし(だから>>245の疑問は結構新鮮だった)
自分が何か書くときもそういうコードを書く
それを見た他の人も自然とinit()を使うようになる、といったところが事実だろう
つまり「単なる慣習」以外の意味は特にない
252Name_Not_Found:2010/12/19(日) 19:43:18 ID:???
初期化目的じゃなくてもよくわからずorとりあえずinitって名前付けてる場合が見受けられるようになって
元の意味があいまいになってるってことすねなるほど
生き物である言葉ではよくあることすね
253Name_Not_Found:2010/12/19(日) 19:48:17 ID:???
>>245のレスでようやく理解した
自分がいつもresetって書いてる関数のことか
254Name_Not_Found:2010/12/19(日) 19:57:03 ID:???
(・・;)エ?
255Name_Not_Found:2010/12/19(日) 19:58:56 ID:???
別に何かを初期化するわけでもなくドミノ倒しの最初のドミノ的な関数にinitって付けてたよ・・・恥ずかしい・・・
256Name_Not_Found:2010/12/19(日) 20:06:27 ID:???
元々の意味は初期化処理をまとめている関数だから init なのか
257Name_Not_Found:2010/12/19(日) 20:09:06 ID:???
そらそーだろ・・・
258Name_Not_Found:2010/12/19(日) 20:11:12 ID:???
初期化処理は始めに行うのが当然と思っていたから勉強になった
259Name_Not_Found:2010/12/19(日) 20:24:35 ID:???
初期化って何度も行うわけじゃないでしょ
普通は最初に1回=コンストラクタ
プロパティとか何かを任意のタイミングでデフォルト値に戻したりとかならそれこそリセットだ
260Name_Not_Found:2010/12/19(日) 20:47:00 ID:???
「コンストラクタ = 初期化」と理解している人がいるけどどういう意味で使ってる?

var Initialize = function () { ; }
var hoge = new Initialize();

コンストラクタというからにはこんな使い方でないとしっくり来ない。
"Initialize" という名前のコンストラクタ関数を作る状況が思いつかない。
261Name_Not_Found:2010/12/19(日) 20:52:42 ID:???
「設定を初期化してください」みたいな日本語は原文がinitializeの場合やresetの場合があったりするんですね
「initialize=初期化」って頭にあってその「初期化」って日本語が上記のような使われ方されているので「初期化」のイメージがおかしくなっていました
initializeやinitializationが予約語になっていて役割が決まっている言語もあるみたいですね
rubyはnewで生成してinitializeで初期化みたい
262Name_Not_Found:2010/12/19(日) 21:07:43 ID:???
オブジェクトの初期化とオブジェクトデータの初期化の違いでしょ
オブジェクトデータの初期化を行うなら
コンストラクタから初期化関数を呼ぶほうが良い
263Name_Not_Found:2010/12/19(日) 21:14:35 ID:???
Javascriptで記述されたソースをjavaに変換できるツールを探してるんだが
誰かしらない?
264Name_Not_Found:2010/12/19(日) 21:17:19 ID:???
>>262
こういうこと?

function Hoge () { ; }
Hoge.prototype.init = function () { ; }

オブジェクトデータという用語は始めて見るが、どういう意味だろ
265Name_Not_Found:2010/12/19(日) 21:20:35 ID:???
266Name_Not_Found:2010/12/19(日) 21:21:37 ID:???
ES で初期化といえば「変数の初期化」を指す
だから、変数の初期化をまとめるから init という方がしっくり来るな
267Name_Not_Found:2010/12/19(日) 21:22:28 ID:???
>コンストラクタから初期化関数を呼ぶほうが良い
コンストラクタ自体が初期化を行うロジックなわけで
別に初期化関数を定義するっていう考え方がどうも理解できない
268Name_Not_Found:2010/12/19(日) 21:26:14 ID:???
>>262 の「オブジェクトデータ」はプロパティとかメソッドを指してる?
269Name_Not_Found:2010/12/19(日) 21:33:29 ID:???
>>267
コンストラクタが長くなってきたら別関数にしたりしない?
JSでコンストラクタを書くときだって、prototypeに関数を追加するのと
hiddenフィールドから値を拾ってきてプロパティにセットしたりするのとは
別々になってた方が見やすい(デバッグする上でも)
270Name_Not_Found:2010/12/19(日) 21:35:20 ID:???
>>269
コンストラクタに書くコードをインスタンスメソッドに移すだけで何も変わらないような気がする
271Name_Not_Found:2010/12/19(日) 21:38:42 ID:???
>>270
そりゃ処理的には同じことをやるんだから変わらないさ。

オブジェクトの初期化:関連するオブジェクトの生成とか
オブジェクトデータの初期化:自オブジェクト内の変数とかの初期値セットとか

と思ってるが
自分はこれで>>262は違和感ない。
272Name_Not_Found:2010/12/19(日) 21:50:37 ID:???
コンストラクタで行う以外にも使う処理なら分けるかもしれないけど
それは初期化じゃなくて単なるリセットなんじゃないの
273Name_Not_Found:2010/12/19(日) 21:55:17 ID:???
>>271
すまないが、あなたの使う用語は怪しいのでコードで説明してくれると助かる。

var Hoge = function () {
 // オブジェクトの初期化 (何をする?)
 this.init.apply(this, arguments);
}
Hoge.prototype.square = function () { return this.x * this.y; };
Hoge.prototype.init = function (x, y) {
 // オブジェクトデータ(?)の初期化
 this.x = x;
 this.y = y;
}
var foo = new Hoge(10, 20);

オブジェクトの初期化が何を指しているのかがわからない。
関数、配列、要素ノード...とあらゆるものがオブジェクトなわけで。
hiddenフィールドから拾う処理も初期化処理には見えないし。
274262:2010/12/19(日) 21:55:39 ID:???
言葉足らずでごめん>>271と同じ感じです
275271:2010/12/19(日) 22:02:30 ID:???
>>273
(1) prototypeに関数追加
(2) hiddenフィールドから値を取得、インスタンスにセット
で別関数に分けることを想定してる

(1)はコードをちゃんと書いていれば確実に実行される一方、
(2)はサーバサイドで何か間違いやらしていればvalueが空になっていたりする
その場合は(2)の中から例外投げてコストラクタ内でcatchして
ダイアログなりconsole.logなりでエラー出すようにすればデバッグもやりやすいし
コードも読みやすくなるでしょ、という話
処理の内容自体はだらだら全部同じところに書くのと勿論変わらない
276269:2010/12/19(日) 22:03:19 ID:???
間違えた俺=>>275=>>269
>>271とは別人
277Name_Not_Found:2010/12/19(日) 22:12:13 ID:???
var Storage = function (name) {
this.name = name;
this.init();
};

Storage.prototype.init = function() {
this.datas = {};
};
Storage.prototype.clear = function() {
this.init();
}

こんな感じ?
278273:2010/12/19(日) 22:20:35 ID:???
>>275
あー、何だろう。俺の読解力が足りないのかまだ理解できてない。
特に「prototypeに関数追加」は勘違いがある気がするんだが…。
まず、(1), (2) の対応関係は以下でOK?

(1) prototypeに関数追加 -> コンストラクタ Hoge
(2) hiddenフィールドから値を取得、インスタンスにセット -> Hoge.prototype.init

>>277
最初は俺もそんなイメージでいたが、それだと「prototypeに関数追加」じゃないんだよね。
279Name_Not_Found:2010/12/19(日) 22:24:48 ID:???
class Hoge {
 private int x;
 private int y;
 Hoge(_x, _y) {
  this.setX(_x);
  this.y = _y;
 }
 void setX(_x) {
  this.x = _x;
 }
 int sum() {
  return this.x + this.y;
 }
 public static void main(String[] args) {
  Hoge hoge = new Hoge(3, 5);
  System.out.println(hoge.sum()); //8
  hoge.setX(5);
  System.out.println(hoge.sum()); //10
 }
}
280273:2010/12/19(日) 22:36:29 ID:???
function Hoge () {
 // オブジェクトの初期化
 Hoge.prototype.piyo = function () { ; };
 this.init.apply(this, arguments);
}
Hoge.prototype.square = function () { return this.x * this.y; };
Hoge.prototype.init = function (x, y) {
 // オブジェクトデータ(?)の初期化
 this.x = x;
 this.y = y;
}
var foo = new Hoge(10, 20);
console.log(foo.hasOwnProperty('piyo')); // false

「オブジェクト -> インスタンスメソッド」「オブジェクトデータ -> インスタンスプロパティ」として「prototypeに関数追加」から Object#hasOwnProperty の返り値は false である必要がある。
__proto__ や constructor を使ってもいいが、コンストラクタで prototype を初期化するメリットが感じられない。
281Name_Not_Found:2010/12/19(日) 22:51:37 ID:???
piyoに関しては間違った認識だと思う
282273:2010/12/19(日) 22:57:07 ID:???
>>281
詳しく
283273:2010/12/20(月) 00:23:16 ID:???
var Hoge = function () { this.piyo1 = 'piyo1', this.constructor.prototype.piyo2 = 'piyo2'; };
var foo = new Hoge();
console.log([foo.piyo1, foo.hasOwnProperty('piyo1'), Hoge.prototype.piyo1]); // ["piyo1", true, undefined]
console.log([foo.piyo2, foo.hasOwnProperty('piyo2'), Hoge.prototype.piyo2]); // ["piyo2", false, "piyo2"]

全て想定内の挙動だった。
284Name_Not_Found:2010/12/20(月) 00:27:55 ID:???
サイ本読んでないことは分かった。
285Name_Not_Found:2010/12/20(月) 00:43:02 ID:???
煽るだけで何もしないことはわかった
286Name_Not_Found:2010/12/20(月) 00:54:46 ID:???
サイ本読んでなくてどこがおかしいか分からないから教えてくれ
287Name_Not_Found:2010/12/20(月) 01:04:20 ID:wUUEZoQR
画面を切り替えないで、POST送信する方法ってありますか?
288Name_Not_Found:2010/12/20(月) 01:05:51 ID:???
XHR
289273:2010/12/20(月) 01:09:35 ID:???
サイ本が何を指しているのか知らないが、JavaScript第5版は読んだ。
良書なことは認めるけど、ES3, ES5 の方が信用できるとも思う。
真面目に答えてくれそうにないことはわかったのでもういいよ。
290Name_Not_Found:2010/12/20(月) 01:19:00 ID:wUUEZoQR
>>288
おぉ、こんな便利関数があったとは〜
少し調べて、いろいろ試してみます。
ありがとうございました。
291Name_Not_Found:2010/12/20(月) 01:28:53 ID:/KjWSHgF
>>280
これって、なんでpiyoだけ中に書いてるの?
squareとinitと同じように外に出したら問題がある?

自分の場合、最近newを使ってオブジェクト作らずHoge.init()みたいにしてオブジェクト作成するようにしてるから
そういうためにinitを用意してたりする。
292273:2010/12/20(月) 01:52:04 ID:w2g6av1v
>>291
全くその通りだと思う。俺なら piyo は外に書くよ。

コンストラクタ内で piyo を定義しているのは >275 の「(1) prototypeに関数追加 」をそのまま実装するとそうなるから。
個人的にはコンストラクタ内で prototype を経由しなければならない状況はそうそうないと思ってる。
コンストラクタの中でインスタンスメソッドを定義するのは this.x, this.y を公開したくない場合に限られるんじゃないかな。

var Hoge = function (x, y) {
 this.piyo = function () { return x*y; };
};

これならわかる。
ここでコンストラクタの中で prototype を経由することも勿論可能だけど、そうするとnew演算子でオブジェクトを生成するときの多様性が失われてしまう。
だから、>280 で「prototype を初期化するメリットが感じられない」と書いたわけ。

> Hoge.init()みたいにしてオブジェクト作成するようにしてる
なるほど、クラスメソッドとして定義するのね。
293273:2010/12/20(月) 02:12:41 ID:w2g6av1v
>>291
Hoge.init() はこういう書き方と思ってOK?

var Hoge = function () { ; };
Hoge.init = function (x, y) { var that = new Hoge(); that.x = x, that.y = y; return that; };
console.log(new Hoge.init(10, 20));

コンストラクタに処理を書く方法も思いついたけど、どうもスマートじゃない。(new Hoge.apply(this, arguments); が出来れば良かったんだけど…。)

var Hoge = function (x, y) { this.x = x, this.y = y; };
Hoge.init = function (x, y) { return new Hoge(x, y); };
console.log(new Hoge.init(10, 20));

あと、よかったら Hoge.init() にする理由を教えて欲しい。
Hoge() による意図しない動作を防ぐ狙いがあると推測。だとしたら、後者のコードは意味ないねw
294Name_Not_Found:2010/12/20(月) 02:31:38 ID:???
Hoge.init()だと静的メソッドになるのでは?
JavaScriptの場合なんでもありだけど
インスタンス化してない以上オブジェクト生成とは言えないかと思うけど
295Name_Not_Found:2010/12/20(月) 02:42:31 ID:???
>>273
>>269の「prototypeに関数追加」の真意が知りたいのか
コンストラクタとinit関数を別ける意味が知りたいのか
どっち?
296273:2010/12/20(月) 02:45:23 ID:w2g6av1v
>>294
普通はそうだけど、明示的に new Hoge を戻り値にしてやれば静的メソッドでもインスタンスを返せるはず。
今、モバイルから書き込んでいるから実証コードは書けないけど instance 演算子を使えば確認できると思う。
297273:2010/12/20(月) 03:01:15 ID:w2g6av1v
>>295
初めは init を分ける理由が知りたかった。prototype は派生的に出て来た疑問でこちらも出来れば知りたい。というか気になる。
でも、彼の真意がわかれば細かいことはいいと思ってる。
コードを一つ書いて「なぜそう書くのか」を説明してくれれば十分というのが正直な気持ち。
悪いけどもう寝るので、続きは明日。
298Name_Not_Found:2010/12/20(月) 20:02:16 ID:???
話の続きを聞かせて
299Name_Not_Found:2010/12/20(月) 20:26:48 ID:???
そこへ、リュックを背負った一頭のダルメシアンがやって来ました。

「ベン!待って!」
300Name_Not_Found:2010/12/20(月) 21:14:02 ID:???
おもしろがって質問をしている人がいるな
301Name_Not_Found:2010/12/21(火) 21:15:07 ID:???
>>275>>281>>294-295 はもういないみたいだな。議論は終わりか。
302Name_Not_Found:2010/12/21(火) 21:30:28 ID:???
もう終わりならまとめに入ってください
できれば初学者にもわかるように噛み砕いて
303Name_Not_Found:2010/12/22(水) 00:39:37 ID:???
話の続きを聞かせて
304Name_Not_Found:2010/12/22(水) 00:54:56 ID:???
inputフォームに文字を入力して、エンターが押されると呼び出したい関数があります。
jQuery で書きたいと思い、keypressというAPIがあるところまではわかったのですが、
$("#hoge").keypress(function (e){
if((e.which && e.which == 13) || (e,keyCode && e.keyCode == 13)){
//処理
}
});

<input type="text" id="hoge" />

それぞれ、script,bodyに書いて、文字を入力してからエンターを押しても呼ばれません。
この書き方が間違っていると思うのですが、どこでしょうか?
305Name_Not_Found:2010/12/22(水) 00:56:08 ID:???
e,keyCode
306Name_Not_Found:2010/12/22(水) 00:59:33 ID:???
>>305
すいません。
それは此処に書いたときの打ち間違いです。
307Name_Not_Found:2010/12/22(水) 01:28:11 ID:???
>>304
if (e.keyCode === 13) だけでいい気がするが、他の条件式の意図は何?
http://www.w3.org/TR/DOM-Level-3-Events/#events-KeyboardEvent
308Name_Not_Found:2010/12/22(水) 01:32:14 ID:???
>>307
ググって参考になりそうなコードを真似たのですが、e.keyCodeだけで大丈夫そうです。
ありがとうございます。
309Name_Not_Found:2010/12/22(水) 01:33:07 ID:???
意味の分かってないものは調べろ
310Name_Not_Found:2010/12/22(水) 07:26:03 ID:???
「意味が分からないけど人のコードを真似て書きました。でも動きません」って
自分の頭は弱いですと告白してるようなもんだよな
311Name_Not_Found:2010/12/22(水) 11:54:06 ID:???
そう書くくらいなら「ここの意味が分からない」と質問すれば普通なのにね。
312Name_Not_Found:2010/12/22(水) 13:11:16 ID:???
自分で考えない人は、どこが分からないのか分からないのです。
313Name_Not_Found:2010/12/22(水) 14:10:15 ID:KbKQFO3b
質問です

var img = document.createElement("img");
img.src = "hoge.gif";

img.style.webkitTransition = "opacity 500ms ease";
img.style.opacity = 0;
img.addEventListener("webkitTransitionEnd",function(){ console.log("transition end"); });

document.body.appendChild(img);
img.style.opacity = 1; // ←ここ


このように書いて、最後の行で opacity = 1 にして、ジワジワっと
表示されて欲しいんですが、transition-duration の 500ms を無視して
opacity = 1 になります。webkitTransitionEndイベントも発火しません

これって何故なんでしょうか
transition が動いているか確認用に、下記のように書き足してみると
ちゃんと機能しているように見えました


var n = 1;
img.addEventListener("click",function(evt){
n = Math.abs(n - 1);
evt.target.style.opacity = n;
},false);

ブラウザはSafariとChrome(PCとスマホ)です
よろしくお願いします
314Name_Not_Found:2010/12/22(水) 14:46:22 ID:???
>>313
書いてある通りに機能してるが
315Name_Not_Found:2010/12/22(水) 15:19:16 ID:cGsG+jPo
javascriptで作ったページで、
writeとかした結果の、プレーンなhtmlを取得するにはどうすればいいでしょうか?
316273:2010/12/22(水) 15:31:28 ID:???
>>315
document.body
317Name_Not_Found:2010/12/22(水) 15:32:24 ID:???
名前消すのを忘れてた
318Name_Not_Found:2010/12/22(水) 15:34:22 ID:KbKQFO3b
>>314
> 書いてある通りに

つーことは、やっぱ自分の解釈が間違ってんですね

スタイルにtransition = "opacity 500ms ease"と書くと
その要素のopacityに変化があった場合、500msのアニメーションになる
って理解してて、

img.style.webkitTransition = "opacity 500ms ease";
img.style.opacity = 0;

なimgをbodyにappendChild → opacity=0だから見えない
img.style.opacity = 1; → opacityがアニメーションになる

って動作を期待しているんですが…
319Name_Not_Found:2010/12/22(水) 16:29:23 ID:???
img.style.opacity = 1; の部分をsetTimeoutか、イベントハンドラでやればいいんじゃないの?
320Name_Not_Found:2010/12/22(水) 17:32:48 ID:???
>>315
「プレーンなhtml」の定義は?
>316 のようにDOMでアクセスすれば大体取得できると思うが…。
321313:2010/12/22(水) 18:23:26 ID:KbKQFO3b
>>319
DOMツリーにぶら下げた直後はTransitionが無効、みたいなイメージですかね
322Name_Not_Found:2010/12/22(水) 20:06:21 ID:???
DOCTYPEの内容を取得するにはどうしたらよいでしょうか?
調べてもなかなかヒットしません
323Name_Not_Found:2010/12/22(水) 20:47:55 ID:???
324323:2010/12/22(水) 20:56:39 ID:???
>>322
補足すると、DOCTYPEスイッチ判定に使いたいなら compatMode で判定する方が良い。
http://www.whatwg.org/specs/web-apps/current-work/#documents-in-the-dom
325Name_Not_Found:2010/12/22(水) 21:41:52 ID:???
自分自身の関数名を取得する方法はありますか?
326Name_Not_Found:2010/12/22(水) 21:45:27 ID:???
>>325
非IE で strict mode ではないなら、

function hoge () { alert(arguments.callee.name); }
hoge();
327Name_Not_Found:2010/12/23(木) 06:39:51 ID:???
>>326
できました。ありがとうございます。
328Name_Not_Found:2010/12/23(木) 18:51:37 ID:???
doctypeについて質問したものです
資料を見ていろいろやって見ましたがどうもdoctypeだけ上手くいかず、他にも挙動がおかしい関数がたくさんあったので実装の問題かもしれません

簡潔にページ全体のソースを取得する方法はありますでしょうか?
できるだけ多くのブラウザで動くやり方でお願いします
ちなみに環境はDoCoMoBrowserです
329Name_Not_Found:2010/12/23(木) 19:12:33 ID:???
XMLHttpRequestで取得すればいいんでないの?
iモードブラウザ2.0はXMLHttpRequestに対応しているらしいよ
作ろうiモード:iモードブラウザ2.0対応DOMについて | サービス・機能 | NTTドコモ
http://www.nttdocomo.co.jp/service/imode/make/content/browser/browser2/dom/
330Name_Not_Found:2010/12/23(木) 19:32:58 ID:???
>>328
最終的にどんな動作をしたいのか、も書いた方が良い。
XHR でソースは取得できるけど、何となくソースを取得してもダメでした的な結果になりそうな予感がする。
331Name_Not_Found:2010/12/23(木) 19:55:34 ID:???
implodeをかっこうよく書きたいんだけどどうしたらいいかな
332Name_Not_Found:2010/12/23(木) 21:02:54 ID:???
>>331
implode?
そんな関数あったかな。PHP にはあるが。
333Name_Not_Found:2010/12/23(木) 21:29:08 ID:???
function implode (glue, pieces) { return pieces.join(glue); }
alert(implode('-', [1,2,3]));
http://www.php.net/manual/ja/function.implode.php
334Name_Not_Found:2010/12/23(木) 21:33:23 ID:???
function impload(glue,array) {
 return array.join(glue);
}

これ以上どうしろと・・・
335Name_Not_Found:2010/12/23(木) 21:34:38 ID:???
あー最悪だ・・
綴り間違ってる上に既に同様のレスがorz
336Name_Not_Found:2010/12/23(木) 21:46:51 ID:???
>>335
ご愁傷様。ちなみにPHPには join という関数もあって implode のエイリアス。
Array#join とどう違うんだ、って気はするが。
http://www.php.net/manual/ja/function.join.php
337Name_Not_Found:2010/12/23(木) 22:21:04 ID:???
JavaScriptで、現在のDPIの値を知るにはどうしたらいいですか?
(96DPIの場合が多いみたいですが、そうじゃない場合もある?)

currentStyleでサイズを取得するとptで返す場合があるのでpx値に換算したいのですが
338Name_Not_Found:2010/12/23(木) 23:05:31 ID:???
339Name_Not_Found:2010/12/23(木) 23:47:11 ID:???
>>338
ありがとうございます。IE以外ではpx値を取得できるみたいなのでIE 限定で問題ありません。
340337:2010/12/24(金) 01:10:12 ID:???
deviceXDPI はブラウザの設定で変化するので使うなら logicalXDPI ですよね
341Name_Not_Found:2010/12/24(金) 01:17:02 ID:???
>>340
そのようだね。screen.logicalXDPI === 96 であることを確認できた。
http://msdn.microsoft.com/en-us/library/ms534128%28VS.85%29.aspx
342Name_Not_Found:2010/12/24(金) 12:07:23 ID:???
>329,330
具体的には、自分自身、または自身の子タブと全く同じソースのページを別タブに新たに開きたい、つまりコピーしたいと思っています
できればオフラインでも動くようなソースの方がありがたいです
343Name_Not_Found:2010/12/24(金) 13:34:13 ID:???
>>342
> つまりコピーしたい
ただのページの複製?ソースを表示したいわけじゃないの?
> できればオフラインでも動くようなソースの方がありがたいです
元のページはオンラインで取得するけど
その後にオフラインにしたときでも、その元のページを複製したいという意味?
それともオフラインのケースは元のページを取得するときからオフライン?(ローカルファイル?)
> 子タブ
これは何を指してるの?iframe?
タブブラウザか何かの用語で、開いた側を親タブ、開かれた側を子タブ、と呼んでいるの?
> 別タブに新たに開きたい
javascriptにはウィンドウとタブを区別する概念はなくてブラウザ側の仕様・設定次第だと思うよ

で、ただ同じページを表示するだけでその後その新しいウィンドウに対して何かしたいわけでもないの?

取得時はオンラインだけどその後オフラインにしても動作させたいわけでもなく
ソースを表示させたいわけでもなく、ただのページの複製ならopen(location)でいいんじゃない
344Name_Not_Found:2010/12/24(金) 15:24:10 ID:???
a.onerror=(
 a.onload=(
  a.onabort=function(){
   delete g[f]
  }
 )
);

こんな記述を見かけたのですが
a.onerror=(function(){
 a.onload=(function(){
  a.onabort=function(){
   delete g[f]
  }
 })();
})();
こんな感じのを省略した形なのでしょうか?
自分的に見慣れない記述なので
345Name_Not_Found:2010/12/24(金) 15:26:59 ID:95ByqtJ2
>>344
ただカッコで括っただけじゃね?
346Name_Not_Found:2010/12/24(金) 15:52:26 ID:???
>>344
いいえ
347344:2010/12/24(金) 16:36:04 ID:???
>>345
そうみたいですね
ためしに
var i = (1);
var s = ("hoge");
alert(i);
alert(s);
とやったら期待通りのものが出ました
見やすくするために囲ったんですかね
どうもありがとうございました
348Name_Not_Found:2010/12/24(金) 18:13:36 ID:???
>>347
>>344は見やすくするためではない気がする。
こうすると複数のイベントで同じ関数を呼べるってことじゃないかな。
349Name_Not_Found:2010/12/24(金) 18:29:28 ID:???
>>344
function の評価値を連鎖的に返している気がする。(未検証)

a.onerror = a.onload = a.onabort = function () { delete g[f] };
350Name_Not_Found:2010/12/24(金) 18:29:58 ID:???
代入も式だから、その式の結果を次の代入に使ってるだけ。
初期化なんかで a = b = c= 0; みたいにするのと同じ。
351349:2010/12/24(金) 18:39:56 ID:???
やはり、気になるので検証してみた。

var a = {};
a.onerror=(
 a.onload=(
  a.onabort=function(){ 'sample1'; }
 )
);
console.log(a);

上記は下記の省略形と思えばいい。

var b = {};
b.onerror = b.onload = b.onabort = function () { 'sample2'; };
console.log(b);

代入演算子の評価値をそれぞれ代入している。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/11_Expressions.html#section-11.13
352Name_Not_Found:2010/12/24(金) 22:07:18 ID:???
明らかに下のが分かり易い…
353Name_Not_Found:2010/12/24(金) 22:13:13 ID:???
それたぶんGoogleのコードだね
インデントして読み進めてみようと思ったけど
あそこのソースは異次元すぎてちょっと理解できない
354Name_Not_Found:2010/12/25(土) 06:40:26 ID:2zGOJNK3
あー、Closure Compilerに畳まれたやつか!
355 ◆LAr2dQXkfk :2010/12/25(土) 10:57:38 ID:???
>343
説明不足でいろいろと混乱させてしまってすみません…

はっきり具体的に言うと

ページ内のフォームに打ち込まれたHTMLソースをボタンを押すことで別タブ(ウィンドウ)に開く(blankで空ページを開く→writeでソースを書き込み)機能をもったページAに
自身(ページA)と全く同じページを作り出したり、作り出した後の子タブ(ウィンドウ)の最新のソースを取得してページAのフォームに表示したりいろいろしたいのです

ただし、ページAは携帯の画面メモのように保存され、携帯等で簡単にスクリプトやHTMLを書いてテストできるツールアプリのような形にしようと思っており、通信ができない状態でも機能してほしいと思っています
(アクセス制限(時間)等への配慮)

そしてこれらは結局、自身と子タブ(ウィンドウ)のHTMLソースをまるごと取得できれば解決できると考えています
確か、HTMLタグ内は以前成功したのですが柔軟性を最大限に高めるため、その外側も含めてソース全部、つまり通常ではdoctypeも含めたソースを取得したいです

どうかよろしくお願いします
356Name_Not_Found:2010/12/25(土) 11:41:59 ID:???
357Name_Not_Found:2010/12/25(土) 13:17:56 ID:???
自前のページなら、フレームで開いて
もう片方からDOMを読み取ってテキストボックスにでも流しこめば?
358Name_Not_Found:2010/12/25(土) 23:18:16 ID:???
>>355
機能が2つあるように見えるんだけど、どちら?

1. A.html のtextarea要素に書かれたHTMLタグを別のウインドウに出力したい
2. A.html の window を別のウインドウに複製したい

1. は DOMParser でも使う。
2. は createHTMLDocument, importNode とか。
359 ◆LAr2dQXkfk :2010/12/26(日) 06:38:13 ID:???
>358

やりたいことを絞ると、
1.で別ウィンドウに開いた後、そのページのDOMがscriptによって変化するとして、その変化後のDOMを取得したいのです

それで何が聞きたいかといいますと、
<body>内のDOMを取得する方法等はもちろんわかるのですが、
<!doctype>から</html>までのDOM、もっと言えばソース丸ごとを取得できる簡潔な方法がどうにもわからないので教えてほしいということです

ただし、携帯で動かしたいので、JavaScript1.2程度で、DOMも(上の資料で)オプション的な操作を使わずにいきたいと思っています
ちなみにdoctypeの直接参照は何故かできませんでした

とりあえず、<html>の外側を取得する方法はありますでしょうか?もちろんXHRは使えません
360Name_Not_Found:2010/12/26(日) 12:00:32 ID:???
ありません
361 ◆LAr2dQXkfk :2010/12/26(日) 13:36:42 ID:???
教えてくれたらマ○コうpします。。
362Name_Not_Found:2010/12/26(日) 13:38:45 ID:YhwVhB8V
気持ち悪い
363Name_Not_Found:2010/12/26(日) 15:11:45 ID:???
書き出す関数でも作ればええよ
364Name_Not_Found:2010/12/26(日) 15:41:35 ID:???
>>361
はるか〜そうげんを〜♪
365Name_Not_Found:2010/12/26(日) 16:25:15 ID:???
>>359
DOM を使わずにノードにアクセスできるわけないだろ。
JavaScript 以外の言語を使え。

>>361
変態は去ね。
366Name_Not_Found:2010/12/26(日) 16:35:56 ID:???
真面目に答えて損した
367Name_Not_Found:2010/12/26(日) 16:40:17 ID:???
つか、自分が作ったページを参照するんだったら、doctypeなんて何通りも無いんじゃないの。
ファイルかフォルダ名に識別できるような名前を付けておいたら
368Name_Not_Found:2010/12/26(日) 17:06:04 ID:???
自分が作ったページならhtml要素外に何を書いてあるのかもわかってるんだから
取得したhtml要素内の文字列に、html外に書いてあるものと同じ文字列をただ付け加えればいいじゃない
DOMで書き換えられないってことは自分が書いたままで改変されていないことが保障されているんだし
サーバサイドでhtml要素の外側に何か挿入されるようなレンタルサーバとかなら知らないけど
369 ◆LAr2dQXkfk :2010/12/26(日) 17:36:31 ID:???
つか普通に割れ鳥だろ
370Name_Not_Found:2010/12/26(日) 17:55:53 ID:???
トリップが公開されている時点でネタと思われても仕方ない
371Name_Not_Found:2010/12/26(日) 18:12:17 ID:???
環境は携帯電話ですって人がときどき質問に来るけどいつもコミュニケーションがうまく取れない
372Name_Not_Found:2010/12/26(日) 18:28:10 ID:???
docomoブラウザは死ねばいいのに
373Name_Not_Found:2010/12/26(日) 18:36:13 ID:???
ケータイweb屋にまともな奴がいるとでも思ってたのかw
374Name_Not_Found:2010/12/26(日) 20:27:21 ID:???
あるJavaScriptのライブラリを見ていたところ、
if (typeof something_var == 'undefined') something_var = 1;
みたいなのを羅列していたのですが、
これはライブラリ全体を、
(function(){
})();
で囲ってしまえば不必要な処理ですよね?
375Name_Not_Found:2010/12/26(日) 21:17:14 ID:???
>>374
グローバル変数なんだから、どちらにしても必要。
376Name_Not_Found:2010/12/26(日) 22:22:29 ID:???
>>375
なるほど
グローバルにしたいからなんですね
もし定義されていたらどうするつもりなんでしょうね・・・
else処理がないので全く関係ないsomething_varをそのまま使うことになりそうですが
377Name_Not_Found:2010/12/26(日) 22:38:36 ID:???
>>376
そのまんまだろう。
出来るだけネイティブオブジェクトを利用したいから、独自定義しない。
あるいは、二重に同じオブジェクトを定義することを避けるため。
など想像できるが、これ以上はコードを読まないとわからない。
378Name_Not_Found:2010/12/27(月) 00:12:48 ID:???
>>376
グローバル変数、もといグローバルオブジェクトのプロパティを判定するなら
if ('something_var' in window) { /* いろいろ */ } みたいにするだろ、たぶん
379Name_Not_Found:2010/12/27(月) 00:56:47 ID:???
typeof演算子 は ReferenceError にならないので、グローバル変数の存在チェックに使われることがある。
window を使えない環境でも有効なのが特徴。
380Name_Not_Found:2010/12/27(月) 01:28:12 ID:???
Stringオブジェクトを拡張したexStringオブジェクトを作りたいのですが、
継承はどのようにすればよいでしょうか。
381Name_Not_Found:2010/12/27(月) 07:40:45 ID:???
>365
DOMは使ってもよいのですが携帯用なので初歩的なDOM操作しか使えないということです

>367,368
ユーザーがどんな形で入力してくるかわからないですし、これからの拡張性を考えて
とにかく最強に柔軟にしたかったのですが、ある程度割り切るしかないですかね

>370
すみません…自分の名前のhikaruを使ったのですが公開されているとは夢にも思いませんでした

>371,372,373
日本語が下手ですみません
携帯やdocomobrowserが悪いんじゃなくて僕が悪いのはわかっています


そういえば前相談にのってもらったcanvasを使わず円等の図形を表示する方法は
縦幅1pxの背景付きdivブロックを、長さをそれぞれ調整して上から順に重ねるのが一番軽いとわかりました

今回も皆さんからもらったヒントをもとにまた試行錯誤してみます
そのうちまた質問する機会があると思いますが
その時までには日本語力と思考整理力を向上させておきますので、どうかまたよろしくお願いします

今回はいろいろ煩わせてすみませんでした
そしてありがとうございました
382Name_Not_Found:2010/12/27(月) 09:19:25 ID:???
>>380
function exString() { /* コンストラクタ */ };
exString.prototype = new String('');
383Perl忍者 ◆M5ZWRnXOj6 :2010/12/27(月) 12:28:35 ID:cigs+Z6i
PerlもPHPもCも使わざるおえない・・・言語を選んでる暇がないとか多忙ぶってるゴミクズは死んで
お願いだから死ね かっこつけてんじゃねえよ
384Name_Not_Found:2010/12/27(月) 13:12:49 ID:???
使わざるを得ない、な
385Name_Not_Found:2010/12/27(月) 13:31:09 ID:???
まずは日本語からきちんと身につけましょう、というお話。
386Name_Not_Found:2010/12/27(月) 14:39:37 ID:???
<script type="text/javascript">
<!--

function keybind() {
var e = window.event;

if(e.KeyCode == 13) {

}
}
// -->
</script>

〜〜〜〜〜

<form action="" name="f1">
<input type="text" name="t1" value="" onKeyPress="keybind()">
<input type="text" name="t2" value="" onKeyPress="keybind()">
<input type="button" value="Submit!!">
</form>

テキストボックスにフォーカスがある状態ででEnterキーやCtrlキーが押された時
そのフォーカスがあった、テキストボックスにEnterやCtrlという文字列を挿入したい場合
何を使えばできるでしょうか?
前も質問したのですが、よくわからなかったのでもう一度質問させてもらいました


387Name_Not_Found:2010/12/27(月) 15:00:54 ID:???
まず前に質問した時の答えはどういう内容だったんだよw
同じ答え出てきても仕方ないだろ
388Name_Not_Found:2010/12/27(月) 16:20:43 ID:???
>>380
>>382 の通りだが、せめて大文字で始まる名前をつけよう。
389Name_Not_Found:2010/12/27(月) 16:23:04 ID:???
>>386
前回の質問のURLを貼って
390386:2010/12/27(月) 17:25:21 ID:+nYPbk3I
http://hibari.2ch.net/test/read.cgi/hp/1289130738/l50
これの575番が自分なんですが、さっき上まで書いた部分まで来たんですか
if(e.KeyCode == 13) {}の中に何を入れればいいのかわからないです
一個一個document.f1.t1.valueとdocument.f1.t2.valueで入れていく方法しか考えつきません
テキストボックスを引数?かなんかで取得させることができないでしょうか?
391Name_Not_Found:2010/12/27(月) 18:55:00 ID:???
575 Name_Not_Found[sage]投稿日:2010/11/24 19:49:14 ID:???
テキストボックスにカーソルがある状態でTabキーを押したら、
Tabという文字列をテキストボックスに挿入し、aキーを押したらaという文字列をテキストボックスに挿入したい場合

onKeyPressイベント、onKeyDownイベントを使うのはわかりますが
それだったらどのキーを押しても反応してしまうので困ってます

誰か教えてください

576 Name_Not_Found[]投稿日:2010/11/24 19:57:59 ID:qm0HIwho
>575
イベントがキーコードを持ってるからそれで判別すれ

577 Name_Not_Found[sage]投稿日:2010/11/24 20:05:44 ID:???
>575
event.keyCode - MDC Doc Center
https://developer.mozilla.org/en/dom/event.keycode

582 Name_Not_Found[sage]投稿日:2010/11/24 23:59:40 ID:???
>576
>577
ありがとうございます
助かりました
392 ◆Afv5PFgYfo :2010/12/27(月) 18:55:36 ID:???
>386

<script type="text/javascript">
<!--
function keybind(el,evt) {
switch(evt.keyCode){
case 13:
stopDefault(evt);
el.value+="Enter";
break;
case 17:
stopDefault(evt);
el.value+="Ctrl";
break;
}
}
function stopDefault(e){
try{
e.preventDefault();
}catch(e){
window.event.returnValue==false;
}
}
// -->
</script>
<form action="http;//www.google.co.jp" name="f1">
<input type="text" name="t1" value="" onkeyup="keybind(this,event)">
<input type="text" name="t2" value="" onkeyup="keybind(this,event)">
<input type="button" value="Submit!!">
</form>

こんな感じでしょうか?
393Name_Not_Found:2010/12/27(月) 18:56:16 ID:???
>>390
alert(event.keyCode) でキーコードを確認するべし。
394Name_Not_Found:2010/12/27(月) 18:59:11 ID:???
>>392
window.event.returnValue にする理由を教えて。
e.returnValue ではいけない?
395Name_Not_Found:2010/12/27(月) 19:01:08 ID:whY1tpCn
コメントフォームを付けたくて既存の物を探してたらJavaScriptを使った良いもの↓が
あったんだけど動作しませんでした。
http://www.inetagency.net/doc/comment/3/
CSSも効いてなかったからHTMLのソースを見てたらパスの最初の"/"が不要だったので
取ったらCSSは効きました。下の方のJavaScriptファイルへのパスの"/"も取ったんだけど
こっちは動作しないです。色々試したけど分かりません。
396Name_Not_Found:2010/12/27(月) 19:06:11 ID:???
>>395
作者に聞いた方が確実
397Name_Not_Found:2010/12/27(月) 19:06:18 ID:???
>>395
最初の "/" は絶対パス。ルートに置かなければ動作しない。
http://www.inetagency.net/commentform.html は正常動作するんだから、何か勘違いがあるとしか思えない。
398Name_Not_Found:2010/12/27(月) 19:12:14 ID:whY1tpCn
>>396
下のコメントフォームに質問していいみたいだから似たようなこと前に書いたんだけど
バグってて出来ませんでした。メールも出来るみたいなので出来なかったら直接聞くのも
考えておきます。
>>397
取らないでファイルをC:直下に置かないとダメすか?やってみます。
多分ファイルは正しくて問題は自分のミスです。
399Name_Not_Found:2010/12/27(月) 19:19:24 ID:???
>>394
catch(e)ってしてるからじゃない?なんで同じeにしたのかはわからないけど
400Name_Not_Found:2010/12/27(月) 19:26:40 ID:???
>>399
そうかもしれないけど、window.event に依存する理由がない気がする。
window.event は IE と Firefox (Opera だったかも) だけで動作する独自拡張じゃなかった?

event.returnValue は先行実装とはいえ、モダンブラウザでも動作する。
わざわざ window.event を経由する理由は思い当たらない。
401400:2010/12/27(月) 19:32:17 ID:???
ごめん。window.event は Opera だった。
Firefox は「window.event is undefined」
402Name_Not_Found:2010/12/27(月) 23:47:50 ID:???
そもそも==
403 ◆Afv5PFgYfo :2010/12/28(火) 01:06:32 ID:???
>>400
とくに理由なんてありません なんとなくそう書いただけです

function stopDefault(e){
try{
e.preventDefault();//IE以外
}catch(err){
e.returnValue==false;//IE
}
}
404 ◆Afv5PFgYfo :2010/12/28(火) 01:09:12 ID:???
>>402
あ そうですね =が一つで結構です

function stopDefault(e){
try{
e.preventDefault();//IE以外
}catch(err){
e.returnValue=false;//IE
}
}
405Name_Not_Found:2010/12/28(火) 12:13:42 ID:???
「画像aを800msec毎にn回読み込んだあと、画像bを表示する」というのをやりたくて
settimeoutを使えばいいということはわかったのですが、検索してもコードの書き方が
理解できません。javaScript難しいッス。

申し訳ない話ですが、コードの書き方をご教示頂けないでしょうか。
406Name_Not_Found:2010/12/28(火) 13:32:09 ID:???
>>405
それならsetIntervalでやったらいいんじゃないかね
https://developer.mozilla.org/ja/DOM/window.setInterval
サンプルあるからわかりやすいよ。コピペして色々書き換えて試したらいい
407Name_Not_Found:2010/12/28(火) 13:48:22 ID:0nwI31hT
すべての要素の一番上にある要素を挿入したいんですが、方法がわかりません。
InsertBeforeを使えばいけるかなとは思ったんですが、
Node was not found" code: "8
ってエラーがでてうまくいきません。
どうすればいいんでしょうか?
408Name_Not_Found:2010/12/28(火) 13:56:28 ID:???
>>407
そのエラーの通りノードがないんでしょ
どういうコードか晒してみて
409Name_Not_Found:2010/12/28(火) 16:01:25 ID:???
配列の複製に繰り返し処理がいるとか、変数のオブジェクト型は参照だってのが混乱する
あと、var obj = socument.createElement('div')とかしたあとにappendChild(obj)で実装してから
obj = document.createElement('span')とかやっても問題ないのかとか、頭がパンクしそうだぜ・・・
410Name_Not_Found:2010/12/28(火) 16:11:09 ID:DfkofjaA
javascriptを始めたばかりで、その前にactionscriptもやっているのですが
HTMLCollectionの全ての要素に対してfor文で処理をする際、サンプル等ではよく

var p = document.getElementsByTagName("p");
for(var i=0; i<p.length; i++)

のような書き方をしていますが、この参照数を取得する部分"p.length"の書き方は普通なのでしょうか?

actionscriptの時に配列arrayをforで処理する場合
for(var i=0; i<array.length; i++)
とすると、処理負荷が大きいという事で
var al = array.length;
for(var i=0; i<al; i++)
のように書いた方がいいと、参考にした文章には載っていたのですが
javascriptでは"p.length"のように直接lengthから参照しても問題は無いのでしょうか?


411Name_Not_Found:2010/12/28(火) 16:17:25 ID:???
>>410
後者推奨だね。1行に書ける。
javascriptの高速化テク:三浦仮想研究所
http://nex.xrea.jp/?s=190
412Name_Not_Found:2010/12/28(火) 16:18:19 ID:???
>>409
問題ないが何を意味してるかわからないけど、そういう操作してもおかしくはない

>>410
パフォーマンスに気を遣ってるサンプルの場合は後者のやり方やってるよ
var p = document.getElementsByTagName("p");
for(var i=0, l=p.length; i<l; ++i)
こんな感じ
413Name_Not_Found:2010/12/28(火) 16:39:26 ID:???
>>411-412
javascriptでもlengthを一度変数に入れて、というのはパフォーマンス面で有効なんですね
一行で書くやり方は初見でした
参考にさせて頂きました、素早い返答ありがとうございます。
414Name_Not_Found:2010/12/28(火) 21:20:24 ID:???
new Image()とdocument.createElement("img")って使い分けていますか?
canvasに画像を貼り付けたい場合、
drawImageメソッドの第一引数はurlじゃなくてImageオブジェクトなので
Imageオブジェクトを作ってからそのsrcプロパティにurlを指定して
Imageオブジェクトを渡さないといけないみたいですが
解説サイトの例を見ているとどれもnew Image()でImageオブジェクトを作っているので
new Image()に何か意味があるのかな、new Image()じゃないと駄目な場合とかあるのかな・・・と
415Name_Not_Found:2010/12/28(火) 22:14:11 ID:???
>>414
こんなんあったよ。googleってべんりですよねえ?
http://blog.kaihatsubu.com/archives/001455.html
ワード「new image javascript 等価」とかでググるといろいろ。
416Name_Not_Found:2010/12/28(火) 22:26:10 ID:???
document.createElement("img")はnew Image()の上位互換みたいなもの
または実装によっては同じものってことですか
あえてnew Image()を使う意味はないってことですか
どうもありがとうございますm(_ _)m
417Name_Not_Found:2010/12/29(水) 00:01:54 ID:???
new Image() の方がタイピングが簡単じゃない(#`з´#)
418Name_Not_Found:2010/12/29(水) 00:14:25 ID:???
そーいやImageオブジェクトってどこかで定義されてたっけ?
DOM 2 HTMLにはないんだよな・・・
HTML5にもインターフェイスの定義はないみたい
419Name_Not_Found:2010/12/29(水) 00:44:11 ID:???
420Name_Not_Found:2010/12/29(水) 00:48:37 ID:???
Imageコンストラクタの中身ってどうなってるの?真似してnew Div()とかやってみたい
421Name_Not_Found:2010/12/29(水) 00:57:21 ID:???
built-in objectって必ずしもJSのコードで書けるとは限らないんじゃないかな
422418:2010/12/29(水) 01:05:41 ID:???
>>419
ありがと、普通に見落としてた
やっぱHTML5ではじめて明文化されたタイプの代物か・・・

>>417
素直にcreateElement使っとけ
423Name_Not_Found:2010/12/29(水) 14:22:29 ID:???
>>411-413
for (var i = p.length - 1; i <= 0; i--) でいいじゃん
424Name_Not_Found:2010/12/29(水) 14:37:19 ID:???
争点がどこかわかってないかんじ
425Name_Not_Found:2010/12/29(水) 14:40:45 ID:???
オブジェクトのプロパティを何度も参照するとパフォーマンスに
悪影響が出るという点だと理解してたんだが、間違ってるなら指摘して欲しい
426Name_Not_Found:2010/12/29(水) 14:40:58 ID:???
>>423 それでいいならいいんじゃない?
427Name_Not_Found:2010/12/29(水) 14:49:05 ID:???
Image先行実装やったんか
428Name_Not_Found:2010/12/29(水) 14:51:11 ID:???
というより既成事実
429Name_Not_Found:2010/12/29(水) 15:05:40 ID:???
onmouseoutの挙動が厄介なんだ。
elm.onmouseout = function(e){
    if (!e) e = window.event;
   if (e.target == elm) {
     alert("out");
   }
};
elmの中が入れ子<div(elm)><div>a</div></div>
になっていると、elmの中のdivに入ったときにもout判定されるみたいで。
elmの中のdivに対して関数は同じでonmouseoutやってみたら、今度はalert無しになった。
↑elm = elm.getElementsByTagName("div")[0];
何かいい案あったら教えてください。
430Name_Not_Found:2010/12/29(水) 15:37:25 ID:???
HTML5は
昔の力の強い者が決めた俺俺ルールの
集まり
431Name_Not_Found:2010/12/29(水) 16:31:34 ID:???
>>429
> elmの中のdivに入ったときにもout判定されるみたいで

子要素に mouseover が起きた時点で、親要素に mouseout が起きる。
そしてその直後に、子要素の mouseover が、改めて親要素に伝播する。
432Name_Not_Found:2010/12/29(水) 20:17:39 ID:???
マウス位置調べる
433Name_Not_Found:2010/12/29(水) 21:15:14 ID:???
>>429
event.target と event.relatedTarget の2つをチェックする。
434Name_Not_Found:2010/12/29(水) 21:47:22 ID:???
435Name_Not_Found:2010/12/29(水) 23:04:20 ID:???
>>423
間違ってないのに、なぜ叩かれるw
436Name_Not_Found:2010/12/29(水) 23:11:36 ID:???
間違ってないと思うならそれでいいんじゃない?
437Name_Not_Found:2010/12/29(水) 23:13:04 ID:???
「カンマ演算子なんてトリッキーな知識持ってる俺素敵!」ってせっかく思ってたのに
足元すくわれてムキーってなってるだけ
438Name_Not_Found:2010/12/29(水) 23:19:14 ID:???
423=425=435=437か
哀れ
439Name_Not_Found:2010/12/29(水) 23:20:55 ID:???
>>437
カンマ演算子なんて、この一連の文脈でどこに出てきてんのw
440439:2010/12/29(水) 23:28:43 ID:???
まさか、var 文で複数の変数をカンマ区切りで書き連ねるのを
カンマ演算子とか思っちゃってんのかな。
441Name_Not_Found:2010/12/29(水) 23:29:06 ID:???
>>439
>>412に出てきてるよ と横から言ってみる
442439:2010/12/29(水) 23:31:24 ID:???
>>441
・・・・。
443Name_Not_Found:2010/12/29(水) 23:32:15 ID:???
>>430
よしわかった、お前MLに突貫してこい
無視されるだけだと思うがw
444Name_Not_Found:2010/12/29(水) 23:36:57 ID:???
俺俺ルール採用でもいいからさ
ブラウザ間の仕様だけは統一してくれよマジで
445Name_Not_Found:2010/12/29(水) 23:42:05 ID:???
>>441
カンマ演算子って初めて知ったからどれだろうとレス見直してみたら自分のだった
var a=1, b=2, C=3;
みたいなのをカンマ演算子って言うのか。勉強になった。

>>423のは単純に>>410の質問の答えになってないから変な流れになってるんでしょ?
>>410は「p.lengthを始めに保持して0から最後までループ」って意図だと思ったから
なるべくその意図を汲んで答えたわけで、逆順なら>>423でもいんじゃない?
446Name_Not_Found:2010/12/29(水) 23:45:06 ID:???
それでいいならいいんじゃない?
447Name_Not_Found:2010/12/29(水) 23:46:41 ID:???
>>445
> var a=1, b=2, C=3;
> みたいなのをカンマ演算子って言うのか。

それ違うから。
448Name_Not_Found:2010/12/29(水) 23:47:58 ID:???
>>447
違うの?!一応ググったら「for文の初期化のカンマで式を繋いだもの」みたいなのが書いてあって信じたんだけど。
449437:2010/12/29(水) 23:48:38 ID:???
>>445
いや>>440が正しい。ただvarで2つ変数を宣言してるだけ。
for文でカンマ演算子を使うのであれば、

for (var i = 0, j = 0; i < 10; i++, j++)

みたいな感じ。最後の「i++, j++」のカンマはカンマ演算子。
450Name_Not_Found:2010/12/29(水) 23:53:58 ID:???
>>449
なるほど。
でも変数宣言て式じゃないんだっけ?
var a = 1;
var b = 2;
i++;
j++;
の全部が式だと思ってたからvar a=1, b=2もカンマ演算子なのかなと思った
451437:2010/12/29(水) 23:56:00 ID:???
>>449
https://developer.mozilla.org/ja/JavaScript/Reference/Operators/Special_Operators/Comma_Operator
>expr1, expr2
> 任意の式。

参照したのはこれだと思うけど、「var i = 10;」というのは「文」であって「式」ではない。もし

var i = 0, j = 10

のカンマがカンマ演算子なのであれば、カンマの前と後は独立しているはずだから
iはローカル変数ではなくグローバル変数になるはずだし、

var p = var i = 0, j = 10;

みたいなことができてpには10が入るはず。実際はどちらもそうはならない。
452Name_Not_Found:2010/12/29(水) 23:56:56 ID:???
>>449
437!?
453Name_Not_Found:2010/12/29(水) 23:57:20 ID:???
MDCには
>単一の式でなければならない位置で複数の式を記述したいときに、コンマ演算子を使うことができます。この演算子が最も良く使われるのは、for ループで複数のパラメータを与えたいときです。
とあるのだがa=1,b=2これらも式だから間違ってはないんじゃないの?
j++,i++だけが式ってわけでも無いよね?
454437:2010/12/29(水) 23:57:41 ID:???
× iはローカル変数ではなくグローバル変数になるはずだし、
○ jはローカル変数ではなくグローバル変数になるはずだし、
455Name_Not_Found:2010/12/29(水) 23:58:28 ID:???
>>451
代入演算子も式ではないと言うの?
456Name_Not_Found:2010/12/29(水) 23:59:38 ID:???
久しぶりに式と文を勉強し直す時がきたわw
457437:2010/12/30(木) 00:00:43 ID:???
>>455
varって付いてるのがミソ。
俺も最初の>>437でそこを見間違えて>>440に突っ込まれた。
458Name_Not_Found:2010/12/30(木) 00:03:01 ID:???
>>457
for文の説明にはこうある
for ([initial-expression]; [condition]; [final-expression])
(代入式を含む) 式または変数宣言。

これはどうなるの?
459Name_Not_Found:2010/12/30(木) 00:03:38 ID:???
var a = 1, b = 2;
で一つの式ってこと?
460Name_Not_Found:2010/12/30(木) 00:06:27 ID:???
あれか
var a=0,b=0;
for(a=1,b=2;a < 10;a++) {}

これならa=1,b=2の部分は式で
varがついてるから文であると言いたいのだな?

https://developer.mozilla.org/ja/JavaScript/Reference/Statements/var
461437:2010/12/30(木) 00:09:43 ID:???
>>460
そういうこと。

var a = 0; // 1個の文 (statement)
var a = 0, b = 0; // 1個の文
a = 0; // 式 (expression)
b = 0; // 式
a = 0, b = 0; // 2つの式をカンマ演算子でつないだもの(全体で1個の式)
462Name_Not_Found:2010/12/30(木) 00:14:28 ID:???
あー、なるほど。勉強になった。
こんな時間にリアルタイムに回答が返ってくるとは思わなかったわ。
463Name_Not_Found:2010/12/30(木) 00:17:52 ID:HpzG6czP
<script language="JavaScript">
<!--//ランダムで画像を表示する
var img=new Array(80);


で、複数種類の画像をランダムに表示させるようにしたいんですが、
写真の枚数が20枚くらいだとできるんですが、
上記のように81枚にしてしまうと表示されません。
枚数には上限があるのですか?
464Name_Not_Found:2010/12/30(木) 00:22:08 ID:???
そうです、自分で指定している通り、80 という上限があります。
465Name_Not_Found:2010/12/30(木) 00:52:40 ID:???
終わった話題だが…。

>>458
> for ([initial-expression]; [condition]; [final-expression])
https://developer.mozilla.org/ja/JavaScript/Reference/Statements/for の事だと思うが、正確には
for ( var VariableDeclarationListNoIn; [Expression] ; [Expression]) でも許される。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/12_Statements.html#IterationStatement
MDC も悪くないんだが、信頼性は ES の方が高い。
466Name_Not_Found:2010/12/30(木) 01:01:45 ID:???
for (i=0, j=1, k=0, fib=0; i<50; i++, fib=j+k, j=k, k=fib){
}
467Name_Not_Found:2010/12/30(木) 01:03:38 ID:???
信頼性つーか、仕様書だしなw
468Name_Not_Found:2010/12/30(木) 01:20:17 ID:???
IEのオレオレ仕様には泣けてくる

>>document.body.appendChild(document.createElement("p"));
IE9  "Invalid this pointer used as target for method call" … NG
Fx  <p>       … OK
Chrome <p></p>  … OK

>>document.body.lastChild.appendChild(document.createElement("p"));
IE9  "DOM Exception: HIERARCHY_REQUEST_ERR (3)" … NG
Fx  <p>       … OK
Chrome <p></p>  … OK

>>document.lastChild.appendChild(document.createElement("p"));
IE9  [object HTMLParagraphElement] … OK
Fx  <p>       … OK
Chrome <p></p>  … OK

こんなので2時間も無駄にしてしまったよ全く,と愚痴ってみる
469Name_Not_Found:2010/12/30(木) 01:32:39 ID:???
document.lastChildだと<html>じゃんなんだよもう
470Name_Not_Found:2010/12/30(木) 01:32:54 ID:???
>>468
タイミングの問題ではない?
document.body のDOM構築が済む前に appendChild しようとしているとか。

せめて、どこでエラーを出しているのか原因をはっきりさせた方が良い。
document.body === null だからエラーが出ているとか。
471Name_Not_Found:2010/12/30(木) 01:38:48 ID:???
>>470 タイミングは問題ないはずなんだよね、イベントとコンソール双方で試してるし…
IE9だからなのかな、
>>document.body
[object HTMLBodyElement] {
appendChild : function(element) {},
replaceChild : function(element, reference) {},
insertBefore : function(element, reference) {},
bgColor : "",
background : "",
noWrap : false,
onafterprint : null,
onbeforeprint : null,
onbeforeunload : null,
onblur : null
...
}
>>document.body.appendChild(document.createElement("p"));
"Invalid this pointer used as target for method call"
472Name_Not_Found:2010/12/30(木) 01:45:05 ID:???
ドキュメントモードをIE7かIE8に変えるとうまく動作するのでIE9で仕様が変わった…のかな
473Name_Not_Found:2010/12/30(木) 01:51:11 ID:???
>>471
関係ありそうなところを書くと、こんな感じか。
throw new TypeError が通らなかったら、return body; など好きにして構わない。
コンソールで試すとエラーが発生する行数がわからないから、(X)HTML に埋め込んで試して。

function hoge () {
 var body = document.body;
 var p = document.createElement("p");

 if (!body) { throw new TypeError(body); }
 if (!p) { throw new TypeError(p); }
 if (!body.appendChild) { throw new TypeError(body.appendChild); }
 body.appendChild(p);
}

文書型は何だろう?XHTML1 とか…?
474Name_Not_Found:2010/12/30(木) 02:01:43 ID:???
XHTML なら、

var namespaceURI = 'http://www.w3.org/1999/xhtml';
document.getElementsByTagNameNS(namespaceURI, 'body').appendChild(document.createElementNS(namespaceURI, 'p'));

としたほうがいいかもしれない。
あるいは、内容のないp要素ノードを appendChild できない変則仕様か…。
475Name_Not_Found:2010/12/30(木) 02:02:30 ID:???
>>473
エラーはやっぱりbody.appendChild(p);で発生してます。
文章型はXHTML 1.1です
http://www.dotup.org/uploda/www.dotup.org1328287.png
476Name_Not_Found:2010/12/30(木) 02:09:52 ID:???
>>475
XHTML1.1 なら、

・<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> を宣言してはいけない。
・サーバの設定で「Content-Type: application xhtml+xml;charset=UTF-8」を出力するようにしなければならない。
・text/html は宣言できない。当然、IE8- は対応ブラウザから外れる。
・ローカルテストするなら、file:/// はダメ。http://127.0.0.1/
・script要素は CDATAセクションで括るべき。
477Name_Not_Found:2010/12/30(木) 02:20:20 ID:???
>>476
DOCYTPEをHTML 4.01にして適当な鯖に上げてみたけど
ドキュメントモードを(Quirks後方互換)からIE9標準にするとやっぱり駄目だわ

var namespaceURI = 'http://www.w3.org/1999/xhtml';
document.getElementsByTagNameNS(namespaceURI, 'body').appendChild(document.createElementNS(namespaceURI, 'p'));
も試してみたけど
document.getElementsByTagNameNSで取ってきた物にappendChildが無くて
"オブジェクトでサポートされていないプロパティまたはメソッドです。"と出てきた
478Name_Not_Found:2010/12/30(木) 02:33:11 ID:???
>>477
とりあえず、XHTML1.1 は忘れて。
http://jsbin.com/atena3 は動く?
479Name_Not_Found:2010/12/30(木) 02:45:59 ID:???
>>478
JavaScript Test.しか表示されてません・・

デバッグしてるとどうもネイティブではないコードが混入して動作してるようです

if (isInternetExplorer)
 {
  var appendChildOriginal = doc.body.appendChild;
  doc.body.appendChild = function(element)
  {
  appendChildOriginal(element);←ここでブレーク

コピペ http://ideone.com/zOHaf
480Name_Not_Found:2010/12/30(木) 02:53:24 ID:???
原因がわかりました
DivX Plus Web Player HTML5 <video>というアドオンが原因だったようです…
無効にしたら正しく動作しました

まさかアドオンが原因でおかしくなっていたとは…お騒がせして申し訳ない
481Name_Not_Found:2010/12/30(木) 02:55:37 ID:???
>>480
アドオンが原因だったのか。
何にしても原因がわかって良かった。
482Name_Not_Found:2010/12/30(木) 09:49:28 ID:???
JavaScriptのみでサーバー側にあるcsvファイルやtxtファイルを読み書きすることって可能なのでしょうか?
PHPかCGI使わないとできないですよね?
483Name_Not_Found:2010/12/30(木) 09:58:17 ID:???
CGI(笑)
484Name_Not_Found:2010/12/30(木) 10:03:23 ID:???
CGIは別に間違いじゃないだろ
何を勘違いしたんだい?
485Name_Not_Found:2010/12/30(木) 10:15:25 ID:???
「PHPか」を書かなければ問題なかった
486Name_Not_Found:2010/12/30(木) 12:02:34 ID:???
読みはxhr使うとして書きは何かしらサーバの処理が必要だよね
487Name_Not_Found:2010/12/30(木) 12:36:33 ID:???
PUTメソッドが使えるなら書き込みもできるんでない?
488Name_Not_Found:2010/12/30(木) 12:58:07 ID:???
一応、サーバサイドjavascriptってのはあるよ
使ったことはないけど、確かSQLにアクセスできるのがあったはず
489Name_Not_Found:2010/12/30(木) 12:58:58 ID:???
現状でどの程度それが利用できる環境があるの?
490Name_Not_Found:2010/12/30(木) 12:59:21 ID:???
CSVファイルを細切れに分けて、
未処理のcsvをjavascriptで選択&処理後、適当にPUTすれば
分散コンピューティングかw
491Name_Not_Found:2010/12/30(木) 14:47:47 ID:???
>>464
上限は75枚だよ、嘘書くな。
492Name_Not_Found:2010/12/30(木) 15:10:51 ID:???
>>463で80個確保してるやん。
493Name_Not_Found:2010/12/30(木) 15:19:51 ID:???
>>491
何を根拠に75なんて数字が出てきたんだ
494Name_Not_Found:2010/12/30(木) 15:22:11 ID:???
>>491 は、もっとレスを欲しがっている >>463 自身じゃないかな。
495Name_Not_Found:2010/12/30(木) 15:57:49 ID:???
だとしたら、質問する立場の人間の態度じゃないな。もうレスは受け付けないでおこう。
496Name_Not_Found:2010/12/30(木) 16:07:18 ID:???
>>463
node.js
497496:2010/12/30(木) 16:09:05 ID:???
間違えた。

>>482
node.js
498Name_Not_Found:2010/12/30(木) 16:14:36 ID:???
node.js使えばできるけど文脈からしてそういう意味で質問してないだろう…
499496:2010/12/30(木) 16:16:02 ID:???
>>487,490
PUT を受け付ける側は JavaScript で出来てないのでは?
500496:2010/12/30(木) 16:18:38 ID:???
サーバサイドで動かさないと解決しないことが伝わればいい、と思う。
501Name_Not_Found:2010/12/30(木) 16:22:15 ID:???
それなら最初からそう書けばいいのに
502Name_Not_Found:2010/12/30(木) 17:44:49 ID:???
ちょっと質問

var x = false, y = "";


if(x) { y = "A"; } else { y = "B";}

x ? (y = "A") : (y = "B");

(x && (y = "A")) || (y = "B");

この場合どれが一番高速に動作しますか、3つとも意味はどれも同じです
503Name_Not_Found:2010/12/30(木) 17:46:40 ID:???
IE限定でならデータバインドを使えばできたと思う。
504Name_Not_Found:2010/12/30(木) 18:01:25 ID:???
>>502
3番目が一番遅い。1番目が一番速い。
2番目は値を返す処理の負荷が1番目と差が無ければ1番目と同じ。有れば少し遅い。

いずれにせよ行儀の悪い書き方なので1番目以外の記述はお勧めしない。
505Name_Not_Found:2010/12/30(木) 18:03:17 ID:???
y = (x) ? "A" : "B";

ならまだ許せる
506Name_Not_Found:2010/12/30(木) 18:04:54 ID:???
y = ["B","A"][x-0];
y = "BA".charAt(x-0);
507Name_Not_Found:2010/12/30(木) 18:08:15 ID:???
>>504
なるほどありがとうございました、知りたかっただけなので実際書くつもりはないです
508Name_Not_Found:2010/12/30(木) 18:12:50 ID:???
>>506
アホなコードを書くなよ。x=trueとかx=-1とかが来たらまともに動かないだろ。
509Name_Not_Found:2010/12/30(木) 18:18:17 ID:???
>>508 = アホ
510Name_Not_Found:2010/12/30(木) 18:19:48 ID:???
>>506 じゃないけど、JavaScript では true は、数値の場合 1 に変換されるんだよ。
違和感あるけど。
511Name_Not_Found:2010/12/30(木) 18:24:13 ID:???
Cだとif文より三項演算子の方が速いとか記事みたことあるな
適材適所だと思うからわざわざ>>502を計ろうとは思わないけど
512Name_Not_Found:2010/12/30(木) 18:25:39 ID:???
C言語だと-1に変換されるよね。どこかで規定されているの?それとも実装依存?
513Name_Not_Found:2010/12/30(木) 18:27:15 ID:???
>>511
502の書き方だと速くはならない。
514Name_Not_Found:2010/12/30(木) 18:30:58 ID:???
>>512
true はすべてのビットに 1 が並んだ状態。
これは符号付き 2進数で -1 の扱い。
515Name_Not_Found:2010/12/30(木) 18:36:48 ID:???
>>514
すみません。JavaScriptの1に変換されるっていう場合はどうなっているのですか?
516Name_Not_Found:2010/12/30(木) 18:56:58 ID:???
自然な解釈を超えて、ECMAScript でその様に規定されているだけでは?
517Name_Not_Found:2010/12/30(木) 19:07:16 ID:???
>>499
確かにそうだな。
俺ならサーバー側にPHPを使う。

サーバーサイドJava≠JavaScriptだしな。
あれは英語とドイツ語くらい違うぞ。
518Name_Not_Found:2010/12/30(木) 19:26:14 ID:???
>>516
ECMAScript で規定されていて、ブラウザがそのマネをしているという訳ですか?
519Name_Not_Found:2010/12/30(木) 19:27:59 ID:???
ttp://www.studyinghttp.net/method#PUT
これを読む限りではPUTメソッドはサーバ側が許可していればサーバサイドでの処理は不要
ただレンタルサーバでPUTメソッドを許可しているところは知らないし自前のサーバでもセキュリティ的に難しいっぽい
あとxhrでPUTに対応しているブラウザも限られるみたい

ちなみに
誰もJAVAの話はしていないと思うよ
サーバサイドJavaScript
520Name_Not_Found:2010/12/30(木) 21:39:54 ID:CO9dG8sm
すいません、即効で回答お願いします。

以下のページのJavaScriptをHTMLに貼り付けたのですが
BoundObjectが動作しません。これは同時には動作は無理ですか?
http://www5e.biglobe.ne.jp/access_r/hp/dhtml/dhtml_130.html
http://www2.ocn.ne.jp/~yoochan/decoration/JavaScript/sample/DHTML_samp02.htm
BoundObjectの方はBodyタグの中にはonLoad="init();Bound()"しか記載していません。
521Name_Not_Found:2010/12/30(木) 21:45:15 ID:???
>>520
window.onloadがバッティングしているのでは?
522520:2010/12/30(木) 21:48:32 ID:CO9dG8sm
どうすれば良いですか?
こちらは全くの素人なので具体例を挙げてもらえば嬉しいです。
523Name_Not_Found:2010/12/30(木) 21:52:08 ID:???
524Name_Not_Found:2010/12/30(木) 22:23:51 ID:???
>>502

var x = false, y = "B";
if (x) { y = "A"; }

でもいいか…。
525Name_Not_Found:2010/12/30(木) 22:28:00 ID:???
>>524
その方向に持っていくと最終的に

var x = "A";

でいいや、て結論になってしまう気がする。
526Name_Not_Found:2010/12/30(木) 22:28:19 ID:???
>>506
y = "BA"[x-0];
でいいじゃん!
527Name_Not_Found:2010/12/30(木) 22:28:25 ID:???
>>524
それはtrueの場合yに2回代入するから遅い。
528Name_Not_Found:2010/12/30(木) 22:30:27 ID:???
>>526
それは文法として正しくないのでは?
529524:2010/12/30(木) 22:31:44 ID:???
>>525
多分、x, y ともに可変値という前提があると思う。

>>527
それは気が付かなかった…。
530Name_Not_Found:2010/12/30(木) 22:34:33 ID:???
>>528
あるぇ
531520:2010/12/30(木) 22:34:59 ID:xlPaQvtn
http://individualpackage.blog41.fc2.com/blog-entry-18.html
↑のページでも上手く行きませんでした。
どうすれば良いですか?
532Name_Not_Found:2010/12/30(木) 22:35:07 ID:???
>>528
正確には ES5 なら正しい。ES3 では違反。
533Name_Not_Found:2010/12/30(木) 22:41:22 ID:???
>>531
具体的にどうしたかソースを書くべき
534Name_Not_Found:2010/12/30(木) 22:42:03 ID:???
x の値がBoolean型であることは保証されている(初期化時に型変換するなど)として、

// case(1)
if (x) { alert('ok'); }

// case(2)
if (x === true) { alert('ok'); }

どちらの方が速いのだろう?
(前者は ToBoolean を通すが、Boolean型なら負荷が低そう)
535Name_Not_Found:2010/12/30(木) 22:43:16 ID:???
>>532
そうなんだ。IE8だとエラーになるわ
536Name_Not_Found:2010/12/30(木) 22:51:08 ID:???
>>535
IE8 は ES5 を実装してないから。(IE8 は ES3 でさえ完全には実装してない)
IE9 なら実装しているかもしれない。
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/String
厳密には違うけど、String#charAt と似た機能ではある。
537Name_Not_Found:2010/12/30(木) 22:54:23 ID:???
>>536
そんなものを条件分岐の代わりに使う処理として推奨すべきではないわな
538Name_Not_Found:2010/12/30(木) 22:54:32 ID:???
へー、Cっぽく書ける様になるのか。
539502:2010/12/30(木) 23:07:22 ID:???
>>529
x,y,"A","B"は分かりやすくするための”例え”であって何が入ってるか分からない
(x,y,"A","B"に何を入れても同じように動くようにしたい、bool、number、string、object、functionなど色々)

が前提でした
540Name_Not_Found:2010/12/30(木) 23:19:00 ID:???
>>537
今のところはね。
実装が追いつけばその方がわかりやすい、という人も出てくるだろう。C言語似の記法なことだし。
>>526より>>506の方がより多くのブラウザで動作することは確か。

>>539
その前提なら>>506の前者は条件を満たしてると思う。
541Name_Not_Found:2010/12/30(木) 23:23:49 ID:???
読みやすく書いて
あとはコード最適化ツールへお任せ
542Name_Not_Found:2010/12/30(木) 23:24:40 ID:???
>>540
(function(){}) - 0は NaN 、 {} - 0は 0 なので!!をつけてやる必要がありますね、
それ以外は等価ですが
543Name_Not_Found:2010/12/30(木) 23:27:05 ID:???
あとnumberだと1,0以外の数値を入れれない
544Name_Not_Found:2010/12/30(木) 23:27:53 ID:???
ToNumber() がNaNを返せばいいんだから
"A" - 0 とかもNaNだよ
545Name_Not_Found:2010/12/30(木) 23:29:33 ID:???
>>540
すみません。>>518にはレスが付いてなくて、どこに書いてあるか分からないですが、
ECMAScriptには true は 1に変換される って定義されているのですか?
546Name_Not_Found:2010/12/30(木) 23:36:20 ID:???
9 Type Conversion

9.3 ToNumber
The operator ToNumber converts its argument to a value of type Number according to the following table:

Input Type Result
Boolean The result is 1 if the argument is true. The result is +0 if the argument is false.
547Name_Not_Found:2010/12/30(木) 23:37:26 ID:???
548Name_Not_Found:2010/12/30(木) 23:39:14 ID:???
549Name_Not_Found:2010/12/30(木) 23:45:23 ID:???
>>546
ありがとうございました。
550540:2010/12/30(木) 23:54:53 ID:???
>>542
確かに…。

var x = new Function;
var y = ["B","A"][!!x-0];

Boolean() でもいいけど、好みの問題だね。
551Name_Not_Found:2010/12/31(金) 00:02:51 ID:???
+!!x で良くね? キモいけど。
552Name_Not_Found:2010/12/31(金) 02:14:33 ID:???
こういうのってショートコーディングな分、速くなるのかな?
553Name_Not_Found:2010/12/31(金) 02:16:48 ID:???
そういうのは最適化ツールにまかせてパフォーマンスを考えつつ保守しやすいコード書くのが一番だと思う
554Name_Not_Found:2010/12/31(金) 02:22:06 ID:???
>>552
短いだけで、速くはならないかと
555Name_Not_Found:2010/12/31(金) 02:48:24 ID:DeWcC36b
質問させてください。

var latlng = this.geocoder.geocode({"address":"渋谷"}, function(results, status){
if (status == google.maps.GeocoderStatus.OK) {
latlng = results[0].geometry.location;
return latlng;
} else {
alert(address+"は見つかりません");
return false;
}
});
のような感じで
return latlng
でlatlngをgeocode関数の返り値にできると思ったのですが、コールバック関数内であるためか
chrome, firefoxでは外の latlngがundefined になってしまいました。(IE7だと意図したとおりに動きました。)
コールバック関数内で this.latlngに保存するなどの方法も考えたのですが、できればgeocode関数の返り値にできないかと考えているのですが
どうすればよいでしょうか?
556Name_Not_Found:2010/12/31(金) 03:20:22 ID:???
>>552
ダウンロード時間は短縮されるだろうね。スクリプトの実行速度は別だけど。
557Name_Not_Found:2010/12/31(金) 03:34:19 ID:???
>>555
そもそも、その geocode() メソッドは、コールバックの戻り値をそのまま返す仕様なの?

詳しく知らんからパッと見の感想を言うと、変数 latlng はコールバック関数内で宣言されていないから、
外のスコープの latlng を参照している訳で、return で返すまでもなく、if 節で latlng に代入されてる。

別に、IE で意図した通りに値が返されてる訳ではなく、他のブラウザは else に分岐してるのでは?
558556:2010/12/31(金) 03:38:06 ID:???
違った。
その geocode() メソッドが undefined を返すなら、IE 以外のブラウザの挙動が正しい。
IE で何故 undefined にならないかの方が謎。
559557:2010/12/31(金) 03:40:29 ID:???
違った。
自分のレス番は 557 が正しい。
何で 556 にミスったかは謎。
560Name_Not_Found:2010/12/31(金) 03:41:32 ID:???
>>555
非同期処理なんじゃないか?
561Name_Not_Found:2010/12/31(金) 05:32:51 ID:???
IE7のエンジンが遅くて、コールバックが先に呼ばれたのでは
562Name_Not_Found:2010/12/31(金) 16:05:20 ID:???
IE6以下とその他のブラウザの判定(24bitPNG対応ブラウザの振り分け)ってどうしてますか?
563Name_Not_Found:2010/12/31(金) 16:46:45 ID:???
IEだけ特別扱いなら条件付きコメント
564Name_Not_Found:2010/12/31(金) 17:06:59 ID:???
>>563
条件付コメントは2種類のjsファイルを用意しなければならなかったり、ページにコードを書く必要がありますよね
UAによる判定は偽装可能だし、if(window.XMLHttpRequest)などの実装で判別する方法はテストができません
出来れば最後に書いたようなスクリプト内で判別する方法でセオリーがあれば教えていただけないでしょうか
565Name_Not_Found:2010/12/31(金) 17:22:33 ID:???
>>564
条件付きコンパイル
566Name_Not_Found:2010/12/31(金) 17:58:12 ID:???
<iflame>と同じことを<iflame>なしでjsだけでできますかね?
567Name_Not_Found:2010/12/31(金) 18:06:54 ID:???
iframeに表示させたい情報が同じhostに有るなら問題なし。
568Name_Not_Found:2010/12/31(金) 18:16:00 ID:???
なるほど他ホストだと<iflame>必要なんですね
ありがとうこざいました
569Name_Not_Found:2010/12/31(金) 18:49:06 ID:???
>>565
/*@cc_on 〜 @*/でかこむとIEだけで動作するスクリプトが書けるんですね
ありがとうございました
570Name_Not_Found:2010/12/31(金) 19:05:49 ID:???
>>567
横からだけど、同じhostならiframeなしでいける方法があるの?
571Name_Not_Found:2010/12/31(金) 19:19:32 ID:???
572Name_Not_Found:2010/12/31(金) 19:42:41 ID:???
>>571
どこを見ればいいかよく分からないですが、JavaScriptだけで実現出来ますか?
(ウチが契約しているサーバはCGIなどは使用禁止になってます)
573Name_Not_Found:2011/01/01(土) 01:00:09 ID:???
ajaxってことだろ!
cgi 使えば外部ホストも取り込めそうだが
574Name_Not_Found:2011/01/01(土) 01:32:34 ID:???
>>573
CGIが使えない環境では無理ですか?
575Name_Not_Found:2011/01/01(土) 01:36:50 ID:???
なんだよw
何の質問がしたいのかわからんw
またnode.jsの話題ループになりそうだから詳しく質問してくれ
576Name_Not_Found:2011/01/01(土) 01:40:17 ID:???
>>575
>>572 にちゃんとした回答が出てないよ
577Name_Not_Found:2011/01/01(土) 01:44:32 ID:???
>>576
どゆこと?
>>571だけでわからないだろうから>>573が「ajaxでできるよ」って言ってるみたいだけど。
ajaxはJavaScriptだけで実現できる技術ね
578Name_Not_Found:2011/01/01(土) 01:46:55 ID:???
>>577
サーバーサイドにCGIは必要ないの?
ajaxは昔ちょこっとプログラム作ったことあるけどCGIは必須だと思ったけど勘違い?
579Name_Not_Found:2011/01/01(土) 01:51:13 ID:???
そもそも何がしたいのか分からないから答えようがない
580Name_Not_Found:2011/01/01(土) 02:04:59 ID:???
>>579
CGIが使えない環境下にある>>572 の >実現出来ますか?
って質問にストレートに答えてあげればいいと思うよ。
581Name_Not_Found:2011/01/01(土) 02:11:38 ID:???
<iframe src="test.html"></iframe>と全く同じことしたいって?
それなら
<object type="text/html" data="test.html"></obect>でいいじゃない。
XMLHTTPRequest使っても全く同じにはならないからな
582Name_Not_Found:2011/01/01(土) 02:28:43 ID:???
そもそもiframeとCGIが関係してないから>>571で完結してると思うんだけどな

>>572の質問が曖昧過ぎて答えも曖昧になってるだけで、
「同じhostならiframeでHTMLを取得するようにJavaScriptだけでもHTMLを取得できるか」
って意図の質問なら「ajaxでできるよ」で終わってる
何にこだわってるのかわからないけど、こだわってるならもっと具体例出さないと何とも言えないだろう
583Name_Not_Found:2011/01/01(土) 02:33:02 ID:???
>>582
ajaxでCGIを使っていたら、JavaScriptだけでできることにはならないんじゃない?
584Name_Not_Found:2011/01/01(土) 02:35:29 ID:???
>>583
そもそも「iframeでできること」が前提の話だから
「iframeでCGIが使える」ならajaxでもそうすればいいし、
「iframeでCGIが使えない」ならajaxでも使わない
ってことで直接質問とは関係ない
585Name_Not_Found:2011/01/01(土) 02:50:29 ID:???
>>572
「JavaScriptだけで実現できる」が回答になるけど、それでいいのかしら…。
586Name_Not_Found:2011/01/01(土) 03:14:33 ID:???
>>583
元々xの部分はXMLだからXMLとかHTMLを直接指定してもいいから
CGIは必須ではないよ?
587Name_Not_Found:2011/01/01(土) 03:31:26 ID:???
単純に読み込んでdivで囲んで表示ってことだろうけど、CSSがすげーやっかいそう
588Name_Not_Found:2011/01/01(土) 04:25:56 ID:???
>>566の「<iflame>と同じこと」が何を意味しているのか
589Name_Not_Found:2011/01/01(土) 09:58:32 ID:???
<Input type="checkbox" id="hoge" checked>
このチェックボックスがチェックされているかどうか、値を取得したいのですがどんな感じで出来ますか?
$('#hoge').attr('checked') これかなと思ったのですが、undentifiedになってしまいます。
590Name_Not_Found:2011/01/01(土) 13:00:46 ID:???
jQueryの話ならそれでできる

>undentifiedになってしまいます
とか書いてるあたりからしてあんまり見直しをしない人みたいだから
スペルやHTMLのタグ構造が正しいかもう一度確認してみろ
591Name_Not_Found:2011/01/01(土) 13:05:15 ID:???
それで取れるはずだけど

jQuery(function() {
alert($('#hoge').attr('checked'));
});

jQuery関数使ってみ
592Name_Not_Found:2011/01/01(土) 14:29:05 ID:1Uwe9A/P
スクリプト記述領域間で変数を共有することはできますか?

具体的には
<script type="text/javascript">
<!--
var = test;
// -->
</script>

<script type="text/javascript">
<!--
function add(){
test=test+1;
}
// -->
</script>

のような感じで、上の領域と下の領域で同じ変数testを使いたいのですが、
実現する方法がわかりません。
わかるかたいらっしゃったら、教えてクンニ
593Name_Not_Found:2011/01/01(土) 14:35:42 ID:???
>>592
var = test;
 ↓
var test = 0;
594Name_Not_Found:2011/01/01(土) 14:39:32 ID:???
>>589
俺なら $('#hoge').get(0).checked にする。
attr() だと属性値を見ているのか、プロパティを見ているのかわかりづらい…。
595429:2011/01/01(土) 14:45:53 ID:???
mouseoutの判定の成功報告。こんな感じになりました。ありがと〜
element.onmouseout = function (e) {
  if (!e) e = window.event;
  var to = e.toElement || e.relatedTarget;
  if ((e.target || e.srcElement) == element) {
   while(to){
    // 内側へ移動(mouseout)時 return
    if (to == element) return;
    to = to.parentNode;
   }
   alert("out");
  }
};
596Name_Not_Found:2011/01/01(土) 15:12:29 ID:???
mouseout だけでやろうとするから、複雑で無駄ができる。
mouseover と setTimeout も使えばもっとシンプルになる。
597Name_Not_Found:2011/01/01(土) 15:39:39 ID:???
>>595
俺はこれでいいと思う。setTimeout と組み合わせる方が効率が悪い(と思う)。

あえて指摘するなら、window.event は使わない方がいいな。
attachEvent を利用すれば、IE でも第一引数で event を得られる。
598Name_Not_Found:2011/01/01(土) 16:06:05 ID:???
>>594
その両者を区別する意味ってあるの?
せっかく jQuery.attr() がDOMの属性をラップするように書いてあるんだから
素直に従っておけばいいと思うんだけど。たとえば

var flag = $('#option1').attr('selected');

の代わりに

var flag = $('#option1').get(0).selected;

と書くとブラウザによっては不具合の元になるらしいけど、
少なくとも俺はそこまでいちいち覚えてらんない。
一律 attr() 使った方がはるかに楽だし見やすいし、
第一そうじゃなきゃ jQuery 使う意味がない。

# http://code.jquery.com/jquery-1.4.4.js のL1720〜あたり参照
# Safariには先に親のselect要素のselectedIndexにアクセスしてからじゃないと
 option要素のselected属性が初期化されない、というバグがあるらしい
599Name_Not_Found:2011/01/01(土) 16:07:55 ID:???
>>597
595 のコードではバグが起こり得るのに気付きますか?
600Name_Not_Found:2011/01/01(土) 16:14:13 ID:???
すでにあるコードのバグは有る無しであって、起こりえる、じゃないんじゃないの?
601Name_Not_Found:2011/01/01(土) 16:29:39 ID:???
>>600
条件(今の場合、HTML や CSS)次第で特定のコードが問題になり得るという意味だが、通じないか?
それにバグ(現象)の原因が特定のコードにあるものであって、「すでにあるコードのバグ」こそ意味不明だが。
602Name_Not_Found:2011/01/01(土) 16:39:57 ID:???
>>601
わざわざ「既にある」って書いたのは、未来の話でこれからコードを組もうとしてるときに
「そのやり方ではバグが起こりうる」というなら分かるんだけどなと思って。
この話では既に組まれてる595のコードがあるわけだから「エラーが起こりうるバグが有る」とかじゃないのかなと。
まあ、細かい話なんですが。
603595:2011/01/01(土) 16:47:18 ID:???
>>599
どういう状況だとバグが起こるのか、出来れば教えてもらいたい。
604Name_Not_Found:2011/01/01(土) 16:49:38 ID:???
>>602
JavaScript をブラウザで動かす場合は、必ず DOM も絡んでくる訳で。
今回のケースでも当然、それ次第で、動作に問題が起こったり、起こらなかったり、という話。
595 のコード単体では完結しないかと。
605Name_Not_Found:2011/01/01(土) 16:50:43 ID:???
>>603
子要素が親要素からはみ出していた場合。
606Name_Not_Found:2011/01/01(土) 16:59:43 ID:???
>>597
> attachEvent を利用すれば、IE でも第一引数で event を得られる。
そうなんだ。それはどこで規定されていますか?
http://msdn.microsoft.com/en-us/library/ms536343.aspx

どこにも定義されていないものだったら、バージョンによって
いきなり非対応になるかもしれなくて怖いので教えてください。
607Name_Not_Found:2011/01/01(土) 17:05:39 ID:???
>>605
そういう要素は作る予定はないので、問題ないはずです。

子要素が親要素からはみ出ている場合、どういう状況だとダメなのか良く解らん。
はみ出ている部分からでた時?
if ((e.target || e.srcElement) == element) があるから大丈夫だと思うんだけどな。
608594:2011/01/01(土) 17:08:07 ID:???
>>598
jquery-1.4.4.js のコードを解読できるぐらいのスキルがあるなら、それでもいいと思うよ。

だが、俺は attr() に属性値 (getAttributeのエイリアス) を期待するし、そうあるべきだと思う。
"jquery-1.4.4.min.js" をHTML文書で検証するとこうなる。

<form><p><input type="checkbox" id="hoge" checked></p></form>
<script>
console.log(document.getElementById('hoge').getAttribute('checked')); // ""
console.log(document.getElementById('hoge').checked); // true
console.log($('#hoge').attr('checked')); // true
console.log($('#hoge').get(0).checked); // true
</script>

XHTML文書ではこうなる。

<form><p><input type="checkbox" id="hoge" checked="checked" /></p></form>
<script>
console.log(document.getElementById('hoge').getAttribute('checked')); // checked
console.log(document.getElementById('hoge').checked); // true
console.log($('#hoge').attr('checked')); // checked
console.log($('#hoge').get(0).checked); // true
</script>

見てわかるように、HTML文書とXHTML文書では attr() の出力結果が異なる。
俺としては「jQuery 余計なことすんな」って感じなんだが、感性の違いなんだろうな。
別の考えがあることを否定するわけではないが、俺は attr() を使わない方法をお勧めする
609Name_Not_Found:2011/01/01(土) 17:12:57 ID:???
>>605
本当に?
DOMノードはObject型だから要素のレイアウトは関係ないと思うんだけどな。
610Name_Not_Found:2011/01/01(土) 17:26:28 ID:???
>>607
var to = e.toElement || e.relatedTarget;

これが問題。
子要素がはみ出ていた場合(または一部の端が重なっていた場合)、
そこをマウスが通ると、変数 to が while ループ内で親要素を経由しない。
611Name_Not_Found:2011/01/01(土) 17:45:13 ID:???
>>610
なるほど。そういうことか…!
612Name_Not_Found:2011/01/01(土) 17:57:57 ID:???
(e.target || e.srcElement) == element

この条件式だろうと思ってたが。。。ま、いいか
613Name_Not_Found:2011/01/01(土) 18:12:00 ID:???
入門書によれば、
var a = [10]; // 要素数1、数値が10
とした時に
var a = new Array(10); // 要素数10
と誤って解釈する処理系があると書いてありました。
こうなっちゃう処理系のリストはどこかにありますか?
また、恐らく古いブラウザなんでしょうけど、
これを回避する事は、もう意識しなくても大丈夫でしょうか?
614598:2011/01/01(土) 18:13:37 ID:???
>>608
その差異が「ライブラリの便利機能」になるか「余計なお世話」になるかは
シチュエーションによって異なるはず。んで、

・話の発端である>>589の「チェックボックスがチェックされているか」、
・「セレクトボックスでこの項目が選択されているか」

みたいな判別をしようという場面で、>>594みたいに
あえてDOMのプロパティを直接参照する意味ってどこにあるのか、という話。
ましてや、ブラウザ間の互換性を保つために余計なコードを
自前で用意する羽目に陥るなんて
(『自分で組み込もうと決めた』jQueryの中に同じ処理が用意されているのに!)
ナンセンス極まりないと思う。

そりゃまあ、

・できる限りDOMを見るが(checked属性とかid属性とか)、
・問題が生ずる場合は仕方なしにattr()を使う(selected属性とかtabIndex属性とか)

という立場がないわけでもないけど、それこそjQueryのソースと
各ブラウザの挙動をしっかり把握した人でないとできないことだし、
そしてそれは間違いなくライブラリ側で意図した書き方には沿っていない。
後になってそのコードを読む人が混乱するだけじゃないかなあ。
615Name_Not_Found:2011/01/01(土) 18:35:47 ID:???
>>613
NN4だったと思う
616Name_Not_Found:2011/01/01(土) 18:43:50 ID:???
古代の化石だなw
617Name_Not_Found:2011/01/01(土) 18:46:56 ID:???
>>615
ありがとう。
618Name_Not_Found:2011/01/01(土) 18:49:36 ID:???
>>612
やっと理解できた。
親にしかイベント登録してないのに、子でも検知・しかも親には伝播しないのか。
たしかにはみ出している場合におかしいですね。
ありがとう。
619Name_Not_Found:2011/01/01(土) 19:24:42 ID:???
いや、伝播してるから登録した関数が呼ばれてるんだ。
イベント発生源(target要素)になれるとは限らない、ってことね。
620Name_Not_Found:2011/01/01(土) 19:31:43 ID:???
あぁそうそう、それが言いたかった。ありがとう。
621Name_Not_Found:2011/01/01(土) 22:24:01 ID:???
任意のIDの中の、特定のタグ或いはクラス名の要素に対して操作を行いたいと思っています。
具体的には下記のような記述を行ってみたのですが、どうも反映されません。

<style type="text/css">
.gray{
background-color:#999999;
}
.red{
background-color:#FF0000;
}
</style>
</head>
<body>
<div id="hoge">
<a class="gray" onclick="test()" href="#">test</a>
</div>
<script type="text/javascript">
function test(){
document.getElementById("hoge").getElementsByTagName("a").setAttribute('class','red');
}
</script>
</body>

alertでaタグのvalueを表示する事はできたのですが、
setAttributeでのclass変更ができません。
※確認ブラウザはFirefoxです。

どうぞよろしくお願いいたします。
622Name_Not_Found:2011/01/01(土) 22:34:53 ID:???
ヒント:getElement"s"
623Name_Not_Found:2011/01/02(日) 00:40:38 ID:I8gCiekw
以下のようなスクリプトで、セッションクッキーを設定しています
ブラウザを終了するとセッションクッキーは削除されると思うのですが、Firefox3.6では次回起動時も残ったままです
IE8、Opera11、Chrome8では、ブラウザを終了すると正常に削除されました

Firefoxでセッションクッキーを正常に設定するにはどうすれば良いのでしょうか
Firecookieで確認すると、有効期限は確かに「セッション」となっています

alert(document.cookie);
document.cookie = 'cookie = session';
624Name_Not_Found:2011/01/02(日) 01:53:08 ID:???
セーフモードではどうだろうか
625555:2011/01/02(日) 03:43:42 ID:???
556-561
結局コールバック関数内でself.の変数に入れるのが正しい気がしまして
そうしました。
レスありがとうございましたm(_ _)m
626Name_Not_Found:2011/01/02(日) 04:36:05 ID:???
jQueryの1.4から、getJSONの扱いが厳密になったんだけど、javascriptで不正なJSONを正常なJSONに変換する方法って無いかな?
627Name_Not_Found:2011/01/02(日) 04:53:11 ID:???
textで受け取ってevalかなぁ
628623:2011/01/02(日) 13:09:10 ID:I8gCiekw
>>624
ありがとうございます
Firefoxはセッションクッキーが永久に消えないバグ(Bug 443354)があるようです
終了するときにタブを保存する設定にしてしまったため気付きませんでした
失礼いたしました
http://www.on-sky.net/hs/index.cgi?date=200911
629Name_Not_Found:2011/01/02(日) 20:37:27 ID:bTCRVtPI
faceboxに似たダイアログのpluginって他にないでしょうか?(できればjqueryで・・)
公式ページ見ると、jqueryの1.4系には対応して用な感じに見えます。

<a href = "/comments/new" rel="facebox">
みたいに書くと、自動でfaceboxのダイアログをポップアップしてくれて便利だったので
これと同じようにrelを使って書けるものがないかと探しております。

jquery ui dialogも触ってみたのですが、たぶんこれはrel形式での指定に
対応してないような感じがします。
630Name_Not_Found:2011/01/02(日) 21:23:53 ID:???
ある本で、何度もRegexpと書かれていましたが、
実際はRegExpでした(Expの頭も大文字)。
これ、実際にRegexpだった時代や処理系があったんでしょうか?
それとも、そういう歴史的経緯はなく、ただ単に本のミス?
631Name_Not_Found:2011/01/02(日) 21:37:10 ID:???
>>629
rel属性使っちゃダメだろ……
632Name_Not_Found:2011/01/03(月) 00:44:15 ID:???
>>630
監修で有名な人がついてるならともかくそのへんの普通の本は鵜呑みにしないこと
俺やあなたのような人が適当にBlogで書いてるのだって目につけば出版されうる業界
633Name_Not_Found:2011/01/03(月) 02:03:06 ID:???
検索した感じだと、Ruby がそういう表記をするのかな。
Ruby の知識はないから知らないけど。
できれば、その本のタイトル(と著者)を教えて欲しい。
634629:2011/01/03(月) 20:11:17 ID:m5z8QgrE
>>631
relって使っちゃいけないんですか?
635Name_Not_Found:2011/01/03(月) 20:30:36 ID:???
>>634
文書型がわからないのだが、HTML4 では rel="facebox" は規定外。
ttp://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/types.html#type-links
636Name_Not_Found:2011/01/04(火) 16:57:41 ID:SHlZLGkU
久々にJS触ったんだけど、今はprototype.jsなんか使わずに、jQueryを皆使ってるんですか?
Ajax用に使うならばやっぱPrototypeよりjQueryの方がいいのでしょうか?
ソースコードをざっと見てみましたが、jQueryの方が小さくて、コレで本当に色んな事が出来るんだろうかと思ってしまいましたが、やっぱjQueryの方が何らかの利点が大きいからメインになっているのでしょうね?
637Name_Not_Found:2011/01/04(火) 17:19:26 ID:???
自分で使ってみるのが一番手っ取り早いと思うけど。

・DOMを汚さない、軽い
・アニメーション機能
・CSS風セレクタ(これはjQueryじゃなくてSizzleだけど)
・拡張性が高く、またプラグインの作り方についてのガイドラインが形成されている
 (誰が作ったものであってもあまり違和感なく利用できる)

あたりじゃないかな。
とにかく比較するとやっぱ使いやすい。
638636:2011/01/04(火) 17:27:07 ID:SHlZLGkU
確かに使ってみる事は重要ですが、一応人の感想も参考にしたいと思いまして
自分では気がつかない点もあるかもしれませんので

自分もざっと書店でのjQueryを見ましたが、基本的に>>637で指摘されているような点を感じました
特にアニメーション、デザイン系が(目立つから?)多く載っていたように思いました

ちなみにAjax利用の観点からだといかがですか?
後は、(まぁ大丈夫だと思いますが)ブラウザ間の差異とか
639Name_Not_Found:2011/01/04(火) 17:42:28 ID:???
prototype.jsはXHRを薄くラップしている(そこに機能追加してる)のに対し、
jQueryはなるべくその辺を意識しないでいいような作りになってる。

http://semooh.jp/jquery/api/ajax/jQuery.ajax/options/

好き嫌いはあるにせよ、とりあえずタイプ量はこっちの方が減る。
あとブラウザ間で差異(少なくとも、それがjQueryのバグであると見なされるような)が
出て困ることはまずないと思う。
640Name_Not_Found:2011/01/04(火) 20:00:24 ID:???
ちょっと失礼します。

OperaのエクステンションやFirefoxのアドオンの有無を調べることとかできますでしょうか。可能ならば方法も提示頂きたいです。
テキストボックスにフォーカスしたときに回りにSafariやChromeのような枠を表示させたいのですが、重複は邪魔でしょうから分岐したいのです。

よろしくお願いします。
641Name_Not_Found:2011/01/04(火) 20:05:12 ID:???
権限の都合でたぶんムリ
642Name_Not_Found:2011/01/04(火) 20:06:44 ID:???
>>641
640です。もう少し詳しくお聞きしたいのですが、フォーム部品に枠を表示させることに権利がいるということでしょうか。
643Name_Not_Found:2011/01/04(火) 21:03:26 ID:???
>>642
やだなあアドオンのことに決まってるじゃないですか
644Name_Not_Found:2011/01/04(火) 21:48:47 ID:???
この様なときのための王道があるじゃないか。
基本を忘れてはいけない。

つ prompt()
645Name_Not_Found:2011/01/04(火) 21:57:51 ID:???
とりあえずFirefoxの話をすると、アドオンをJavaScriptで書くことはできるが、
(ローカルのファイルにアクセスできたりすることからも分かるように)
そのスクリプトはwebページのスクリプトとは別の特権モードで動くことになる。
で、セキュリティの都合上、後者は前者に干渉することはできないはず。
アドオンが明示的にdocumentに対して何かプロパティを注入するようなことをしていれば
話はまた別だけど、それはアドオンがそう作ってあるからであって、一般論としては無理。
646Name_Not_Found:2011/01/05(水) 17:39:42 ID:???
forを使ったりstyleタグをhtmlに挿入したりせずに.style=みたいな雰囲気で、
styleタグの*や+や>のような指定をすることはできますでしょうか?
できたらやり方を教えていただけるとありがたいです
お願いします
647Name_Not_Found:2011/01/05(水) 17:51:36 ID:???
できません
648Name_Not_Found:2011/01/05(水) 21:11:51 ID:???
DHTMLのお勧め本ありませんか?
難しくなく、サンプルがたくさん載っているのがいいです
649Name_Not_Found:2011/01/05(水) 21:25:42 ID:???
人にお勧めできるレベルの本となるとDHTMLだと1つだけ、英語だけど
http://www.amazon.co.jp/dp/0596527403
分かりやすいかは見て確かめて
650Name_Not_Found:2011/01/05(水) 21:28:18 ID:???
いや、適当な選択でいいので日本語でお願いします
651Name_Not_Found:2011/01/05(水) 21:29:12 ID:???
あと、初心者向けで選んでください
652Name_Not_Found:2011/01/05(水) 21:34:50 ID:???
「おすすめ」を「適当」って矛盾してないか
653Name_Not_Found:2011/01/05(水) 21:36:06 ID:???
じゃあ、気楽に選んでくださいに変更します
654Perlマスター ◆M5ZWRnXOj6 :2011/01/05(水) 21:40:31 ID:zkb8Cye7
まだこんな ク ソ ス レ あったのですね(笑)

とてつもじゃないですが ク ソ ですよ

あの本気で書き込みしているのですか?

本気になるのはかっこいいです、ひとつのことに熱中している感じで

それとですね 649みたいな グ ズ やろうは早く死んでください

とりあえず市ねってことだこら
655Name_Not_Found:2011/01/05(水) 21:43:48 ID:???
「ダイナミックHTMLでつくるホームページ」
「DynamicHTMLがやってきた!」
「インサイド Dynamic HTML」
この三つのどれにしようかと考えているのですが、どれがいいでしょうか?
656Perlマスター ◆M5ZWRnXOj6 :2011/01/05(水) 21:45:00 ID:zkb8Cye7
>>655
うるせーばーか 死ね

死ねよ早く?死ね
657Name_Not_Found:2011/01/05(水) 21:45:12 ID:???
あとはサイ本ぐらいじゃね、まともな本は
JavaScriptに関する本は選ぶのが難しい
658Name_Not_Found:2011/01/05(水) 21:46:01 ID:???
Perlマスターさんはどこ見て喋ってるんですか?
頭悪いのか?
659Perlマスター ◆M5ZWRnXOj6 :2011/01/05(水) 21:46:02 ID:zkb8Cye7
サイ本なんてまともじゃねえよぐず
本の書き方がへたすぎ

消えろぐずども
660Perlマスター ◆M5ZWRnXOj6 :2011/01/05(水) 21:47:31 ID:zkb8Cye7
ウヒイイイイイイイイイイイイイイイイイイイイイイイイブヒヒヒヒ!!!!!!!!!!!!!!!!
なんでこんなスレあるのかなあ?wwwwwwwwwwwwwwwwwwww
(笑)wwwwww(笑)wwwwwwwwwwwwウヒイイイイイイイイイイイイイイイイイイイイイイイイブヒヒヒヒ!!!!!!!!!!!!!!!!
なんでこんなスレあるのかなあ?wwwwwwwwwwwwwwwwwwww
(笑)wwwwww(笑)wwwwwwwwwwwwウヒイイイイイイイイイイイイイイイイイイイイイイイイブヒヒヒヒ!!!!!!!!!!!!!!!!
なんでこんなスレあるのかなあ?wwwwwwwwwwwwwwwwwwww
(笑)wwwwww(笑)wwwwwwwwwwwwウヒイイイイイイイイイイイイイイイイイイイイイイイイブヒヒヒヒ!!!!!!!!!!!!!!!!
なんでこんなスレあるのかなあ?wwwwwwwwwwwwwwwwwwww
(笑)wwwwww(笑)wwwwwwwwwwwwウヒイイイイイイイイイイイイイイイイイイイイイイイイブヒヒヒヒ!!!!!!!!!!!!!!!!
なんでこんなスレあるのかなあ?wwwwwwwwwwwwwwwwwwww
(笑)wwwwww(笑)wwwwwwwwwwwwウヒイイイイイイイイイイイイイイイイイイイイイイイイブヒヒヒヒ!!!!!!!!!!!!!!!!
なんでこんなスレあるのかなあ?wwwwwwwwwwwwwwwwwwww
(笑)wwwwww(笑)wwwwwwwwwwwwウヒイイイイイイイイイイイイイイイイイイイイイイイイブヒヒヒヒ!!!!!!!!!!!!!!!!
なんでこんなスレあるのかなあ?wwwwwwwwwwwwwwwwwwww
(笑)wwwwww(笑)wwwwwwwwwwwwウヒイイイイイイイイイイイイイイイイイイイイイイイイブヒヒヒヒ!!!!!!!!!!!!!!!!
なんでこんなスレあるのかなあ?wwwwwwwwwwwwwwwwwwww
(笑)wwwwww(笑)wwwwwwwwwwww
661Name_Not_Found:2011/01/05(水) 21:47:53 ID:???
どこまで知識を得たいのか
ちょっと触るだけぐらいなら評価が高いの選べばいいと思うけど
662Perlマスター ◆M5ZWRnXOj6 :2011/01/05(水) 21:48:59 ID:zkb8Cye7
暇なやつ教えてやれよ?wwwwwwwwwwww

な?wwwwwwwwwwwそんな掲示板でいちいちやるより
チャットとかで教えたほうが効率いいだろぐずが
663Name_Not_Found:2011/01/05(水) 21:54:05 ID:???
>>662
よかったら教えてください
まだ初心者なので、よくわからないです
664Name_Not_Found:2011/01/05(水) 21:56:18 ID:???
書いてない書いてない
665Name_Not_Found:2011/01/05(水) 21:57:28 ID:???
javascriptができる人より、Perlができる人のほうが凄いですね
666Name_Not_Found:2011/01/05(水) 22:01:28 ID:???
両方できるけど、どれだけ役立てられるかが問題であって、どっちが凄いとかは無いから。
667Name_Not_Found:2011/01/05(水) 22:03:15 ID:???
Perlとかjavascriptとか関係なくキチガイが一匹いるなってだけ
668Name_Not_Found:2011/01/05(水) 22:04:10 ID:???
Perlの印象を悪くするための工作じゃないの
669Name_Not_Found:2011/01/05(水) 22:04:31 ID:???
もう、いいです
「DynamicHTMLがやってきた!」を買うことにします
670Name_Not_Found:2011/01/05(水) 22:15:35 ID:???
>>660

671Name_Not_Found:2011/01/06(木) 07:14:56 ID:???
>>662
一番暇な奴がw
672Name_Not_Found:2011/01/06(木) 08:23:44 ID:???
いまどき「Dynamic HTML」という言葉が使われているという
こと自体、その本が大丈夫なのかという不安をかきたてる材料
でしか無いような気がする。10年前のコトバだよねえ。
673Name_Not_Found:2011/01/06(木) 09:43:00 ID:???
しかも「やってきた!」だからなw
ものすごい時代を感じるぜ・・・
最近の本なら怪しさ全開
674Name_Not_Found:2011/01/06(木) 09:44:21 ID:???
発行年月 :1998年4月

        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
     ̄
675Perl忍者 ◆M5ZWRnXOj6 :2011/01/06(木) 09:53:25 ID:???
Perlの印象を悪くしてどうするんだよ^^;
676Name_Not_Found:2011/01/06(木) 11:27:13 ID:???
言われても気づけないなら病院行った方がいい、真剣に
677Name_Not_Found:2011/01/06(木) 11:49:03 ID:oRVBY5di
>>672
まあそうなんだけど表示をJSでヌルヌル動かすアレ、
の総称がDHTML以外なくね?

WEBに疎い広告代理店の人とか、打ち合わせで平気でAjaxって言ったり
下手すると見積とか請求とかの項目にもAjaxって書いてることもある

お客さんに詳しい人がいたら絶対問題になって
結果として下請けの自分が怒られたりするんだろうな…
678Name_Not_Found:2011/01/06(木) 11:56:05 ID:???
>>673
「ヤア!ヤア!ヤア!」がついてたら買ったかも
679Name_Not_Found:2011/01/06(木) 13:53:53 ID:???
>>677
今は「JavaScriptでアニメーション」とかそういう風に言うなぁ
DHTMLは逆に疎い人に通じないから使う機会がない
DHTMLって言葉知ってる人は逆にDHTMLなんてわざわざ使わないし。
あとはデータのやり取りすればAjaxって言うな
680Name_Not_Found:2011/01/06(木) 14:49:20 ID:???
DHTMLはCHTMLの次の規格だよ!
681Name_Not_Found:2011/01/06(木) 15:04:46 ID:oRVBY5di
>>679
ああ、JSアニメは言いますな
682Name_Not_Found:2011/01/06(木) 16:45:19 ID:???
参考書選びのキーワードでいえば、今は "DOM" になるんじゃないかな。
"ECMAScript" の参考書(和書)は見たことがないが、DOM ならいくつか知ってる。
683Perl忍者 ◆M5ZWRnXOj6 :2011/01/06(木) 17:51:10 ID:???
僕もJavaScriptやっていいですか?
684Name_Not_Found:2011/01/06(木) 17:59:58 ID:???
>>333-336
ありがとう。おかげで助かりました。
685Perl忍者 ◆M5ZWRnXOj6 :2011/01/06(木) 18:01:23 ID:???
僕もJavaScriptやっていいですか?
686Name_Not_Found:2011/01/06(木) 20:44:38 ID:oRVBY5di
なんでニュー速+のHTMLに書かれたJSが発火しちゃうのはどうしてなんだぜ?
687Name_Not_Found:2011/01/06(木) 21:02:28 ID:???
なんでなんでなんで
688Name_Not_Found:2011/01/06(木) 21:06:16 ID:???
IEコンポーネント使ってりゃなあ
689Name_Not_Found:2011/01/07(金) 09:15:34 ID:???
Ajaxについて質問させてください
例えばボタンをクリックすることにより非同期で数ページを切り替えるようなものは多いですが、その場合ページ全体のロード時間は
一般的な<a>リンクによりページ全体が移動する場合と比べてやはり長くなるのでしょうか?
もし非同期による各表示ページが大きなコンテンツを含む場合、その1ページは非常に遅くなりそうな気がするのですが

また、prototypeとjQueryでは同じようなイベントを実行させた場合、処理速度はどちらが早いのでしょうか?
690Name_Not_Found:2011/01/07(金) 09:32:41 ID:???
>>689
Ajaxの利点はページ全体をロードせず必要な部分だけ取得することで待ち時間を減らすことだから
ページ全体取得するんだったらページ遷移した方がいい場合もあるよ
データを取得するための通信時間は変わらないんだし。

> また、prototypeとjQueryでは同じようなイベントを実行させた場合、処理速度はどちらが早いのでしょうか?
これは色々言われてるしバージョンによっても違うだろうからベンチマークやってるサンプルとかで自分で試した方が確実
691Name_Not_Found:2011/01/07(金) 11:13:13 ID:???
あとAjaxでページ書き換えるとブラウザの戻るボタンで戻れないからな
これコンテンツによってはユーザーがかなり不便に感じるから注意
692Name_Not_Found:2011/01/07(金) 11:32:04 ID:???
>>691 jquery の場合 jquery.history.js とか使えばいいのでは?対応ブラウザ限定だったりするのかな
693Name_Not_Found:2011/01/07(金) 12:04:59 ID:???
>>692
>>691は「技術的にある程度解決できるけど特徴としてそういうことがあるよね」ってことがいいたいんだと思うよ
ちょっとページ書き換えるくらいの処理でわざわざパーマリンクつくらないでしょう
694Name_Not_Found:2011/01/07(金) 14:02:54 ID:???
>>686
は?って思ったけど、運用情報久しぶりに行ったらおかしなことになってるんだな
695Name_Not_Found:2011/01/07(金) 15:47:51 ID:???
質問です、2点ほど。

a.htmlの中にiframeを設置してb.htmlを読み込んでいるとします。

この場合、a.htmlのonloadは、
1) iframeの中のb.htmlも含めて読み込みが完了した時点ということになる
2) b.htmlは関係なく、a.htmlのみが末尾まで読み込まれた時点ということになる
どちらになるのでしょうか?

自分で適当なサンプルを作って試そうとも思ったのですが、
iframeの中の、b.htmlの読み込み完了をa.htmlから取得する方法でつまづきました。
親であるa.htmlから、b.htmlのonloadを取得することは可能でしょうか?

どなたかアドバイスいただけると嬉しいです。
696Name_Not_Found:2011/01/07(金) 15:53:40 ID:???
>前者
両方のonloadにalert入れればいいんじゃね?

iframe.contentWindow.document.readyStateとか。
697Name_Not_Found:2011/01/07(金) 16:28:45 ID:???
>>696
難しく考えすぎてました、onloadのalertで実際に試して確認してみます。

contentWindowとかreadyStateとかは知らなかったので助かりました。
検索して調べてみようと思います。

レスありがとうございました。
698Name_Not_Found:2011/01/07(金) 18:49:45 ID:???
ここでときどき名前が挙がるnode.jsというものは
apacheのモジュールとして組み込むようなものなんですか?これ自体がhttpサーバなんですか?
レンタルサーバで利用するにはルート権限が与えられていないと駄目なものですか?
とまったく知識もないので今すぐ使いたいわけではないのですが
これに未来はありますか?
個人向けレンタルサーバで最初から利用できるようになるのはずっと先のことですか?
先どころか個人向けだと使えるようになることはなさそうな感じですか?
699Name_Not_Found:2011/01/08(土) 00:33:10 ID:I6NGdY4g
>>698
んなこたないよ
安く上げたいんだったらVPSとかつかえば
webサーバも自分でいじれるじゃん

スレ違いだから詳しくはレン鯖の板なりスレなりで
700Name_Not_Found:2011/01/08(土) 04:15:13 ID:???
WebProg初心者板に書き込んでましたが、こちらを勧められて再度書き込みます。

javascript でjplayerを使ってmp3再生を試みていますが、再生されません。
下記のプログラムでどこに問題がありますでしょうか。

下記プログラムと同じ階層にjsフォルダを作り、その中にjquery.jplayer.min.jsとJplayer.swfを入れています。
firebugで確認したところ、上記2ファイルはちゃんと読み込まれているようですが、Flashが読み込まれていないようです。
swfPathでjsフォルダを指定しているのに、なぜflashが読み込まれていないのか、よくわかりず行き詰っています。
アドバイスいただければと思います。

環境は次のとおりです。
windows xp version 2002 sp3、Eclipse IDE for JavaScript Web Developers.
Core 2 U7500 1.06GHz、1.49GB RAM

<html xmlns="http://www.w3.org/1999/xhtml"><head><title>test</title>
<link href="js/jplayer.blue.monday.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script src="js/jquery.jplayer.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$('#jquery_jplayer').jPlayer({
ready:function(){
this.jPlayer("setMedia","music.mp3").jPlayer("play");
},
swfPath: 'js'
});
});
</script></head><body><div id="jquery_jplayer">test</div></body></html>
701Name_Not_Found:2011/01/08(土) 05:33:57 ID:???
thisが$(this)な気がする
702Name_Not_Found:2011/01/08(土) 09:01:26 ID:???
jqueryで$(".name").html(item.name);
するとchoromeだけレイアウトが崩れます
解決方法ありませんか?
703Name_Not_Found:2011/01/08(土) 09:07:17 ID:???
あ、jqueryのバージョンは1.3.2です
704Name_Not_Found:2011/01/08(土) 09:11:56 ID:???
最新のjQueryでも同じでした
705Name_Not_Found:2011/01/08(土) 09:22:06 ID:???
もう少し具体的に書くと横幅固定のテーブルの中で左寄せした<span>の中に
文字列を流し込むと領域が1文字分に固定され縦長のレイアウトになってしまいます。
ちゃんと一度に書くべきでした。申し訳ありませんでした。
706Name_Not_Found:2011/01/08(土) 11:58:39 ID:M1d21onB
質問です。
ブログの新着情報をRSSで表示したいと考えておりますが、時間の表記の方法がわかりません。
Fri, 07 Jan 2011 11:44:38 -0800
となってしまいます。
2011年1月7日(金)11:44
としたいです。
初心者です。よろしくおねがいします。

<script type="text/javascript">
function loadFeed() {
var feed = new google.feeds.Feed("http:/○○");
feed.setNumEntries(5);
feed.load(function(result) {
var html;
if (!result.error) {
html = '<h1><a href="' + result.feed.link + '"></a></h1>';
if (result.feed.entries.length) {
html += '<ul>';
for (var i = 0; i < result.feed.entries.length; i++) {
var entry = result.feed.entries[i];
html += '<li><a href="' + entry.link + '">' + entry.title + '</a><br />';
html += entry.publishedDate + '</a><br />';
707Name_Not_Found:2011/01/08(土) 12:19:07 ID:???
>>706
「publishedDate」で一発だったわけだが?
http://www.ajaxtower.jp/googleajaxfeed/feed/index5.html
初心者だからってググらなくていい理由にはならん。もっと頑張れ。

あと個人的には<script>タグなんかやめてほしい。
708Name_Not_Found:2011/01/08(土) 17:27:11 ID:???
>>707
>あと個人的には<script>タグなんかやめてほしい。
えっ、どうやってスクリプトをページに読み込むの?
709Name_Not_Found:2011/01/08(土) 17:38:12 ID:???
分離しましょう
710Name_Not_Found:2011/01/08(土) 17:40:50 ID:???
分離した場合<script>以外で読み込める?
711Name_Not_Found:2011/01/08(土) 17:47:34 ID:???
ベダ書きやめろって事だろ言わせんな恥ずかしい
712Name_Not_Found:2011/01/08(土) 17:59:24 ID:???
もしかして: ベタ書き ・・・いやすまん。HTML内直書きやめろってことな。
「<script>タグつかうな」じゃ初心者はふつうに混乱しそう。
でもHTML内記述でいいケースはあると思うが。
713Name_Not_Found:2011/01/08(土) 18:37:30 ID:???
>>711
ほんと、恥ずかしい奴だなw
714Name_Not_Found:2011/01/08(土) 18:39:57 ID:???
質問者もテスト用のコードでそんなところを突っ込まれるとは予想も付かなかっただろう
715Name_Not_Found:2011/01/08(土) 19:22:26 ID:???
scriptタグのベタ書きは必要になるケースもあるんだなこれが
716Name_Not_Found:2011/01/08(土) 19:23:40 ID:???
古いブラウザがまだ多いからなぁ
717Name_Not_Found:2011/01/08(土) 20:48:10 ID:???
自分用の小物を作るときは、一つのファイルの中で
PHPとJSとCSSとHTMLを完結させた方が管理しやすくていいだろ
718Name_Not_Found:2011/01/08(土) 21:09:52 ID:???
例示用ならむしろそうするべきだな
719741:2011/01/08(土) 21:32:55 ID:???
ttp://www.dotup.org/uploda/www.dotup.org1347932.zip.html
↑を解凍して出てくる15.htmlを実行し、スタートを押すと一枚の画像が分割されたものが表示されるので、
それを自動で解く(images/15puzzle.jpgの状態にする)ような機能を実装させようと考えています
問題を解くどころか自動で動かすにはどうしたらよいのかさえわからないので、どのようにしたらよいのか悩んでいます
どうぞご教授お願いします
720719:2011/01/08(土) 21:34:25 ID:???
すいません、名前間違えました…
721Name_Not_Found:2011/01/08(土) 22:13:11 ID:???
15パズル・・・・。好きなパズルだわ。
手動でサクサク解くのが楽しいんじゃないか。
無粋なことはやめれ。
722Name_Not_Found:2011/01/08(土) 22:15:35 ID:???
getIntervalで同じオブジェクト内の
関数を呼び出すのって無理なの?
723Name_Not_Found:2011/01/08(土) 22:20:26 ID:???
setInterval の第一引数に渡す function 内に this を書いていると予想。
それなら Global オブジェクト(window) になる。
724719:2011/01/08(土) 22:32:35 ID:???
>>721
自分で解いた場合とプログラムに解かせた場合、手数にどれほどの差があるのか気になったので…
4×4だけではなく5×5やそれ以上のときにどうなるか、なんてことも考えてます
その為に縦マス横マスの数を変えられるようにしてあるんですw(>>719のは書き加えていないものをUPしてしまいましたが)
725Name_Not_Found:2011/01/08(土) 22:54:57 ID:???
うぼおおおおあああああああああああ
うごいたようごいたひゅうううううううう
ありがとう723感動した
726Name_Not_Found:2011/01/08(土) 23:58:07 ID:???
最短の手で解くってことなら、正解の状態を定義してアルゴリズムをJSで描かなきゃだよ
自動で動かすことも出来ないのでは難しいと思う
727707:2011/01/09(日) 00:14:38 ID:???
なんかごめん。
728Name_Not_Found:2011/01/09(日) 00:22:04 ID:???
このスレに教授はいらっしゃいますかー?
729Name_Not_Found:2011/01/09(日) 00:22:44 ID:???
大変です!ねぎやんがいません。
メールを送ってもメールが帰って来ます。
変わりにこのスレの人たちで答えてください。

以下、メール本文
−−−−−−−−−−−−−−−−−−−−
こんにちわ!DHTMLのトランジションを検索して辿り着きました。

以下のページについて質問します。
http://www5e.biglobe.ne.jp/~negiyan/shtm/private/scripts_dhtm.html
トランジション効果ですが、ploadをonloadに変えて、ページ読み込み時に
効果が現れるようにしました(Scriptの知識はほとんどなく適当)。
それで、上手く行ったので、複数画像にトランジション効果を付けてみることに
しました。すると、画像が表示されないで失敗します。
どうすれば良いでしょうか?

大変、面倒だと思いますが暇な時で結構なのでお教えください。
730Name_Not_Found:2011/01/09(日) 00:28:03 ID:???
まかせろ、ねぎやん見つけた。

http://orange.ap.teacup.com/seychelles/
731Name_Not_Found:2011/01/09(日) 01:40:52 ID:???
もう、寝ます。
起きたら答えられているようにしておいてください。
732Name_Not_Found:2011/01/09(日) 07:11:41 ID:???
>>719
dispatchEvent で解けないかな?
733Name_Not_Found:2011/01/09(日) 07:32:08 ID:???
話に乗り遅れたがscriptを外部ファイルではなくベタ書きにする理由はちゃんとあるぞ
1リクエスト減らせる
転送量の多いサイトでは最適化として適法
734719:2011/01/09(日) 11:02:35 ID:???
>>726
最短の手で解くことにはこだわってないです
それで出来た方が良いのでしょうが、今は自動で解く動作を実装するのが一番なので…
難しいみたいですが、もう少し頑張ってみます

>>732
dispatchEventがどんなものかを調べてみたのですが、
完成の形をこれで呼び出して解かせる、ということでしょうか?
735Name_Not_Found:2011/01/09(日) 12:26:28 ID:???
最短手順に拘らないならパネルを入れ替えた経緯を保持しておくといい。
逆に辿れば解にたどり着く。

-----------------------------------------
while(isFinished()){
 /* 1000回シャッフルする */
 for(i=0;i<1000;i++){
  //略
  if((0<=tmpCellX)&&(tmpCellX<cellNumX)&&(0<=tmpCellY)&&(tmpCellY<cellNumY)){
   /* 空きマスと隣のマスのパネルを入れ替える */
   panelID[emptyCell]=panelID[tmpCellX+tmpCellY*cellNumX];
   panelID[tmpCellX+tmpCellY*cellNumX]=emptyPanelID;
   emptyCell=tmpCellX+tmpCellY*cellNumX;

   hogeArr.push(emptyCell); // emptyCell保持
  }
 }
}
-----------------------------------------

var hogeArr = [];
function hoge() {
var n = hogeArr.length - 1;
var id = setInterval(function () {
if (n >= 0) {
clickPanel(hogeArr[n]); // パネル選択
n -= 1;
} else clearInterval(id);
}, 100);
}
736Name_Not_Found:2011/01/09(日) 12:59:24 ID:???
先生! >>735君がカンニングしています!
737Name_Not_Found:2011/01/09(日) 14:36:22 ID:???
XPathで、式にマッチするノードがひとつしかない場合、
resultTypeはANY_UNORDERED_NODE_TYPEとFIRST_ORDERED_NODE_TYPEのどっちを指定すればいいですか?
ひとつしかないなら得られる結果は同じだと思いますが、それでも何か良し悪しとかあるのかなと。
速さとか、もしものときの誤爆を回避しやすいとか。
どっちにしていますか?
738719:2011/01/09(日) 16:42:49 ID:???
>>735
それですと100回シャッフルしたら100手に、1000回シャッフルしたら1000手になってしまいます
プログラム自体は完成形→シャッフルでバラバラの状態にしていますが、
その状態から解くときは巻き戻しではない方法で解かせたいのです
言葉足らずですいません
739Name_Not_Found:2011/01/09(日) 17:03:31 ID:???
ACBをABCに並べ替える方法が定石だ
その動かし方のパターンを調べて
最後にブランクが来るマスの対角線から
一つづつ並べていけばいいだけじゃん
740Name_Not_Found:2011/01/09(日) 17:24:22 ID:???
>>738
おぃおぃ「>>735で解けるなんてハナから分かってる」的なセリフだな。
「言葉足らず」?そうじゃないだろ。書いたこと読み返してみろ。


>>719
>問題を解くどころか自動で動かすにはどうしたらよいのかさえわからない

>>734
>最短の手で解くことにはこだわってない
>自動で解く動作を実装するのが一番


解くときは巻き戻しではない方法で解かせたい?んなことは分かってんだよ。
>>734がなければ書きはしない。

言っておくけど、最短手に拘らなければプログラム的価値は「巻き戻し」と大した差はねぇよ。
741733:2011/01/09(日) 17:41:47 ID:???
>>734
そういうこと。流用可能な部分は流用した脳が楽だからね。
742Name_Not_Found:2011/01/09(日) 17:51:15 ID:???
毎回ランダムな試行を繰り返しまくって正解を導くってことか。
1億手くらいで奇跡的に正解に辿り着くかな?
それを何回も繰り返し行って、最善の手となる動きをプログラムに記憶させることで、簡単な知能は作れるかも。
どう記憶させるかみたいなアルゴリズムを作るくらいなら、>>726でいいと思う
743719:2011/01/09(日) 19:21:23 ID:???
>>740
そのような意味で書いたのではありません
>>724
>自分で解いた場合とプログラムに解かせた場合、手数にどれほどの差があるのか気になった
と書いたとおり、解いたときの手数の差がどの程度か気になったので質問しました

>>734の書き込みで誤解を招いてしまったようで申し訳ないです
744Name_Not_Found:2011/01/09(日) 20:32:37 ID:???
「毎回ランダムな試行を繰り返しまくって正解を導く」って、
まさにボゴソートじゃないか。
745Name_Not_Found:2011/01/09(日) 20:39:20 ID:???
>>743
>自分で解いた場合とプログラムに解かせた場合、手数にどれほどの差があるのか
自分で解く場合の解法をプログラミングしてその通りに動かすだけだから、
最適解を求めるのでなければ差は有りません。
746Name_Not_Found:2011/01/09(日) 21:23:04 ID:???
>>743
プログラムに解かせるためのアルゴリズムも人間が考えることは理解してる?
そのアルゴリズムを知っている人間は当然、プログラムと同じ解き方をするから差がなくなる。
アルゴリズムを知らない人とプログラムを比べれば当然差が出てくるだろうけど…。
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=15%E3%83%91%E3%82%BA%E3%83%AB+%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0
747Name_Not_Found:2011/01/09(日) 21:34:10 ID:???
>>737
もうちょっと条件を詰めないと何ともいえない。
具体的には XPath式はどうなるのかな?
748Name_Not_Found:2011/01/09(日) 22:05:02 ID:???
嫌い
749Name_Not_Found:2011/01/09(日) 23:10:20 ID:???
>>743
あのさぁ、もう少し何かないのかなぁ。プログラムに関すること何も書かないよね。

「配列の要素に解までの0〜15の数値を順に入れればいいのは分かった」とかさ。
「最低限パネルが動く0〜15の数値(2〜4個)すべてをはじき出すには?」くらいあれば
読んでる側が何か書きたくなる様な気がするぞ。(まんまのコードを期待してんならそう書きなさい)

とりあえずパネルの状態を示す配列panelID(空パネルは15)を利用して
最低限パネルの動く数値の中から適当に選んで配列にいくつか並べ
それがちゃんと動くかやってみなよ。解法、アルゴリズムうんぬんはそっからの話でしょ。
やる気あんならだけど。
750Name_Not_Found:2011/01/09(日) 23:30:39 ID:???
> まんまのコードを期待してんならそう書きなさい
それは、 >>1 に違反してるな。

> 自力で書く気がない人は他のスレへ
751Name_Not_Found:2011/01/09(日) 23:43:41 ID:???
「まんまを期待してる」って書いてくれれば相手しなくて済む、って意味ね。
752Name_Not_Found:2011/01/10(月) 01:38:20 ID:???
優しいなwツンデレだね
動かす方法も上に書いてあるし、あとはなんとかなるだろう
個人的には最短手プログラム見てみたいが
753Name_Not_Found:2011/01/10(月) 09:11:40 ID:???
>>746 には異論があるな。
単純だけれどひどく時間が掛かる(手数の多い)アルゴリズム
を考案したとして、それを手でやることはあり得ないけど
プログラム書いて動かす場合は無問題とかならよくあると思う。
754Name_Not_Found:2011/01/10(月) 14:54:01 ID:???
要素のheightを取得したいんだけど
変数名 = document.getElementById('ID').style.heightでおk?
755Name_Not_Found:2011/01/10(月) 14:55:01 ID:???
何故やってから言わない?
756Name_Not_Found:2011/01/10(月) 15:03:29 ID:???
変数名 = (function(e){
  return e.currentStyle || document.defaultView.getComputedStyle(e, '')
})(document.getElementById('ID')).height;
757Name_Not_Found:2011/01/10(月) 17:38:27 ID:???
画像が読み込めたかどうかはどうやって判断すればいいですか?
image.completeはエラーや中断されてもtrueになるらしいし
loadイベントはキャッシュがあるときは発生しない場合があるらしいし
といってわざわざ
image.src += "?" + new Date().getTime()
などと新しいurlを設定するのも無駄な通信を発生させるのがよくなさそうだし…
相手によって"?〜"を付けたり付けなかったりしてお茶を濁すんですか?
758Name_Not_Found:2011/01/10(月) 20:23:16 ID:???
>>757
いろいろ調べてみたけどIEはキャッシュから取ってきた時にはいかなるイベントも発行しない仕様
そんな時にはreadyStateを見ればいいと思うよ、IE専用だけどね

img // img要素;
img.readyState; // いづれかの値を取る: [ uninitialized | loading | loaded | interactive | complete ]
759Name_Not_Found:2011/01/10(月) 20:57:32 ID:iC0JDzWY
function hoge() {
}

var hoge = function() {
}

これを使い分ける意味とかメリットがよくわかりません。
教えてください。解説記事の紹介でもいいです。
760Name_Not_Found:2011/01/10(月) 21:12:22 ID:???
一時と常時?
761Name_Not_Found:2011/01/10(月) 21:52:21 ID:???
>>759
技術的な差異はないから、気分で分ければいいんじゃないかな。
ただ、同一ソース内で統一されていないと気持ち悪いかも。
762Name_Not_Found:2011/01/10(月) 21:54:00 ID:???
一時的(ローカル)と常時(グローバル)?ならほとんど差は無いよね。
function(){}で定義すると、それより前(同じファイルなら)でもその関数を使える。
(firefoxでエラーはかれた覚えもあるけど。)

関数内でなく(=htmlに直書き等)
if (flag){
 function(){}
}
って場合分けで定義したい場合、function(){}で定義すると、flagがfalseでもそれが定義されるから、
この場合はvar window.hoge = function(){};ってやる。
763Name_Not_Found:2011/01/10(月) 22:23:14 ID:???
無名関数の中で動かすのがほとんどだから変数に入れるな、グローバル汚すと面倒だし。
グローバルに書かないといけないときは
window["myproject"] = {
  "hello": function() { }
}
のように名前空間のようなことをしてる
764719:2011/01/10(月) 22:39:26 ID:???
>>746
今考えている解き方はあります
一言で説明すると、パネルを一列ずつ揃えていく感じです
一番上の横一列(1,2,3,4)をそろえたら今度は左端の一列(5,9,13)を揃えて…という処理を繰り返し、完成させます
15パズルの縦横一列ずつを揃えれば残りは実質8パズルとなりますし、シャッフルして混ぜたものなので14-15パズルの形になる心配もありません
その状態でも解けるということはわかるので、無駄なパネル(縦横一列)を動かす必要がなくなるはず…と考えています
私がこれを実践しようとすると、どうしても1,2,4,3と並んでしまうので…
>>749
とりあえず空きマスを動かすことだけを考えて書いてみましたが、動きませんでした
追加した文は下記の通りです
(336行目まで省略)
function ans(){
if(panelID[15]!=15){
for(i=0;i<3;i++){
/*空きマスをひとつ右に移動させる*/
panelID[clickCellY*cellNumX+i]=panelID[clickCellY*cellNumX+(i+1)];
/*空きマスが一番右にあるときに処理を終わらせる*/
if(panelID[15]==panelID[cellNumX+i] || panelID[15]==panelID[cellNumX+i+4] ||panelID[15]==panelID[cellNumX+i+8] ||panelID[15]==panelID[cellNumX+i+12]){
break; } }
for(i=0;i<4;i++){
/*空きマスをひとつ下に移動させる*/
panelID[i*cellNumX+clickCellX]=panelID[(i+1)*cellNumX+clickCellX];
/*空きマスが一番右下にあるときにゴールの処理を行う*/
if(panelID[15]==15){
flag=1; } } }
//-->
</SCRIPT>
<INPUT TYPE=button VALUE="自動で解く" onClick="ans()"><BR>
765Name_Not_Found:2011/01/10(月) 23:40:59 ID:???
>>759
関数宣言と関数式の違いが分かれば、使いどころなんかも見えてくるんじゃなかろか。

宣言は文脈を辿る(実行コンテキスト)前にオブジェクトが生成され参照可能になる。

hoge(); // 呼出可
function hoge() {
}

広範囲で使う(呼出、参照代入)関数の場合、記述位置に融通が利くとかがメリットになるか。
グローバルな関数は基本、宣言でいいんじゃないか。

式は評価されるまでオブジェクトが生成されないけど、プロパティ、引数等への単一な参照代入なら
宣言、代入よりも無駄なステップが省けそうだし可読性もよくなるんじゃないのかね。

var hoge = function() {
}

同時に呼出すことはよくあるけど、これだけだと使いどころと言えるような場面はピンと来ない。
766Name_Not_Found:2011/01/11(火) 00:02:53 ID:???
単にラムダ関数が用意されてるだけでしょ
いろんな書き方が出来ますよ
好きなの使ってねってことだ
767Name_Not_Found:2011/01/11(火) 01:27:02 ID:???
>>764
最終的にpanelIDを初期状態に戻さないといけないから、まずはpanelIDをコピーした配列をつくる。
panelIDを利用するのは初期配置を調べる一度だけ。あとはコピーした配列を使った方が良い。

暇な時にでも「最低限パネルが動く0〜15の数値(2〜4個)すべてをはじき出すには?」を考えてみてよ。
ここで言う0〜15の数値は「位置番号」。要素の値じゃなくて配列のインデックス番号ね。
clickPanel(位置)で視覚的なパネルが動くことになるから。

コピーした配列[i]で15(空きマス)を調べて行った場合、iが空きマス位置になる。
このiがあればマスが動く位置番号を求められるからね。これができないと進めないし。
768Name_Not_Found:2011/01/11(火) 10:19:19 ID:???
prototypeではfor...inが挙動がおかしくなるとして使用禁止されていましたが、jQueryではそのようなJavaScript関数はありますでしょうか?
769Name_Not_Found:2011/01/11(火) 10:34:23 ID:???
jQueryのソース程度も読めないようならfor inは一律使用禁止にしといた方がいいと思う
770Name_Not_Found:2011/01/11(火) 10:52:56 ID:???
769のような言い方は良くないと思うな
771Name_Not_Found:2011/01/11(火) 12:02:27 ID:CUmeAqmd
>>768って、Objectオブジェクトが拡張されてるから使うなってことなのか?

そんな理由で盲目的にfor inループ使わない、って対応するようなら
フレームワークがなかろうと、いずれ問題は起きそうな気がする
772719:2011/01/11(火) 15:49:38 ID:???
>>767
panelIDをコピーしたpanelIDCopyという配列を作りました
var panelIDCopy;
function ans(){ //「自動で解く」のボタンを押したときにpanelIDの配列をpanelIDCopyに代入する
for(i=0;i<15;i++){
panelIDCopy[i]=panelID[i];}

>最低限パネルが動く0〜15の数値(2〜4個)すべてをはじき出すには?
空白のパネルを中心として、そこから上下左右1マスのパネルのことですよね?(空白のパネルの場所にもよりますが)
それと位置番号と要素ですが、
TUV □57
WXY 681
Z[\ 243
↑で言うとローマ数字が位置番号、数字と空白の□が要素で
「Tが空白でUに5のパネル、Vに7のパネルがある」という解釈で合ってますか?
773Name_Not_Found:2011/01/11(火) 16:29:53 ID:wiVyqCLs
場違いかもしれませんが、質問させてください。

lightboxの派生JavaScriptのcolorbox というやつで
動画を埋め込んだhtmlを表示させたいのですが、再生できません。

試しに、JavaScriptを外して、htmlをそのまま表示させたら
映像は流れました。

動画は「ふらだんす」というプレイヤーを介してmp4を流してます。
774Name_Not_Found:2011/01/11(火) 16:31:19 ID:wiVyqCLs
あ、
画像などは表示されるのでJavaScrit自体は正常に動作してます。
775Name_Not_Found:2011/01/11(火) 16:51:31 ID:???
>>768
jQueryがグローバル汚染するのは $ と jQuery だけ。

> prototypeではfor...inが挙動がおかしくなる
それが正しい動作なんだけどね。利用者が for-in の使い方を間違っているだけ。
776Name_Not_Found:2011/01/11(火) 16:54:37 ID:CUmeAqmd
>>773
>動画を埋め込んだhtml

には問題ないのかね
一度DOMツリーから千切れたらダメ、とかとか
777Name_Not_Found:2011/01/11(火) 19:44:10 ID:???
>>772
配列のコピーはOKだね。その他もろもろの認識も。
適切かどうかは置いといて、用語統一は必要だから位置と要素でいこか。

無理にコードにする必要はないからね。
「左は1引いて右は1足す」こんな感じで規則性を考えていけばいいんじゃないかと思う。
実際、16マス程度ならデータで用意しとけば済む話しなんだけど、n * nなら使い回せるもの考えよう。

ひとつ確認。
こっちは空マスの隣接マスしか移動できない認識でいたんだけど、どうも違う。
今頃気付いてあれだけど、複数マスをスライドさせる仕様に拘りはあるの?
隣接のみ仕様で納得のものが作れるようになれば、複数スライド仕様への移行も
難しくないように思うのだが。(と無責任に言ってみる)
778Name_Not_Found:2011/01/11(火) 19:49:25 ID:???
for..inはすべてのプロパティに対して作用する、
javascriptのメソッドは関数型のプロパティのこと
こんな認識
779Name_Not_Found:2011/01/11(火) 19:56:05 ID:???
そんな認識でよくやってるな
780Name_Not_Found:2011/01/11(火) 20:10:11 ID:???
振る舞いとしてはそれでいいと思うけど?
メソッドはプロトタイプチェーンから参照されるとかも説明しないと駄目か
781Perl忍者 ◆M5ZWRnXOj6 :2011/01/11(火) 21:20:20 ID:GYQtu3Sl
なんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるwなんだここwなんだここwなんだここwなんだここwなんだここwなんだここw
終わってるw
782Name_Not_Found:2011/01/11(火) 21:23:21 ID:???
new演算子を使うと、
例えば、2次元配列を作りたくて var a = new Array(100); のような教科書通りの記述をすると
jslintでエラー扱いされるんですが

new演算子はjslintの中では悪者扱いなの?
783Name_Not_Found:2011/01/11(火) 21:42:34 ID:???
C#でブラウザを作っていて、JavaScriptを実装をしたいのですが、普通の実装用の説明では自分にとって抽象的でわかりにくいので、具体的でわかりやすい(できれば日本語の)参考サイトを探しています
784Name_Not_Found:2011/01/11(火) 21:44:38 ID:???
>>783
ぐぐれ
785Name_Not_Found:2011/01/11(火) 21:56:04 ID:???
>>782
よく知らんけど、それは本当に警告じゃなくてエラー(処理がそこで止まる)なの?
786Name_Not_Found:2011/01/11(火) 21:59:11 ID:???
>>782
一次元だし。
787Name_Not_Found:2011/01/11(火) 22:14:19 ID:???
>>785
処理がそこで止まるかどうかは知りませんが、「Warning」ではなく「Error」が出ます。

Error:
Problem at line 1 character 19: Expected ')' and instead saw '100'.

Problem at line 1 character 22: Expected ';' and instead saw ')'.

Problem at line 1 character 23: Unnecessary semicolon.

var a = new Array(100);

>>786
問題の箇所とは関係ないけど、その後で2次元目のデータを構築するんですよ。
788Name_Not_Found:2011/01/11(火) 22:23:16 ID:CUmeAqmd
>>787
詳しくはわからんがjslintはnewを毛嫌いする気がする。たぶん

var a = [];
a.length = 100;

って書くと何も言わなくならない?
789Name_Not_Found:2011/01/11(火) 22:47:50 ID:???
onSoundCompleteとか、onProgressChangeってFlashのaction scriptで使われるものなのでしょうか?

サイトからコピペしたmp3を再生するjavascriptのコードを実行したのですが、onsoundcompleteとonprogresschangeのところだけ実行されていないことがわかりました。
(Flashの代わりにHTML5でmp3を再生している模様)

今のところコメントアウトしても動作に問題はないのですが、今回新しく機能を追加しようと思ったときに、
onsoundcompleteとonprogresschangeが使えなくて困っています。
誰か詳しい人アドバイスください。
790Name_Not_Found:2011/01/11(火) 23:28:17 ID:???
>>782
掲示板/スレッド脱線用スレッド2 - TAG index
http://www.tagindex.com/cgi-lib/bbs/patio.cgi?mode=view2&f=319&no=328-
791Name_Not_Found:2011/01/11(火) 23:31:17 ID:???
>>789
そのサイトの URL を。
792Name_Not_Found:2011/01/11(火) 23:42:41 ID:???
793Name_Not_Found:2011/01/12(水) 00:04:02 ID:???
>>792
http://www.jplayer.org/0.2.2/developer-guide/#jPlayer-onProgressChange
http://www.jplayer.org/0.2.2/developer-guide/#jPlayer-onSoundComplete

いきなり音楽が流れるページは嫌う人もいるから一言添えて欲しい。正直、びっくりした。
794Name_Not_Found:2011/01/12(水) 00:22:06 ID:???
>>793

音の件すいませんでした。
これを見ると、onProgressChangeはjplayerで定義されているという認識になるのでしょうか。
今最新版の2.0.0でプログラム書いているのですが、onProgressChangeは1.2.0には記載されているものの2.0.0からは消えているようです。
795Name_Not_Found:2011/01/12(水) 00:46:59 ID:???
>>794
onProgressChange の認識は合ってる。
サンプルコードには「jPlayer 1.1.1」とあるから、最新の 2.0.0 には対応していないのだろう。
古いバージョンで運用するか、コードを修正する必要があると思う。
796Name_Not_Found:2011/01/12(水) 01:13:47 ID:???
>>795

flash読み込みの問題なのか切り分けが出来ず、どうにも行き詰っていたので、ありがとうございました。
修正を試みて、ダメだったら旧バージョンでやり直したいと思います。
797Name_Not_Found:2011/01/12(水) 01:14:12 ID:???
JavaScriptを使用した連動プルダウンを作成しているのですが、
画面崩れの原因が特定できずに困っています。

リストから野菜を選択後、名前を指定した後にブラウザバックで画面が崩れます。

対象ブラウザはIEです。

ヒントになりそうな事でも構いませんので、ご示唆していただけないでしょうか。

ソースは以下にUpしました。
http://www.dotup.org/uploda/www.dotup.org1355275.txt.html
Pass:1234
798719:2011/01/12(水) 09:15:33 ID:???
>>777
>「左は1引いて右は1足す」こんな感じで規則性を考えていけばいいんじゃないかと思う。
確かにそう考えた方がわかりやすいですね
上下も考えると上なら4引いて下なら4足す、で出来ますし

>複数マスをスライドさせる仕様
これがどこを指しているのかわからないのですが、ソースのどの辺りのことでしょうか?
799Name_Not_Found:2011/01/12(水) 12:43:20 ID:???
>>797
再現しなかったぞ。IEのバージョンは?
HTMLの構造がはちゃめちゃなのがちょい気になる
800Name_Not_Found:2011/01/12(水) 15:06:40 ID:???
>>798
>上なら4引いて下なら4足す

だね。当たり前でつまらないかも知れないけど、まぁ付き合ってよ。(ツッコみどころは遠慮なくツッコむ)
ここで4がn * nのn(平方根)であることに注目してみる。左右の1は不変だけど
上下には定数ではなく変数を割り当てておけば使い回せる。あとは取り捨て条件を加え、有効数値をチョイスすればよい。

var n = Math.sqrt(panelIDCopy.length);

//iの隣接位置を配列で返す(不正方向 -1)
function fuga(i, n) {
var arr = [], l = n * n, a;
a = i - 1;
if (i % n !== 0) arr.push(a);
else arr.push(-1);
a = i + 1;
if (i % n !== n - 1) arr.push(a);
else arr.push(-1);
a = i - n;
if (a > -1) arr.push(a);
else arr.push(-1);
a = i + n;
if (a < l) arr.push(a);
else arr.push(-1);
return arr;
}

単調な書き方になってるけど、そこはヌルーの方向で。
返された配列から-1を除く数値を選んで保存。前回空マスだった位置を除外してもいい。
同時にpanelIDCopyの該当要素を入れ替えれば1局面進められる。
指定回数局面を進められるところまでは実装できそうかな?
801Name_Not_Found:2011/01/12(水) 15:08:06 ID:???
>>798
>ソースのどの辺りのことでしょうか?

「複数マス」とは画面上にある視覚的なマスのことね。ゲームルールのこと。
空マスの隣接マス以外でもクリックすれば複数マスがスライドするよね。そのことを言ってます。
802Name_Not_Found:2011/01/12(水) 16:14:16 ID:EUvMs/UJ
HTML5でドロップされたファイルのフルパスを得る方法を教えてください。
ローカルからドロップされたファイルをaudio要素で再生したいです。

$('#drop_here').get(0).addEventListener('drop', function(e){
strOpenFile = e.dataTransfer.files[0].fileName;
audio.src = strOpenFile;
audio.load();
},false);

こうやってファイル名を取得しても、フルパスが得られないため、htmlと別のフォルダにある
ファイルが再生できません。
803Name_Not_Found:2011/01/12(水) 16:17:29 ID:Qeg0UzsG
コンストラクタとプロトタイプの使いどころって何?
804Name_Not_Found:2011/01/12(水) 20:00:27 ID:???
document.compatModeやdocument.documentModeというのはIE用ですか?
805Name_Not_Found:2011/01/12(水) 21:19:53 ID:???
>>802
ちょっと勉強がてら作ってみたよ

ソース ttp://ideone.com/8WXYp
js + html ttp://www.dotup.org/uploda/www.dotup.org1356749.zip.html
806Name_Not_Found:2011/01/12(水) 21:23:21 ID:???
6行目にデバッグ用のconsole.log(files);が残ってるから気になるなら消して
807Name_Not_Found:2011/01/12(水) 21:56:29 ID:???
Chromeで動いてなかったから書き直した、http://〜で動かす必要があることに注意(動かすときはサーバーにアップしてね)
ttp://ideone.com/go7X6
ttp://www.dotup.org/uploda/www.dotup.org1356836.zip.html
808797:2011/01/13(木) 01:36:52 ID:???
>>797

解決できていませんが、終了します。
再度、質問に来るかもしれません・・・。
その際はもう少し具体的な内容の質問となるように励みます。
809Name_Not_Found:2011/01/13(木) 18:07:02 ID:???
javascript(jquery)で
http://twitter.com/#!/masason/status/25335044767748096
にマッチさせたいんだけど、何故か
/http(s)?:\/\/([\w-]+\.)+[\w-]+\/*[\w\-.\/\?%&=\+#!]*/igm
じゃ駄目だ。

どこミスってるかどなたか教えてくさい。


form_text.match(/http(s)?:\/\/([\w-]+\.)+[\w-]+\/*[\w\-.\/\?%&=\+#!]*/igm);
って感じで書いてます。
810Name_Not_Found:2011/01/13(木) 18:18:46 ID:???
>>809
グループ化できないってこと?
gを外せばtwitterって文字列は取れると思うけど
811719:2011/01/13(木) 18:31:49 ID:???
>>800-801
いえ、むしろ付き合ってもらっているのはこちらの方ですので
まず>>801ですが、どこのことを言っているのかわかったので↓のように修正しました
if(clickCellX==emptyCellX){
if(clickCellY==emptyCellY-1){
for(i=emptyCellY;i>clickCellY;i--){
panelID[i*cellNumX+clickCellX]=panelID[(i-1)*cellNumX+clickCellX];}
flag=1;}
else if(clickCellY==emptyCellY+1){
for(i=emptyCellY;i<clickCellY;i++){
panelID[i*cellNumX+clickCellX]=panelID[(i+1)*cellNumX+clickCellX];}
flag=1;}}
else if(clickCellY==emptyCellY){
if(clickCellX==emptyCellX-1){
for(i=emptyCellX;i>clickCellX;i--){
panelID[clickCellY*cellNumX+i]=panelID[clickCellY*cellNumX+(i-1)];}
flag=1;}
if(clickCellX==emptyCellX+1){
for(i=emptyCellX;i<clickCellX;i++){
panelID[clickCellY*cellNumX+i]=panelID[clickCellY*cellNumX+(i+1)];}
flag=1;}}

>>800の方はaにi±1or4をした値を入れ、その値をpanelIDCopyに入れる
ということでよいのでしょうか?
812Name_Not_Found:2011/01/13(木) 19:35:04 ID:???
あー…うん。
いい加減引っ張りすぎだと思うんだ。
813Name_Not_Found:2011/01/13(木) 19:55:11 ID:???
>>810
URL全体にマッチさせたいのです。
814Name_Not_Found:2011/01/13(木) 19:58:53 ID:???
gなくしてみ
815Name_Not_Found:2011/01/13(木) 20:42:20 ID:LYP16BXy
ajaxでテキストページを書き出したいんだけど
jquery.min.js以外のjsファイルを見せないようにphpをはさんで
html--php--js(getData)--dataってかんじでもajaxの通信できますか?
ほかにjsファイルを見せない方法があれば知りたい
816 ◆Afv5PFgYfo :2011/01/13(木) 20:44:14 ID:???
>813
[\w\-.\/\?%&=\+#!]*
[]の中に.が入ってるから .*と同じじゃね?
http://twitter.com/以降何でもマッチすると思うけど
817Name_Not_Found:2011/01/13(木) 20:53:03 ID:???
>>809
ちゃんとマッチしているように見える。

var str = 'http://twitter.com/#!/masason/status/25335044767748096\r\nhttp://twitter.com/#!/masason/status/25335044767748096';
console.log(str.match(/https?:\/\/[\w-]+\.+[\w-]+\/*[\w\-.\/\?%&=\+#!]*/igm));
818Name_Not_Found:2011/01/13(木) 20:54:39 ID:???
>>816
同じではない。
819Name_Not_Found:2011/01/13(木) 20:56:31 ID:MJw+3vza
>>815
日本語でおk
820Name_Not_Found:2011/01/13(木) 21:03:24 ID:???
>>815
インラインスクリプトにすれば、JavaScriptファイルを見せないことは出来るが。
821809:2011/01/13(木) 21:07:21 ID:???
>>814
g外しても駄目でした・・
あと後出しですいません、複数urlにも対応させたいんです。
822Name_Not_Found:2011/01/13(木) 21:08:51 ID:???
>>817
確かにいろんなツールでもマッチしているんです・・。
ほかの部分に問題があるのかもしれませんね。
ありがとうございます。
823817:2011/01/13(木) 21:09:03 ID:???
>>821
複数URLに対応しているじゃないか。何が問題なのかわからない。
824817:2011/01/13(木) 21:10:11 ID:???
入れ違いだったか…。
825Name_Not_Found:2011/01/13(木) 21:38:36 ID:LYP16BXy
http://demos.flesler.com/jquery/localScroll/ajax/
このサイトなんかどこからデータ持ってきてるかわからないんじゃないかな
いやコメントに書いてはあるんだけどソースとinit.jsからは読めなくね
826Name_Not_Found:2011/01/13(木) 21:43:53 ID:???
>>825
どうやろうともブラウザが実行するためにデータを持って来なくちゃいけないからjsファイルの中身は読まれるよ
難読化とかすれば「jsファイルが読めたとしてもgmailのjsファイルとかわざわざ読まないでしょ」って感じになるけど。
やりたいことが「JavaScriptでどんなコードを書いてるか見せたくない」ならそれは無理と思った方がいい
827Name_Not_Found:2011/01/13(木) 21:59:03 ID:???
やっぱ無理かな
ちなみに>>825のサイトでテキストデータを引っ張ってきてるリンク先の記述わかる?
var url = "xxx.xml"みたいな記述もないし
828Name_Not_Found:2011/01/13(木) 22:05:09 ID:???
829Name_Not_Found:2011/01/13(木) 22:12:49 ID:???
それどうやってだしたの?
830Name_Not_Found:2011/01/13(木) 22:26:34 ID:???
>>829
だんだんスレ違いになってきた感じがするなw
やり方は人によって違うだろうけど、FirebugとかHTTP見張るようなツールでhttpの通信が見れるから
クリックした時にどこのURLからデータを取得してるかはすぐ確認できる

で、それとは別に「JavaScriptのどのコードみれば良いか」ってのを調べたいなら、
このサンプルの場合jQueryだからclickでイベント登録してるだろうから
「click」でJavaScriptのファイルを検索すればいい
そうすると
ttp://demos.flesler.com/jquery/localScroll/ajax/js/init.js
の11行目に
var url = 'html/' + this.hash.slice(1) + '.html';
があるのでさっきのURLと同じのになる

みたいな感じで色々なサイト調べてみたらいい
831Name_Not_Found:2011/01/13(木) 22:27:22 ID:???
まだそんな無駄な努力してる子がいたのか。
ブラウザがGET飛ばすのも、その中身をキャプチャされるのも原理的に防ぎようがないというのに。
832Name_Not_Found:2011/01/13(木) 22:32:51 ID:???
>>830
ブラウザからさくっと見えなければまぁいいかと思うしかないな

外部ドメインの高さ取得とjsのコード隠匿が永遠の課題だから
833Name_Not_Found:2011/01/13(木) 22:35:10 ID:???
右クリック禁止です>< みたいな
834 ◆Afv5PFgYfo :2011/01/13(木) 22:35:22 ID:???
>818
実行の早さ以外何が違う?
835Name_Not_Found:2011/01/13(木) 22:42:22 ID:???
右クリックやコピー禁止よりも戻るが効かないのが一番ムカソニー
836Name_Not_Found:2011/01/13(木) 23:05:31 ID:???
>>834
console.log(/[.]/.test('hoge')); // false
console.log(/./.test('hoge')); // true
837Perl忍者 ◆M5ZWRnXOj6 :2011/01/13(木) 23:05:55 ID:???
>>832

え?・・・
838Name_Not_Found:2011/01/13(木) 23:09:04 ID:???
>>832
js のコード隠蔽は不可能。開発者ツールを使えば大抵わかる。
隠蔽するならサーバサイドでやるべきだと思うけど…。
839Name_Not_Found:2011/01/13(木) 23:21:03 ID:???
それをメンドくさがってphp一枚はさんでやれないかと
UserSide--php--js(getData)--dataとか言い出した
840Name_Not_Found:2011/01/13(木) 23:24:23 ID:???
>>839
js(getData) に入るのはサーバサイドJavaScriptだと思うよ。
node.js でも使うとか。
841840:2011/01/13(木) 23:25:23 ID:???
効率は悪いと思うけどね。発想がいろいろおかしい。
842 ◆Afv5PFgYfo :2011/01/13(木) 23:32:35 ID:???
>836
勉強になりました m(_ _)m
843Name_Not_Found:2011/01/13(木) 23:33:28 ID:???
・JavaScriptでコード書きたい
・でもコードは人に見られたくない
・そうだ! サーバサイドJSだ!!

こういう発想の流れなんだろうか
だとしたらそのぶっ飛びっぷりは嫌いじゃない
844Name_Not_Found:2011/01/13(木) 23:34:20 ID:???
>>839
一応聞くが、「js(getData)」はクライアントサイドなの?
どのようなトポロジを想定してる?(P2Pなのかね…。)
845Name_Not_Found:2011/01/13(木) 23:36:25 ID:???
>>811
>>801はルールに拘りがあるかどうか確認したかっただけ。コードいじる必要はなかったんだけど。
ルールに拘りはないのは確認。

>>800だけど

r = fuga(i, n);

引数のiは空マスの位置。panelIDをコピーしてる過程で見付かる。nは4でもかまわない。

rは要素数4の配列になる。要素には-1の無効な値か0〜15の位置を示す有効な値が入ってる。
そこから-1を除いた値を1つ選ぶ。前回空マスだった位置は有効だけど無駄な値だから選ばなくてもよい。(今はどうでもいい)
前回空マスだった位置は引数iを保持しとけばよい。

panelIDCopy[i] = panelIDCopy[選んだ値];
panelIDCopy[選んだ値] = n * n - 1;

answer[j] = 選んだ値;

panelIDCopyの要素入れ替えをして、選んだ値を保存。
fuga(選んだ値, 4)を繰り返す実装ができそうかな?と言ってる。

勝手な判断して悪いけど、コード貼るわ。ここまでを踏まえて、頭の中を少し慣らしてよ。
たっぷり時間掛けていいから、コード読んでもらえるとありがたい。
846Name_Not_Found:2011/01/13(木) 23:39:12 ID:???
function hoge() {
 var n = Math.sqrt(panelID.length);
 var answer = [], panelIDCopy = [], e;
 for (var i = 0, l = n * n; i < l; i++) {
  panelIDCopy[i] = panelID[i];
  if (panelIDCopy[i] === l - 1) e = i;
 }
 for (var j = 0, ll = 10; j < ll; j++) e = answer[j] = hogehoge(panelIDCopy, e, n);
 var c = 0, m = answer.length;
 var id = setInterval(function () {
  if (c < m) {
   clickPanel(answer[c++]); // パネル選択
  } else clearInterval(id);
 }, 1000);
}

var s = 0;
function hogehoge(arr, i, n) {
 var r = fuga(i, n);
 var a , m = 0;
 do {
  a = r[m++];
  if (a !== -1 && a !== s) {
   arr[i] = arr[a];
   arr[a] = n * n - 1;
   s = i; break;
  }
 } while (m < n);
 return a;
}
847Name_Not_Found:2011/01/13(木) 23:55:40 ID:???
>>844
自作プラグインにアクセスするときだけphpが擬似js的な動きをして実態はサーバサイドでjsが処理を返すという
ゲートウェイ的なエイリアス的ななんかそういう
848Name_Not_Found:2011/01/13(木) 23:56:53 ID:???
ブラウザ上で文字にフォーカス(テキストボックスの中ではなく)するとI(アルファベットのi)みたいな形になりますが
これを阻止するにはどのようにすればいいんですか?
onmouseoverでreturn falseしてみたんですけどできないです・・・
849Name_Not_Found:2011/01/13(木) 23:57:42 ID:???
JSじゃなくてCSS
「CSS cursor」でぐぐれ
850848:2011/01/13(木) 23:58:19 ID:zL8Mtv+R
間違えてsageてしまいました
後ブラウザはChrome 7.0.517.41です
851Name_Not_Found:2011/01/14(金) 00:01:17 ID:???
>>849
ありがとうございます
解決しました!
852Name_Not_Found:2011/01/14(金) 00:23:03 ID:WJ87H2sH
<script type="text/javascript"><!--
(function() { /* コード */ })();
//--></script>



<script type="text/javascript"><!--
function func() { /* コード */ };
func();
//--></script>



<script type="text/javascript"><!--
function func() { /* コード */ };
//--></script>
<body>
<script type="text/javascript"><!--
func();
//--></script>
</body>

って何が違うズラ?
853Name_Not_Found:2011/01/14(金) 00:30:41 ID:WJ87H2sH
あ、間違えた
×(function func(){ /* コード */ })();
◯(function(){ /* コード */ })();
854Name_Not_Found:2011/01/14(金) 00:31:39 ID:???
>>853
>>759-
855Name_Not_Found:2011/01/14(金) 00:41:02 ID:yjZBSSOF
Javascriptのエラー?困っています。。。

Javascriptに関して初心者です。

〜状況〜
ホームページ更新のため、javaが反映されていたバナーを変更しました。

【バナーA】(javaが反映される前のバナー画像)
【バナーA’】(ブラウザ上でカーソルを合わせるとjavaが反映され、バナーAに影がついたような画像)

この二つの画像を
【バナーB】
【バナーB’】
に変更し、ホームページビルダーのFTPでアップしました。

ホームページビルダーのプレビューでは正常に作動するのですが、
FireFoxやIEなどのブラウザで表示すると以下のように表示されてしまいます。

【バナーB】(カーソルを合わせる前の画像:正常)
【バナーA’】(カーソルを合わせた画像:エラー)

javaが反映された後の画像がアップ前の画像のままで、
新しい画像が表示されません。

javaはHTMLファイルとは別の外部ファイルで読み込んでいるのですが
画像を変更しただけで、javaのファイルは一切変更していません。

このようなことが生じる原因お分かりの方
是非、ご回答お願いいたします。
856Name_Not_Found:2011/01/14(金) 00:46:38 ID:???
>>847
翻訳してみたが、もう限界。

> 自作プラグインにアクセスするときだけphpが擬似js的な動きをして
PHPがクライアントサイドスクリプトになって、

> 実態はサーバサイドでjsが処理を返すという
サーバサイドJavaScriptが処理を返して、

> ゲートウェイ的なエイリアス的ななんかそういう
なんかそういう、とか適当なこというなw
857Name_Not_Found:2011/01/14(金) 00:50:58 ID:???
>>855
JavaとJavaScriptは別のものだからそこ間違えないように。
で、どうせキャッシュが残ってるんだろうから一度
「一時ファイルの削除」をやってみろ。
858Name_Not_Found:2011/01/14(金) 01:07:08 ID:???
>>856
いや、多分違うだろう。俺が翻訳するわ
サーバサイドJavaScriptってのは一般的にはそんなに知られてないからナイだろうと予測して
「phpがさもJavaScriptのように動いてくれてブラウザが普段するような処理をサーバサイドでやってくれる」
という意味だと思う。
つまり無理だ。というか、それはサーバサイド処理だ。
859Name_Not_Found:2011/01/14(金) 01:30:54 ID:???
>>858
JavaScriptのように動くのにサーバサイドってどういうこと?
860Name_Not_Found:2011/01/14(金) 01:45:36 ID:???
>>859
そんなことできないから無理ってことでしょ
あったとしてもページ遷移するようなサーバサイドの処理になる
861Name_Not_Found:2011/01/14(金) 08:34:36 ID:???
ajaxを使って、イベント等のページの情報を常にサーバーに送って、サーバーから得たDOM情報等の指示でページを動かすってことかな。
それならやったことあるし、できたよ。
javaアプレットで同じような考え方があるね。
862Name_Not_Found:2011/01/14(金) 14:48:17 ID:???
クリックしたマウスが乗ったという情報だけサーバに送る感じか
863Name_Not_Found:2011/01/14(金) 20:33:43 ID:???
サーバサイドクリッカブルマップなんて懐かしワードがあったな
864Name_Not_Found:2011/01/14(金) 21:30:34 ID:???
コールバックから値をリターンさせたい場合って
こんなふうにすればいいんですか?
var foo = func();
function func(){
var value;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){ value = xhr.responseXML };
return value;
}
valueに値が入る前にreturn valueされたりすることはありませんか?
865Name_Not_Found:2011/01/14(金) 21:37:54 ID:???
>>864
xhr.onreadystatechange = function(){ hoge(xhr.responseXML); };

function hoge で引数を受け取る。
866Name_Not_Found:2011/01/14(金) 21:42:25 ID:???
> valueに値が入る前にreturn value
当然されます。
つーか、それ以前に5行目のvalueと6行目のvalueは全くの別物として扱われるし。
867Name_Not_Found:2011/01/14(金) 21:44:33 ID:???
>>865-866
どうもありがとうございます
>>865
それがちょっと不便なときがあってリターンさせたいのですがやっぱりそうしないといけないんですね
868Name_Not_Found:2011/01/14(金) 21:45:34 ID:???
>>866
5行目と6行目の value は3行目の value を参照するわけで同じものを参照するはずだが…。

個人的には循環参照する事の方が気になるな。
ActiveXObject じゃないから大丈夫ではあるけど、好ましくない気がする。
869Name_Not_Found:2011/01/14(金) 21:47:48 ID:???
>>867
一応、同期処理にすれば期待通りの動作になる。
870Name_Not_Found:2011/01/14(金) 22:12:46 ID:???
>>868
5行目の value はローカル変数。6行目のイベント処理からは参照できない。
871Name_Not_Found:2011/01/14(金) 22:16:17 ID:???
>>821
\\にするとか
872Name_Not_Found:2011/01/14(金) 22:20:37 ID:???
>>870
それがクロージャだと思っていたんだが…。
3行目の value を参照できないなら4行目の xhr も参照できなくなる。それでは処理が成り立たない。
第一引数で event を受け取れる実装はともかく、IE は対応しようがなくなる。
873Name_Not_Found:2011/01/14(金) 22:24:27 ID:???
window.addEventListener("load", function(){
  var body = document.body;
  body.appendChild((function(){
    var button = document.createElement("div");
    button.addEventListener("click", function(){
      this.setAttribute("class", "clicked");
    }, false);
    return button;
  })());
});
メモリリークのパターンがいまいち理解できないのでけど例えばこのコードはリークする?
874Name_Not_Found:2011/01/14(金) 22:30:00 ID:???
>>873
attachEvent に変更すればリークする。
ただ、IE6 に限らず循環参照しないコードが好ましいと俺は習ったので addEventListener (XMLHttpRequest) でも気をつけることにしてる。
875872:2011/01/14(金) 22:59:04 ID:???
ああ、わかった。>870 は多分、

xhr.onreadystatechange = function () { var value = xhr.responseXML };

だと思っているんだろう。
5行目はイベントハンドラ関数内のローカル変数ではない。

(function () {
 var value;
 (function () { value = true; })();
 alert(value); // true
})();
876Name_Not_Found:2011/01/14(金) 23:02:40 ID:???
>>874
ありがとうございます、循環参照は気を付けるようにします
877Name_Not_Found:2011/01/14(金) 23:08:38 ID:???
>>873
これなら大丈夫。

function onClick () { this.setAttribute("class", "clicked"); }
window.addEventListener("load", function(){
 var body = document.body;
 body.appendChild((function(){
  var button = document.createElement("div");
  button.addEventListener("click", onClick, false);
  return button;
 })());
});
878Name_Not_Found:2011/01/14(金) 23:23:42 ID:???
>>877
ありがとうございます
イベントに自身を参照するクロージャが設定されるとリークする解釈でよろしいのでしょうか
879Name_Not_Found:2011/01/14(金) 23:34:23 ID:???
attachEvent はどうすんの?
880Name_Not_Found:2011/01/14(金) 23:36:27 ID:???
>>879>>877 宛。

>>878
そのリークパターンはもう解消されている。
881Name_Not_Found:2011/01/15(土) 00:13:49 ID:???
画像がある場合にthickboxで拡大イメージを表示したくてこんなコード書きました

if(item.imgB01){$("img#imgB01").attr("src", item.imgB01);$("img#imgB01").wrap("<a href='" + item.imgB01 + "' class='thickbox' rel='gallery1'></a>");}

html

<img src="../cmn_img/blank.gif" id="imgB01" alt="" width="261" height="392" border="0">

でもthickboxが作動しません。リンクタグはちゃんと挿入されてるようですが・・・
882Name_Not_Found:2011/01/15(土) 00:14:03 ID:???
>>878
イベントハンドラ関数からローカル変数に格納されたDOMノードが参照可能になるとリークパターンが成立する。

(function () {
 var p = document.createElement('p');
 document.attachEvent('onclick', function () {
  // p を参照可能なのでリークする
 });
})();

ローカル変数に格納されたActiveXオブジェクトでもリークパターンが成立する。回避方法が特殊。

var xhr = new ActiveXObject('Msxml2.XMLHTTP.6.0');
xhr.onreadystatechange = function () {
 // xhrを参照可能なのでこのままではリークする
 xhr.onreadystatechange = new Function; // 関数オブジェクトを代入してリークパターンを回避する (null では解消されない)
 xhr = null; // xhr にも null も代入
};

http://d.hatena.ne.jp/babu_babu_baboo/20100417/1271465430 がまとまっている。コメント欄やリンク先も参考になる。

addEventListener で書ける人は attachEvent でも書けると思う。
今でも気をつけている理由は >>874
循環参照系は新規実装でも混入しやすいバグらしい。
883Name_Not_Found:2011/01/15(土) 00:33:20 ID:???
>>881
関係ないけどrelに変な値入れんな
884Name_Not_Found:2011/01/15(土) 00:36:52 ID:???
>>879
addEvent を使えばいいんじゃない?
http://gihyo.jp/dev/serial/01/crossbrowser-javascript/0007
885Name_Not_Found:2011/01/15(土) 00:41:30 ID:???
>>882
これは分かりやすい、じっくり読んでみます。

IEのActiveXObjectの扱いが特殊なのはActiveXObject自体が
COMへのラッパで戻り値をオブジェクトっぽく見せてるだけで全く別物らしい・・からだと思います。
886Name_Not_Found:2011/01/15(土) 00:44:51 ID:???
>>880
確かに IE6SP3 で解消されてる。
http://support.microsoft.com/kb/957273/JA/ の 929874 だね。

便宜上、リークパターンとしたけど好ましいコードを書くためのコーディング規則のようなものだと思ってる。
887Name_Not_Found:2011/01/15(土) 00:55:45 ID:???
setTimeoutやsetIntervalから呼び出した関数の
返り値を取得ってどうすんの?
888Name_Not_Found:2011/01/15(土) 01:03:09 ID:???
>>882
jquery-1.4.4.jsr, prototype.js (1.7) のソースを読んでみたが、両方とも対応してた。
さすがだなー。
889Name_Not_Found:2011/01/15(土) 01:08:44 ID:???
>>887
関数呼び出しで引数に渡せばいいんじゃね?
890Name_Not_Found:2011/01/15(土) 02:31:18 ID:???
>>881
イベントハンドラの登録のタイミングじゃないかな
thickboxの方をlive(type, fn)に書き換えれば動くとおも
891Name_Not_Found:2011/01/15(土) 02:54:16 ID:???
returnで処理辞めないくせにsetIntervalで
複数回return呼び出しても帰り値は最初のひとつのみなのか・・・
setIntervalで呼び出した関数の状態をリアルタイムに
監視したい場合グローバル変数使うしかないんかね・・・
892Name_Not_Found:2011/01/15(土) 03:55:22 ID:???
>>891
> 複数回return呼び出しても帰り値は最初のひとつのみなのか・・・
多分、何か勘違いしてる。
893Name_Not_Found:2011/01/15(土) 10:12:07 ID:???
>>890
thickboxの中の
$(domChunk).click(function(){

$(domChunk).live('click',function(){
にしたらうまくいきました
ありがとうございました
894Name_Not_Found:2011/01/15(土) 10:41:12 ID:Ftfy8Zpk
javascriptのコードに関する質問じゃないんだけど、
ポップアップブロッカーって一時話題になってたけど、あれってどうなったの?
今のブラウザに標準でついてるのはもちろん知ってるけど、一時期ほど大騒ぎになってないというか
結局ポップアップは禁止がデフォルトになったから?
でもそれにしてもいろんなサイトでよく見るし。
全部Thickboxに置き換えられたかというとそうでもないし。
ポップアップ、使っても問題ないの?
895Name_Not_Found:2011/01/15(土) 12:37:03 ID:???
いらん用途に使うとtarget="_blank"と同じで迷惑って奴
896Name_Not_Found:2011/01/15(土) 13:52:53 ID:???
developer.mozilla.orgに繋がらないのは俺だけ?
897Name_Not_Found:2011/01/15(土) 14:27:29 ID:???
sbmitやonclickと関連付けられてるポップアップはユーザーが呼び出したものだからブロックされない
それ以外は完全にブロックってはっきりしたから問題なくなったんじゃない?
898Name_Not_Found:2011/01/15(土) 17:22:05 ID:???
<p>ほげふがぴよ</p>

<p>ほげ<span>ふが</span>ぴよ</p>
等とDOMを書き換えることなく「ふが」にスタイルを適用したりイベントリスナーを登録したりできますか?無理ですか?
方法があれば教えてください。
899Name_Not_Found:2011/01/15(土) 17:26:17 ID:???
>>897
おお、そういう風にハッキリ区分されたんだ?
あの顛末どうなったんだって気になってたんだ。ありがとう

>>896
よくわからんがサンキューだ
900Name_Not_Found:2011/01/15(土) 17:45:13 ID:???
>>898
無理っすね
901Name_Not_Found:2011/01/15(土) 17:45:18 ID:???
>>898
無理
902Name_Not_Found:2011/01/15(土) 17:48:22 ID:???
>>898
無理っぽい
903898:2011/01/15(土) 17:48:30 ID:???
>>900-901
どうもありがとうございます
904Name_Not_Found:2011/01/15(土) 20:42:17 ID:S6csxntA
var d = element.style.margin = 0 + "px";
◯ alert(d);
× d = 50 + "px";

style.marginTopは読み取り専用って事?
905Name_Not_Found:2011/01/15(土) 20:51:18 ID:???
>>904
var d = element.style.margin = 0 + "px";
d = 50 + "px"; // d は element.style.margin の参照ではない

element.style.margin はString型だから参照を得ることは出来ない。

var style = element.style; // element.style の参照を得る
style.margin = 50 + "px"; // element.style.margin を初期化できる
906Name_Not_Found:2011/01/15(土) 21:38:17 ID:???
>>903
無理
907Name_Not_Found:2011/01/15(土) 21:40:13 ID:???
メモリリークというのはウィンドウ(タブ)を閉じれば解消されるんですか?
アプリケーションそのものを閉じるまでですか?
908Name_Not_Found:2011/01/15(土) 21:46:16 ID:S6csxntA
>>905
なるほどありがとう
909Name_Not_Found:2011/01/15(土) 22:04:57 ID:???
>>907
後者が発生するからタチが悪い
910Name_Not_Found:2011/01/15(土) 22:05:16 ID:???
900超えたのでテンプレ論議あれば今どうぞ。
911Name_Not_Found:2011/01/15(土) 22:25:17 ID:???
>>907
メモリリークはタブを閉じる時に発生する。
タブを閉じるときに解放されるはずのメモリが解放されないのがメモリリーク。
912Name_Not_Found:2011/01/15(土) 22:56:15 ID:???
>>910
JavaScriptでのファイルの出力についてのFAQ
913Name_Not_Found:2011/01/15(土) 23:13:03 ID:???
>>909
>>911
どうもありがとうございます
914Name_Not_Found:2011/01/16(日) 04:03:13 ID:???
タブを閉じる時に発生するってどう考えてもブラウザ側の問題だよな…
915Name_Not_Found:2011/01/16(日) 09:40:31 ID:???
>>912
そのFAQはサイトへのリンク?それともFAQに項目追加?前者なら
リンク教えてほしい。後者なら文案がないと入れられないので文案を。
916Name_Not_Found:2011/01/16(日) 09:44:05 ID:???
>>914 >>912
「閉じる瞬間に」発生するという言い方はちょっと違うかと。
リークパターンを作った瞬間に「ゴミになっても解放されない」
状況になってしまい、そのためにタブを閉じて不要になっても
その部分だけは解放され損なうということでしょ。もちろん
ブラウザがタコなのは異論ないけど、「タブを閉じる処理」の
せいというわけじゃ全くないから。
917Name_Not_Found:2011/01/16(日) 10:21:28 ID:???
var hoge = { init: function() {
918Name_Not_Found:2011/01/16(日) 10:24:00 ID:???
var hoge = { init: function() { 〜〜〜 }, }
こういうのってイベントハンドラで起動させることってできないんでしょうか?

<body onload="hoge.init()">で呼び出せませんでした。
919918:2011/01/16(日) 10:35:24 ID:???
すいませんできました。。。
920Name_Not_Found:2011/01/16(日) 10:35:37 ID:???
<html>
<head>
<script>
var hoge = { init: function() { alert("ok") } };
</script>
</head>
<body onload="hoge.init()"></body>
</html>

firefoxとchromeでalert("ok")が実行されたよ
921Name_Not_Found:2011/01/16(日) 10:57:50 ID:???
>>916
補足ありがとう。結構説明が難しいんだな…。
922Name_Not_Found:2011/01/16(日) 11:46:38 ID:???
Javascript側でイベントハンドラを設定しようと思ってやってみたのですがうまくいきません
for (i = 1;i < 10;i++)
document.getElementById("menu" + [i]).onclick = function { hoge([i]) };
だいたいこんな感じなんですが、javascript側でイベントハンドラを設定するときには引数を指定することはできないんでしょうか?
923Name_Not_Found:2011/01/16(日) 11:51:24 ID:???
[ ]これなんで付けた。配列になってるぞ
924Name_Not_Found:2011/01/16(日) 11:51:37 ID:???
こんなもん動くわけないじゃん
925Name_Not_Found:2011/01/16(日) 12:05:13 ID:???
>>923
[ ]つけなくていいんですか・・・
外しても動きませんでした・・・

>>924
どのようにしたら動くかヒントだけでも教えていただけないでしょうか?
926Name_Not_Found:2011/01/16(日) 12:25:35 ID:???
<body>
<span id="menu1">menu1</span><br>
<span id="menu2">menu2</span><br>
<span id="menu3">menu3</span><br>
<span id="menu4">menu4</span><br>
<span id="menu5">menu5</span><br>
<span id="menu6">menu6</span><br>
<span id="menu7">menu7</span><br>
<span id="menu8">menu8</span><br>
<span id="menu9">menu9</span><br>
<script>
for (i = 1;i < 10;i++)
document.getElementById("menu" + i).onclick = hoge(i);
function hoge(arg){return function(){alert(arg)}};
</script>
</body>
927Name_Not_Found:2011/01/16(日) 12:34:19 ID:???
>>925
このスレをvol.1から読み返せば動くようになるよ
928Name_Not_Found:2011/01/16(日) 13:47:48 ID:wy7u/eY3
>>925
>>926が答えなんだけど、>>922

document.getElementById("menu" + [i])

が何を意味しているのかを理解しないと、なんとも
929Name_Not_Found:2011/01/16(日) 14:04:23 ID:???
[i][0]にしてしまえば間違ってはない
930Name_Not_Found:2011/01/16(日) 14:09:28 ID:???
iには[]付けないと駄目だと勘違いしてるのかな
なんにせよ[]の意味を理解しないとな
931Name_Not_Found:2011/01/16(日) 14:11:29 ID:???
function() {}をfunction {}と省略できるの?
932Name_Not_Found:2011/01/16(日) 14:18:47 ID:???
はい
933Name_Not_Found:2011/01/16(日) 14:47:14 ID:AnfDS7j+
ローカルで単独ファイルで実行させたいのですが、alertの出し方がわかりません。
htmlに埋め込んでブラウザ上で動かすのは問題ないのですが、同じ記述でも、

「オブジェクトを指定してください」
「'window'は宣言されていません」

などのエラーになります。なにか宣言が必要なようですが、どうすればいいのでしょうか。
934Name_Not_Found:2011/01/16(日) 14:49:13 ID:???
jsファイルだけで実行したいってこと?
それJavaScriptじゃないんで
935Name_Not_Found:2011/01/16(日) 14:50:54 ID:???
jsファイルだけで実行したいってことなんですが、これに当たるんでしょうか。
936Name_Not_Found:2011/01/16(日) 14:52:35 ID:???
×これに当たるんでしょうか。
○これは何に当たるのでしょうか。
937Name_Not_Found:2011/01/16(日) 14:52:50 ID:???
WindowsのWSHで動かしているのならJScript
938Name_Not_Found:2011/01/16(日) 14:53:18 ID:???
>>935
板違いです。
939Name_Not_Found:2011/01/16(日) 15:11:33 ID:???
> WSHで
WSHを含めて検索したら、「WSH.echoを使う」っぽいのが掛かりました。
お世話になりました。

window.confirmみたいなのもあると嬉しかったんだけど・・・
940Name_Not_Found:2011/01/16(日) 15:15:55 ID:???
>>939
こんなのもあるよ。NILScript
ttp://hibari.2ch.net/test/read.cgi/tech/1270139718/
941Name_Not_Found:2011/01/16(日) 16:12:26 ID:???
WSH使うってんならconfirmは

WScript.CreateObject("htmlfile").parentWindow.confirm("OK?");

とかやれば出来る。
942Name_Not_Found:2011/01/16(日) 16:48:07 ID:???
>>940-941
また調べてみます。

しかし、function内でグローバル変数が作られるなんて・・・・
この1時間半を返して orz
943Name_Not_Found:2011/01/16(日) 18:15:25 ID:???
^ってべき乗じゃないのかよ・・・
944Name_Not_Found:2011/01/16(日) 18:20:57 ID:???
N-88 BASICの頃以来見たことないな
945Name_Not_Found:2011/01/16(日) 18:47:51 ID:???
べき乗が「**」って、どの言語だっけ?
946Name_Not_Found:2011/01/16(日) 18:48:34 ID:???
FAQに入れるファイルアクセスの項目の文案ありませんか。
単に「ローカルファイルを読み込みたい」「できません」
とかでいいのかな?
947Name_Not_Found:2011/01/16(日) 18:52:24 ID:???
>>945 FORTRANとかRuby
948Name_Not_Found:2011/01/16(日) 19:37:27 ID:???
>>946
ローカルファイルならQ2/A2になるでしょ
これにサーバーサイドのAも付け加える形でいいんじゃないかな

A2はCookieの利用でローカルに読み書きできるとは言えない?
クライアントへの限定的な入出力→Cookieの利用
サーバーサイドでの入出力→Perl、PHPの利用(スレ違い)

あとこのスレでも話題になったサーバーサイドJavaScriptについても
一応触れておくとか
949Name_Not_Found:2011/01/16(日) 19:46:00 ID:???
950Name_Not_Found:2011/01/16(日) 19:54:15 ID:???
たまにいるURLだけ貼る奴って何なの
951Name_Not_Found:2011/01/16(日) 19:59:01 ID:0Aw6tvjD
質問です。下のコードをもとに、test1で参照しているeのmarginTopの値を、
test2でsetIntervalを使いスライドさせたいのですが、うまくいきません。
--------------------------------------------------
function test1() {
var e = document.getElementById('id');
e.style.marginTop = test2();
}
function test2() {
return 50 + "px";
}
--------------------------------------------------
いくつか試してみたコードがあるのですがどれもうまく動きません。
例@
--------------------------------------------------
function test1() {
var e = document.getElementById('id');
e.style.marginTop = test2();
}
function test2() {
setInterval(function() {
var q = q + 1;
return q + "px";
}, 100);
}
--------------------------------------------------
952Name_Not_Found:2011/01/16(日) 20:00:30 ID:0Aw6tvjD
例A
--------------------------------------------------
function test1() {
var e = document.getElementById('id');
e.style.marginTop = setInterval(test2, 100);
}
function test2() {
var q = q + 1;
return q + "px";
}
--------------------------------------------------
例B
--------------------------------------------------
function test1() {
var e = document.getElementById('id');
setInterval(function() {
e.style.marginTop = test2();
});
}
function test2() {
var q = q + 1;
return q + "px";
}
--------------------------------------------------
分かる方がいたらお願いします。
953Name_Not_Found:2011/01/16(日) 20:05:00 ID:???
alert(q)してみなよ
954Name_Not_Found:2011/01/16(日) 20:08:36 ID:???
HTML5策定でAPIがかなり充実するからFAQ大幅書き換えしないと駄目だろうな
ajaxなファイルアップロードなんかも簡単に実装できるようになるし。
function fileUpload () {
 var files = document.getElementById("file").files; // Blobの配列
 var req = new XMLHttpRequest();
 var data = new FormData();

 for (var i = 0; i < files.length; i++) {
  data.append("file[]", list[i]);
 }

 req.open("POST", "index.php", false);
 req.send(data);
}
955Name_Not_Found:2011/01/16(日) 20:17:27 ID:0Aw6tvjD
>>953
あ、すいません(><)初歩的なミスでした。
--------------------------------------------------
function test1() {
var e = document.getElementById('id');
var q = 0;
setInterval(function() {
e.style.marginTop = test2(q);
});
}
function test2(q) {
var q = q + 1;
return q + "px";
}
--------------------------------------------------
これでいけました。
956Name_Not_Found:2011/01/16(日) 21:16:32 ID:???
それじゃまあ、もう956だから今回は無理で、大幅改訂するのなら
次スレで早めに具体案を出してほしい。ということで、次スレは
本スレとおなじままで975超えたら。
957Name_Not_Found:2011/01/16(日) 21:19:10 ID:???
>>912からの流れは無視なの?
958Name_Not_Found:2011/01/16(日) 21:24:32 ID:???
合意ができた気がしないんですけど、>>912 からの流れだと「何をどう
直す」という合意ができたと思いますか?それを出してください。それに
反対がなければ変更したらいいんじゃないだろうか。具体的にFAQの何番を
どのように変更すると?
959Name_Not_Found:2011/01/16(日) 21:29:11 ID:???
そもそも900からテンプレ議論開始して
950で打ち切りで次スレ持ち越しとか
質問スレ内で間にレスをはさむのに50レスでどうにかしようってのが間違い
こんなことばかり毎回続けてるから変わりようがないんだよ
960Name_Not_Found:2011/01/16(日) 21:44:49 ID:???
それは同感なんだけど、いつもじゃあ次スレになったらさっさと
やろうねと言って、実際に次スレになったらいまいちテンプレ
論議が盛り上がらない、ということを繰り返してるから。
次は800でテンプレ論議してみるとかどうでしょうか?
961Name_Not_Found:2011/01/16(日) 22:56:20 ID:???
いや今度こそ最初にやればいいだろ。
950あたりでその辺りにレスアンカー張ってもらえればみんな思い出すし。
9621(ホントに1です):2011/01/17(月) 04:19:34 ID:5DKJvtc5
と思って書いたのが>>8ですしおすし。
963922:2011/01/17(月) 05:22:29 ID:???
>>926
やりたいことはそれなんですが、ちまちま弄っているんですが、全然できません
htmlファイルにjavascriptをまとめてしまうとうまく行くのですが、分離するとうまくいきません
upするのでどこがおかしいかヒントもらえないでしょうか?

http://www1.axfc.net/uploader/Sc/so/195127
pass:q(半角小文字のQ)
御手数おかけしますが、よろしくお願いします
964Name_Not_Found:2011/01/17(月) 06:32:44 ID:5DKJvtc5
>>963
>htmlファイルにjavascriptをまとめてしまうとうまく行くのですが、分離するとうまくいきません

ファイル見てないけど、getElementById( ID )っていうのは
「DOMツリーからid属性値がIDの要素を取ってこい」っていうメソッド

つまり、少なくとも目的とする要素がDOMツリーにぶら下がるまでは、実行しても意味がない
なので、分離したときに適切なタイミングで実行できてないのが原因だと思う

んで、一般的に「DOMツリー完成したよイベント」に、実行したい関数をアタッチするのが
主流なんだけれども、旧IEとかで書き方が違うから、あえてレガシーな書き方をすると

body.onload = function(){
    for(var i=0 ; i<10 ; i++){
        document.getElementById("menu" + i).onclick = function(){ hoge(i); };
    }
}

って外部ファイルに書いて<script>要素で読みこめばいいんじゃないかな
HTMLとDOMとJSについて考えながら、調べたり書いたりするといいかも
965Name_Not_Found:2011/01/17(月) 06:34:14 ID:5DKJvtc5
主流は言い過ぎでした
俺はよくやる、とでも置き換えてくださいまし
すまんこ
966Name_Not_Found:2011/01/17(月) 06:34:52 ID:5DKJvtc5
あああ。
body.onloadもwindow.onloadですな
967Name_Not_Found:2011/01/17(月) 06:56:50 ID:???
>>964
最初の質問と同じミスしてるよ
968922:2011/01/17(月) 08:01:50 ID:Cu9XeuHV
tab.view()の引数見てると変な数値が渡されていました・・・
しかもすべてのタブが同じ引数を渡しているみたいです・・・
しかし、なぜこの数値が渡されているのか理解できません
init関数のfor文の変数iの現在の値が渡されています

969922:2011/01/17(月) 08:08:01 ID:???
すいません
>>926さんのを参考にして新たに関数作りそれに引数を渡して
tab.view()に引数毎渡したらできました
何故関数を挟むとできるようになるんですか?
それを理解したいです・・・
970Name_Not_Found:2011/01/17(月) 08:28:14 ID:???
>>969
FAQのQ14/A14を読んでないだろ。それとおなじ現象(現時点のiが
取れてしまうという点で)。FAQはまず熟読すべきだと思わんかね。
971Name_Not_Found:2011/01/17(月) 08:31:58 ID:oKVu1L+F
>>967
ああああああああ!!

for(var i=0 ; i<10 ; i++)(function(n){
    document.getElementById(n).onclick = function(){ hoge(n); };
})(i);

書き方はともかく、スコープつくってその中に封じ込める感じで
ほんとすんません…
972922:2011/01/17(月) 08:52:19 ID:Cu9XeuHV
>>970
すいません、熟読すべきでした。
これからは気をつけます
9731:2011/01/17(月) 18:36:50 ID:uRyN2JFp
テンプレ議論スレ、別途たてますかね?
さして迷惑にもならんと思うんですが
974Name_Not_Found:2011/01/17(月) 18:48:57 ID:???
質問です。Win7のIE8において、

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

と宣言して、

<body id="MA_body" onload="EventA();" onScroll="EventA();">

と書くと、ロード時には動きますが、スクロール時に動きません。
色々検索してみましたが、サッパリです。解決方法がありましたら教えて下さい。
975Name_Not_Found:2011/01/17(月) 18:53:25 ID:x25E+EsE
本に書いてあることをほとんどそのまま実行しているんですが出来ません。

function getText(){
cacheTime=(new Date()).getTime();

httpObj=new XMLHttpRequest();
httpObj.open("get", "http://***/getNewText.php?time="+cacheTime, true);
httpObj.send(null);
newText=httpObj.responseText;
alert(newText);
}

alertを使って確認してみたら関数はちゃんと呼び出されていました。
リクエスト先のURLにブラウザでアクセスしたらちゃんと文字データが帰ってきました

しかし、上のスクリプトではalertは表示されますが中に何も書いてありません

正しくテキストデータが取得出来ていないようです。
どこが間違っているか教えてください。
976Name_Not_Found:2011/01/17(月) 19:18:28 ID:???
>>941
できた。

ただ・・・
ググれば解るだろとタカを括っていたけど、ほとんど掛からなかった。
日本人でこれを理解できてる人は、きっと28人ぐらいしかいない特殊な手法
なんだろう、と勝手解釈することにした。
977Name_Not_Found:2011/01/17(月) 19:26:39 ID:uRyN2JFp
>>974
スクロールするのってbodyでいいんだっけか?windowな気が

>>975
非同期なんよ。
だからsendメソッド叩いても、返答があるまで待ったりしない。

xhrにreadystateってプロパティがあって、通信状況によって値が変わる。
で、変わるたびにreadystatechangeイベントが発生するから
それを使ってレスポンスを受け取ります。

つか、そんなふうに本に書いてあった?
978Name_Not_Found:2011/01/17(月) 19:35:15 ID:x25E+EsE
>>977

できたぜ!

仕組み理解したw

ありがとうございます
979Name_Not_Found:2011/01/17(月) 19:35:22 ID:???
function getText(){
 cacheTime=(new Date()).getTime();

 httpObj=new XMLHttpRequest();
 httpObj.open("get", "http://www.yahoo.co.jp/", true);
 httpObj.send(null);
 httpObj.onreadystatechange = func;

 function func(){
  if( (httpObj.readyState == 4) && (httpObj.status == 200) ){
   newText=httpObj.responseText;
   alert(newText);
  }
 }
}

>>977がおっしゃったようにこんなかんじ
200以外が返ってきたときのことも考えておけ
980Name_Not_Found:2011/01/17(月) 20:46:47 ID:uRyN2JFp
>>979
補足なんだけど、ロードする対象をキャッシュしてしまうと
糞ブラウザでreadystateが4のまま変化しないことがある
ので

if(xhr.readyState == 4 && !!xhr.responseText) //やりたい事;
else onreadystatechange = function(){
    if(xhr.readyState == 4 && !!xhr.responseText) //やりたい事
}

みたいな周りくどいことしてます、自分は。
981Name_Not_Found:2011/01/17(月) 20:48:58 ID:uRyN2JFp
980過ぎちゃった
とりあえずテンプレはママで次スレたててきます
テンプレ議論スレ建てるかどうか決めましょう
982Name_Not_Found:2011/01/17(月) 20:58:00 ID:uRyN2JFp
983Name_Not_Found:2011/01/17(月) 23:05:48 ID:???
>>981-982 おつかれ様でした、ありがとうございます(今日は全然アクセス
できませんでした)
984Name_Not_Found:2011/01/17(月) 23:23:07 ID:???
>>975
考え方
985974:2011/01/18(火) 01:24:31 ID:???
>>977
chrome、Firefoxはbodyでonscrollイベントが発生します。

IE用にbody.onscrollで書くと、「document.getElementById(...)はNULLまたはオブジェクトではありません。」と言われます。

それでものすごく困っています…。どうにかIE上でbodyから呼び出す方法はありませんか?
986Name_Not_Found:2011/01/18(火) 02:53:12 ID:???
onscrollは発生しているってことかな?
他に原因ありそうだから、もう少しコードが見たい
987Name_Not_Found:2011/01/18(火) 09:06:34 ID:???
988Name_Not_Found:2011/01/18(火) 10:56:50 ID:???
>>985
間違っている部分を修正する事です。
989Name_Not_Found:2011/01/18(火) 15:56:42 ID:???
>>985
ロード時にスクロールバーが発生する時点でスクロールしてるかも
DOMContentLoadedまでまつべきかも
990Name_Not_Found:2011/01/19(水) 00:32:43 ID:HfWvC9SN
"ppppp"というようにpを5個作る
一番簡単な方法を教えてください。
991Name_Not_Found:2011/01/19(水) 00:37:52 ID:???
>>990
Array(5+1).join("p"); // ppppp
http://phpjs.org/functions/str_repeat:526
992990:2011/01/19(水) 01:07:01 ID:???
>>991
深夜にすみませんでした。forよりはいいですね。
ありがとうございます。
993Name_Not_Found:2011/01/19(水) 01:58:37 ID:???
>>991
横からですまんがこれってどんな原理?
面白いので誰か解説お願いします
994Name_Not_Found:2011/01/19(水) 02:22:29 ID:???
Array.joinは配列の要素を文字列により連結する
[1,2,3].join('-'); // "1-2-3"
995Name_Not_Found:2011/01/19(水) 02:27:40 ID:???
>>994
ありがとう、根本的な勘違いをしていたよ・・・

しかしよくこんな方法思いつくね
連続する長い文字列の生成には便利だな
使う機会は少なそうだけど
996Name_Not_Found:2011/01/19(水) 08:55:14 ID:???
997Name_Not_Found:2011/01/19(水) 16:47:24 ID:6/sbTjZN
埋めますわよ
998Name_Not_Found:2011/01/19(水) 20:09:21 ID:???
>>991
効率は良くないような気はするが、短く書けるな。
999Name_Not_Found:2011/01/19(水) 20:29:26 ID:???
999
1000Name_Not_Found:2011/01/19(水) 20:30:37 ID:???
次スレ
+ JavaScript の質問用スレッド vol.83 +
http://hibari.2ch.net/test/read.cgi/hp/1295265321/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。