+ JavaScript の質問用スレッド vol.74 +
1 :
● :
2009/10/13(火) 18:08:03 ID:???
【質問を書く上で】 1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。 2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!) 長い(1レスに入らない)場合はアップロードしてURIを貼る。 3)初心者という言葉は危険なので使わない方がよい。 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。 4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。 ただ「動きません」「エラーです」は何も情報がないため嫌われる。 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!! OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。 5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度 手間を食わせる可能性大(現行Ver.:IE5.5-6、N6-7、Opera7-8) 6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け! 7)質問はまっとうな(他人に理解できる)日本語で。 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
【質問を書く上で】 1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。 2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!) 長い(1レスに入らない)場合はアップロードしてURIを貼る。 3)初心者という言葉は危険なので使わない方がよい。 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。 4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。 ただ「動きません」「エラーです」は何も情報がないため嫌われる。 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!! OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。 5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度 手間を食わせる可能性大(現行Ver.:IE5.5-6、N6-7、Opera7-8) 6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け! 7)質問はまっとうな(他人に理解できる)日本語で。 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
【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"」としないとページ移動しちゃうから。
【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が置き換え前の文字列全体になります。 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()。
おわり
【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"」としないとページ移動しちゃうから。
JSON(;;)
13 :
Name_Not_Found :2009/10/13(火) 18:31:49 ID:Z7CyM/RH
ジェーソン君のデビューに期待あげ
>>12 まあ中二病的発想だろうね
三年生ともなれば経済ってもんが大まかにでも分かって来て個々人が自分自身の為に精一杯頑張る事が
最も社会(彼らは地球・世界・市民といった表現が好きなようだが)の為になるって事に気付くもんだけど
深いな
<canvas width='50' height='50'> </canvas>
誤爆しますた
なんでabsoluteで要素重ねるようなコンテンツって 全画面デザインが多いの。
ひとつでもabsoluteさせると全部にposition決めないと デザインが崩れるから
坊やだからさ
てか、レイヤーとして扱えるような要素はないのだろうか。 positionでもいいけど、もっと<layer>〜</layer> みたいな感じでさ。
>>21 見栄えにしかならんものはCSSでやるっていうのがHTML4頃のポリシーだろ
HTML5は知らん、つーかスレチ
23 :
Name_Not_Found :2009/10/14(水) 11:53:18 ID:dy09/8qy
<html> <head> <script type="text/javascript> function test1() { return txt = "テキスト文章"; } function test2(txt) { alert(txt); } test1(); test2(); </script> </head> <body> </body> </html> test1で作った変数txtを、test2でアラートで表示したいのですが varを付けてないのでグローバルで扱えるのかと思ったのですが何も表示されません どなたかアドバイスをよろしくお願いいたします
>function test2(txt) { x = 1; function f1() { alert(x); } function f2(x) { alert(x); }; function f3() { var x; alert(x); }; f1(); f2(); f3(); 仮引数はローカル変数
26 :
Name_Not_Found :2009/10/14(水) 13:07:34 ID:yPtgZOlO
JSONでみかん・200円のところの配列を消してインデックスを詰めたいのですが
delete arrayJSON.list[1]ではインデックスが詰められません
そこでspliceを利用したいのですが、arrayJSON.list.splice(1,1)では消えませんでした
どなたか配列を消してインデックスを詰める方法を伝授してください。
【test.html】
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
<html xmlns="
http://www.w3.org/1999/xhtml " xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>test</title>
<script type="text/javascript" src="test.js"></script>
</head>
<body>
<button onClick="test()">テスト</button>
</body>
</html>
【test.js】
arrayJSON = {"list":[
{"food":"りんご","yen":"100円"},
{"food":"みかん","":"200円"}
{"food":"パイナップル","":"500円"}
]}
arrayJSON.list[1].splice;
alert(arrayJSON.list);
>>26 質問がよくわからない。
単純に配列のある要素を削除したいってこと?
それならapliceで削除できるはず。
var a = [1,2,3];
a.splice(1,1);
alert(a); //1,3
多分他のところでエラーが起きてる
・配列の要素はコンマで区切る
28 :
Name_Not_Found :2009/10/14(水) 13:54:20 ID:yPtgZOlO
一次元配列?の場合ですと27さんの通りで問題ないのですが JSONの場合だとspliceで消すことができませんでした 代替策として、deleteで消してからprototype.jsでundefined要素を削除することで対応できましたので解決とします
>>28 環境何?
Firebugで試したけど、やりたいことできてるみたいだよ?
console.log(arrayJSON); // 3つある
console.log(arrayJSON.list[1]); // みかん
console.log(arrayJSON.list.splice(1,1)); // みかんが取り出される
console.log(arrayJSON); // 2つになってる
そもそもみかん200円て高いよ
getElementsByTagNameは入れ子にできないんでしょうか? うまく動作しないのですが……。 var div = document.body.getElementsByTagName("div"); for (var i = 0; i < div.length; i++) { p = div[i].getElementsByTagName("p"); for (var j = 0; j < p.length; j++) { 略 } }
>>31 そのまま実行してみたけど上手く行くよ。うまく動作しないって実際にどうなってるの?
33 :
26 :2009/10/14(水) 15:08:33 ID:???
>>29 環境はFirefox3.5です
>>26 に書きもれたのですがarrayJSON.list[1].splice(1,1)では削除されてませんでした
ファイルの文字コードはどちらもUTF8です
>>30 すいませんでした
以下のように書き換えます
【test.js】
arrayJSON = {"list":[
{"food":"りんご","yen":"35円"},
{"food":"みかん","":"25円"}
{"food":"パイナップル","":"200円"}
]}
34 :
31 :2009/10/14(水) 15:13:07 ID:???
>>33 別の所が原因じゃない?やっぱりうまく行くよ
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
<html xmlns="
http://www.w3.org/1999/xhtml " xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>test</title>
<script type="text/javascript">
var test = function() {
var arrayJSON = {"list":[
{"food":"りんご","yen":"100円"},
{"food":"みかん","":"200円"},
{"food":"パイナップル","":"500円"}
]};
arrayJSON.list.splice(1,1);
var list =arrayJSON.list;
for (var i=0,l=list.length; i<l; ++i) {
for (var key in list[i]) {
alert(key + ":" + list[i][key]);
}
}
}
</script>
</head>
<body>
<button onClick="test()">テスト</button>
</body>
</html>
>>33 数点きになる箇所が。
arrayJSON.list[1].splice(1,1)
・spliceメソッドは配列の要素に対して実行するのではない
=> arrayJSON.list.splice(1,1);
arrayJSON = {"list":[
{"food":"りんご","yen":"35円"},
{"food":"みかん","":"25円"} //, ここにコンマを入れるべき
{"food":"パイナップル","":"200円"}
]}
・途中、コンマが抜けてる
・質問するときに関係のない語を含めない。(JSON)
質問がボケる。
37 :
Name_Not_Found :2009/10/14(水) 15:39:07 ID:dLuPtxFR
>>33 少なくともfirebugのコンソールで試した限りでは問題ないよ。
var arrayJSON = {"list":[
{"food":"りんご","yen":"35円"},
{"food":"みかん","":"25円"},
{"food":"パイナップル","":"200円"}
]}
console.log(arrayJSON); // -> Object list=[3]
arrayJSON.list.splice(1,1);
console.log(arrayJSON); // -> Object list=[2]
>>34 p要素はあるの?
あと蛇足だけど、div.lengthやp.lengthはiやjと一緒に変数に入れてしまった方が、
ちょっと速くなるよ。
>>34 こんな感じだよ?HTMLがどっかおかしいんじゃない?
<html xmlns="
http://www.w3.org/1999/xhtml " xml:lang="ja" lang="ja">
<head>
<title>test</title>
<script type="text/javascript">
var init = function() {
var result = [];
var div = document.body.getElementsByTagName("div");
for (var i=0,l=div.length; i<l; ++i) {
result.push(div[i].id + "<br>");
p = div[i].getElementsByTagName("p");
for (var j=0,m=p.length; j<m ; ++j) {
result.push(" " + p[j].id + "<br>");
}
}
document.getElementById('result').innerHTML = result.join('');
}
</script>
</head>
<body onload="init()">
<div id="div1-1"><p id="p1-1"></p><p id="p1-2"></p></div>
<div id="div2-1"><p id="p2-1"></p><div id="div2-2"><p id="p2-2"></p></div></div>
<div id="result"></div>
</body>
</html>
ジェーソン君の人気に嫉妬あげ
40 :
26 :2009/10/14(水) 15:52:36 ID:???
arrayJSON.list.splice(1,1);の後にarrayJSON.list = arrayJSON;って代入したらうまくいきました
javascriptの記載されたページでonclickで配列に要素を足したり引いたりするページがあります これをブラウザを閉じたりページを更新すると初期化されますが、初期化しないで保存しておける方法ってありませんか?
>>40 え。え。ちょっとそれ何か解決方法が違うなw
根本的な解決になってない気がするよw
>>41 cookieに入れるとかじゃない?cookie拒否してたら意味ないけどそれが一般的。
>>37 >>38 サンプルコードが微妙に違ってました
すみません・・・
<html>
<head>
<script type="text/javascript">
var init = function() {
var div = document.body.getElementsByTagName("div");
for (var i = 0; i < div.length; i++) {
if (div[i].getAttribute("className") == "foo" ||
div[i].getAttribute("class") == "foo") {
div[i].appendChild(document.createTextNode("ろ"));
} else {
var p = div[i].getElementsByTagName("p");
for (var j = 0; j < p.length; j++) {
p[i].appendChild(document.createTextNode("に"));
}
}
}
}
</script>
</head>
<body onload="init()">
<div class="foo"><p>い</p></div>
<div><p>は</p></div>
</body>
</html>
>>44 結局できたって意味でいいんだよね?
その例だと最後の閉じかっこが全角なのとp[i].appendChildがp[j].appendChildの間違いだと思うけど、
動き自体は問題ないってことでしょ?
prototypeやjqueryなどのライブラリはajaxさえ使わなければ ローカルでも動作しますか?
試せばわかる
>>45 できてません
サンプルコードは動いても手元のコードが動かないorz
状況を整理してからまた来ます・・・
IMEの文字の線形データを取得してみたいんですけど やはりデータベース化してそこから取得しないと無理でしょうか?
画像をクリックすると背景が黒くなって大きなサイズの画像がポップアップしてくるjavascript探してるんだけど、教えろ、ゴラ
大きなサイズの画像がポップアップしてくるってのはムリだろks
ttp://www.php.net/ PHPの公式サイトにこんなコードがうめこまれてました(たぶん何者かに不正に書き換えられた)
これはどんなコードなんでしょうか?
function okc(f){var c=[38,38,40,40,37,39,37,39,66,65,13],
x=function(){x.c=x.c||Array.apply({},c);x.r=function(){
x.c=null};return x.c},h=function(e){if(x()[0]==(e||window.event).keyCode){
x().shift();if(!x().length){x.r();f()}}else{
x.r()}};window.addEventListener?window.addEventListener('keydown',h,false):document.attachEvent('onkeydown',h)}
okc(function(){document['phplogo'].src='
http://static.php.net/www.php.net/images/php_konami.gif '});
>>52 ある順であるキーを押した場合にPHPのロゴ画像を入れ替えようしたみたい。
↑↑↓↓←→←→ba[Enter]
仲間に「俺すごいだろ!」って言いたかったんじゃないかな?
そこまでたちの悪いものじゃない
>>52 コナミコマンドだな。
不正に書き換えられたわけじゃないと思う。<script>の書き忘れかな。
>>52 とくに不正なコードとは思わんけど?
短いコードなんだから読めばわかるでしょ。
ヒント: 38=DOM_VK_UP 40=DOM_VK_DOWN 37=DOM_VK_LEFT 39=DOM_VK_RIGHT
66=DOM_VK_B 65=DOM_VK_A 13=DOM_VK_RETURN
x=function(){x.c=x.c||Array.apply({},c);x.r=function(){ x.c=null};return x.c},h=function(e){if(x()[0]==(e||window.event).keyCode){ x().shift();if(!x().length){x.r();f()}}else{ x.r()}};window.addEventListener?window.addEventListener('keydown',h,false):document.attachEvent('onkeydown',h)} この辺が絶対ウイルス
画像に絶対怪しいコードが埋め込まれてるだろ だって普通あの画像使ったら著作権に引っかかるだろ
なんだっていいよPHPスレでやれよ ・・・本スレどれだ?w
canvasでデータスキームのデータ(data:image/png;base64,〜〜というようなやつです) を丸ごと取得したいのですがどうやればいいのでしょうかよろしくおねがいします。
くたばれ丸投げ厨房
>>61 右クリック、画像の表示でローケーションバーをコピー
64 :
Name_Not_Found :2009/10/15(木) 19:56:00 ID:R8ARwIyr
時差をつけないとクリックすると片方の動作しか見てる人は確認できないんじゃない?
66 :
Name_Not_Found :2009/10/15(木) 20:14:03 ID:wIvDj3a0
>>64 キャッシュしてから次のページへ行く、ってことかね。
imgのonload(IEだとreadystate見た方がいいかも)で
location.hrefを変えればいいんじゃないかな。
>>64 GetImg()が終わった直後にページ移動するよね
ブラウザ毎に微妙に動作が違いそうだから setTimeoutとlocation.hrefが無難な気がしないこともない リンクがあまりないのなら思いきって onloadで読み込ませた方が無難な気がしないこともない
>>64 イメージを読み込んだ後にページ移動ならこうかな
<script type="text/javascript">
window.onload = (function(){
document.getElementById("wwwwwwww").onclick = function(){
var img = document.createElement("img");
img.src = "画像のURLをここに!!";
img.onload = function(){
alert(this);
location.href = document.getElementById("wwwwwwww").href;
};
return false;
};
});
</script>
</head>
<body>
<a href="
http://example.com/hoge/ " id="wwwwwwww">りんく!</a>
70 :
Name_Not_Found :2009/10/15(木) 23:25:25 ID:FhP4Zlsd
3秒カウントダウン→マウスカーソルの位置を取得→1秒後のカーソルの位置を取得 して、一秒前と一秒後のカーソルのX,Yを計算するにはどうしたら良いですかね? カウントダウンの部分はわかるんで結構ですが。
マウスカーソルの座標が分かるなら答えるまでも無いだろ ということはマウスカーソルの座標が取得できないという事か? だったらカウントダウン云々はいらないだろ
72 :
Name_Not_Found :2009/10/15(木) 23:49:20 ID:FhP4Zlsd
あ、その瞬間瞬間の座標を変数に入れたいんです カウントダウンはその一瞬であることを示したかったんで。 マウスカーソルの位置って普通に作ると次マウス動かしたら値が変わっちゃうんで…
73 :
Name_Not_Found :2009/10/15(木) 23:57:21 ID:wnsURVT0
ボタンを押したら3・・2・・1・・0ってカウントしたいのですが PHPでいうとsleep(1);で1秒時間を止めるみたいなことってどうかくのでしょうか? echo 3; sleep(1); echo 2; sleep(1); echo 1; sleep(1); echo 0;
75 :
Name_Not_Found :2009/10/16(金) 00:22:05 ID:7uCB7A46
とあるテンプレートをDIVの中に作って、 それをcloneNodeで複製してappendChildするプログラムを組んでいます。 たとえば、 <div id="template"> <div class="name">Name_Not_found</div> <div class="age">20</div> </div> 実際はもっと複雑です。 プログラム側では、 var c = document.getElementById("template").cloneNode(true); c.getElementsByTagName("div")[0].innerHTML = "name not found"; c.getElementsByTagName("div")[1].innerHTML = "30"; と処理していますが、DOMの順番を変えるごとにここを書きなおすのは 非常に汚くてなんとかしなければ…と思案しています。 このような状況では皆さんどのように処理を書いていますか?
>>75 ・関数をつくる
・getElementsByTagName()ではなくクラス名で検索する
XPath使えばいいとおもうよ
>>75 こんな感じかねぇ
function hoge(a1, a2) {
var c = document.getElementById(a1).cloneNode(true);
var o = c.getElementsByTagName("div");
var n = o.length;
for (var i = 0; i < n; i++) {
var id = o[i].id;
for (var s in a2) {
if (id == s) {
o[i].innerHTML = a2[s];
break;
}
}
}
return c;
}
var obj = {
n: "Name_Not_found",
a: "30"
};
<div id="template">
<div id="n" class="name">Name_Not_found</div>
<div id="a" class="age">20</div>
</div>
var c = hoge('template', obj);
笑うとこ?
>>63 それってjavascript関係ありますか?
toDataURI
83 :
Name_Not_Found :2009/10/16(金) 08:53:03 ID:PdoB+hjK
変数には何文字入れられますか?太宰治の「人間失格」を 変数に入れられますか?そうすると持ち歩きに便利なので すが。教えてください。
持ち歩きに便利・・・?
なにそれこわい
初めて見たけどコピペじゃないのか ちょっと面白いじゃないか 変数に入れたとして、JavaScriptを何で持ち歩くのか気になる
>>75 専ブラならエディタにコピーして見てくれな。
<div id="template">
<div id="contents">
<div class="name">Name_Not_found</div>
<div class="age">20</div>
</div>
</div>
var template = document.getElementById("template");
var oldDiv = template.firstChild;
var newDiv = oldDiv.cloneNode(true);
var nodes = newDiv.childNodes;
// id(contents) が必要ならばコピー
newDiv.id = oldDiv.id;
var i, l = nodes.length;
var name, map_;
if (!!document.hasAttribute) {
// not IE
for (i = 0; i < l; i++) {
if (nodes[i].hasAttribute("id")) {
name = nodes[i].getAttribute("id");
if (name == "name") {
} else (name == "age") {
...
}
// 他による変更を無視する場合
continue;
}
// class の有無で区別 if (nodes[i].hasAttribute("class")) { name = nodes[i].getAttribute("class"); if (name == "name") ... } else { // タグで区別 name = nodes[i].nodeName.toLowerCase(); if (name == "div") ... } } else { // IE は hasAttribute が無い 同上 ※ getAttribute("class") → getAttribute("className") } template.replaceChild(newDiv, oldDiv); 上の hasAttribute 以降ベタ書きだが || や Wrapper 関数を作ればもっと短くなる。 また、セット時に if else で書いているが id,class等の名を key とした連想配列でマップ作っておけば コードが減って追加する場所も map に限定されて楽。 var map = { id: {name: "...", age: ...}, class: {name: "...", age: ...}, tag: {div: "...", input: "..."} }; // class の区別はこうなる if (nodes[i].hasAttribute("class")) { map_ = map.class; name = nodes[i].getAttribute("class"); if (typeof map_[name] != 'undefined') nodes[i].hoge = map_[name];
var map の位置はグローバルや上位スコープに置くだろうから var name, map_; は var name, map_ = map; にして // map_ = map.class; name = nodes[i].getAttribute("class"); if (typeof map_.class[name] != 'undefined') nodes[i].hoge = map_.class[name]; になる
人間失格は8バイトぐらいじゃないか?
正しいJavaScriptの書き方を覚えたいのですが MDCで勉強するのがいいのでしょうか?
92 :
64 :2009/10/16(金) 13:17:17 ID:FVxfLBkE
>>65 〜69
レスありがとうございます。
>>69 うまく画像を取り込めました。ありがとうございました。
ただ、target="_blank"を付けたのですが、
別ウインドウに表示されませんでした。
リンク先のホームページを別ウインドウに表示させるようにするには、
どうすれば良いのでしょうか?
よろしくお願いします。
93 :
Name_Not_Found :2009/10/16(金) 13:53:35 ID:fXf8+52m
画像を上から下に降らせるjavascriptってありますよね それってどのような仕組みなのでしょうか?
>>93 タイマー使ってCSSいじる
つーかそのコード見れ
95 :
Name_Not_Found :2009/10/16(金) 14:36:52 ID:yp2NSRTt
>>92 location.hrefをwindow.openに変えれ。
>>88 IE8にはhasAttributeあるし
IE8モードだとclassNameじゃ取れないだろ
97 :
92=64 :2009/10/16(金) 16:33:59 ID:FVxfLBkE
>>95 レスありがとうございます。
(1)window.openに変えると、
リンク先のホームページが表示されなくなりました。
(2)あと、location.hrefの時、
1回目のクリックでリンク先が表示された後、
IEの[戻る]で元の画面を表示し、再度クリックすると、
リンク先の画面が表示されません。
どうすれば良いのでしょうか。よろしくお願いします。
98 :
Name_Not_Found :2009/10/16(金) 18:04:27 ID:yp2NSRTt
>>97 >(1)window.openに変えると、
> リンク先のホームページが表示されなくなりました。
…いや、おいらの書き方が悪かった。
location.hrefを使わずに、window.openを使おう。
window.openは関数です。引数にURLを渡そう。
>(2)あと、location.hrefの時、
> 1回目のクリックでリンク先が表示された後、
> IEの[戻る]で元の画面を表示し、再度クリックすると、
> リンク先の画面が表示されません。
imgが既にloadedなのでonloadが発火しないからです。
if(/loaded|complete/.test(img.readyState)){
やりたいこと
}
みたいな処理を挟むのがいいかも。
>>83 文字数約73600+改行等で150〜160KB
変数に入れることは可能だろう
持ち運ぶとしてCookieに記録すると約40件になる
ちなみにモバイルのブラウザで40件は無理かもしれない
>>87 走査するノードのtypeチェックくらいしとこうよ
>>91 「正しい」ってのは効率的な書き方ってこと?
そうだったらjqueryとかprototypeだとか、そういったライブラリを
読めばいいと思うよ
読むだけじゃなくて自分の手も動かしてね
102 :
97 :2009/10/16(金) 19:13:13 ID:FVxfLBkE
103 :
Name_Not_Found :2009/10/16(金) 19:17:40 ID:wwHLFfqa
質問です。switchのdefaultって何のためにあるのでしょうか。 なくても結果が変わらないので外してもよいのでしょうか。
if文でいうelse節だよ (全ての)条件に一致しないものが流れ着く 不要なelse節が端折れるように、defaultが不要なら端折っていい
106 :
103 :2009/10/16(金) 19:28:28 ID:wwHLFfqa
defaultは先頭に置けるがな
マウスが動いてから一秒後に動いた後の位置のX座標とY座標を表示するスクリプトを組みたいんですが、 下がうまくいかないんですがどこが間違っていますか? 初歩的なミスでしたらすいません。 <script type="text/javascript"> //<![CDATA[ function checkMousePoint(e) { if(document.all) { var x = event.clientX; var y = event.clientY; } else { var x = e.clientX; var y = e.clientY; } var myText = "X : " + x + "<br/>"; myText += "Y : " + y + "<br/>"; document.getElementById("dispArea").innerHTML = myText; } document.onmousemove = SetTimeout(checkMousePoint,1000); //]]> </script>
マウスが動いてから一秒後に動いた後の位置のX座標とY座標を表示するスクリプトを組みたいんですが、 下がうまくいかないんですがどこが間違っていますか? 初歩的なミスでしたらすいません。 <script type="text/javascript"> //<![CDATA[ function checkMousePoint(e) { if(document.all) { var x = event.clientX; var y = event.clientY; } else { var x = e.clientX; var y = e.clientY; } var myText = "X : " + x + "<br/>"; myText += "Y : " + y + "<br/>"; document.getElementById("dispArea").innerHTML = myText; } document.onmousemove = SetTimeout(checkMousePoint,1000); //]]> </script>
110 :
Name_Not_Found :2009/10/17(土) 01:16:13 ID:a+bs1nMh
↑申し訳ありません。更新してしまいました
なにもかも
>>108 とりあえず、setTimeoutな?
JavaScriptは大文字小文字を認識するんで。
あと、checkMousePointの引数のeは何なのかを考えてみな?
>>111-112 ありがとうございました。
基本からきちんと学ぶことにします。
初心者のスレ汚しすいませんでした。
308 名前:Name_Not_Found[] 投稿日:2009/10/17(土) 01:33:56 ID:a+bs1nMh マウスが動いてから一秒後に動く前と動いた後のマウスのclientxとyの座標を表示させるスクリプトお願いします。 これはひどい・・・
<div id="dispArea" onclick="clearTimeout(t)"></div>
<script type="text/javascript">
var t = 0;
var x = 0;
var y = 0;
document.onmousemove = function (e) {
if (document.all) {
x = event.clientX;
y = event.clientY;
} else {
x = e.clientX;
y = e.clientY;
}
};
function checkMousePoint() {
var myText = "X : " + x + "<br/>";
myText += "Y : " + y + "<br/>";
document.getElementById("dispArea").innerHTML = myText;
t = setTimeout(checkMousePoint, 1000);
}
checkMousePoint();
</script>
>>113 がんがれ〜
if (document.all) これは不細工だな。 if (!e) これでよかろ。
それなら、下のを二行に分けるのも微妙な気がするぜ。 var myText = "X : " + x + "<br/>"; myText += "Y : " + y + "<br/>"; var myText = "X : " + x + "<br/>" + "Y : " + y + "<br/>"; 面倒だし、これでいんじゃね?
XHTMLでscript要素内に<br/>を直に書くとかもうね
きったねぇwwwwwwwwwwwwwwwwwwwwwwwww
innerHTMLで書換えるな
>>117 とやってることが対して変わらん
innerHTMLの書き換えがなぜいけないのか説明してくれたまえ
DOM木が以下略
銭湯にバスクリンを投入するのがなぜいけないのか説明してくれたまえと同レベル
innerHTMLはHTMLを直接いじってるのだから文字列にタグが含まれていてもいなくてもやってることは全く同じ
>>115 を見て即座に
>>119 のように思わなかった奴はinnerHTMLを使うな
HTMLの基礎からやり直すレベル
HTMLじゃなくてJavaScriptの勉強じゃね?
<script>内に<br>を仕込んだらいけない理由なんてあんの?
勉強すべきはxhtmlの基礎だろ html勉強してどうするんだ
なんか一概に言えなくて説明しにくいんだけど おそらく4の倍数から外れたときに計算処理が重くなる・・
日記ならチラシの裏に書いてくれ
ダメダメじゃなくてさぁ
>>115 なんて単純な構造なんだし
妥当なものに書き替えてやるなり、ピンポイントに
指摘するなりがあると助かるゾ。
誤爆だよカス いちいちレス消費するだろスルーしてろクズが
乱数生成なんですが、var arr = new Array(10)という配列があった とき、Math.randomに掛ける数値はそのままarr.lengthでいいのでしょ うか。それとも、arr.length-1ですか?arr.lengthだと最後の要素が 出ないように思うのですが。なんだかいろいろ考えていたら分から なくなってしまいました。やさしく教えてください。 あと、乱数結果の最小値と最大値を確認する方法ってありまうか。
>>135 Math.random は0以上1未満の乱数を発生させる
10倍すれば0以上10未満
あとは分かるな?
>>135 配列アクセスなら*length
Math.randomの返す値が0-0.99・・・だから
>>133 お前がやれ
このレベルで指摘できないならお前も二度とinnerHTMLを使うな
XHTMLがどうのって言ってるやつ、もしかして<br/>じゃなくて<br />だろって思ってんの?
一度に離れた位置にノードを挿入するには ツリー丸ごとコピーして挿入して元のツリーと差し換えるしかないの?
一度に離れた位置 の意味が解からんが 一度に複数のノードを挿入するのは innerHTML でも appendChild でも insertBefore でも replaceChild でも 好きなものを使え。
>>135 Math.random()*10+0)で0〜10
Math.random()*3242+1847)で1847〜3242
えっ
あっ
ミスった こっちが正解 Math.random()*10+0)で0〜9 Math.random()*3242+1847)で1847〜5088
その閉じ括弧はなにw あと境界条件をないがしろにしたらあかん 「"1未満"の最大値」の10倍は「"10未満"の最大値」であって9じゃないぞ
初心者はレスすんな
ア=Math.floor(Math.random()*イ+ウ) だったら ウ≦ア<イ+ウ(アは整数) だっけ? 心配だから試してみた イ=1000;ウ=1000;大=0;小=ウ*ウ; for(i=0;i<1000;i++){ア=Math.floor(Math.random()*イ+ウ);if(大<ア){大=ア};if(小>ア){小=ア}} エ="間違い";if(ウ<=小&&大<(イ+ウ)){エ="真偽不明"}if(ウ==小&&大==(イ+ウ-1)){エ="正しい"} alert("仮説が正しいとすると結果は\n"+ウ+"以上"+(イ+ウ)+"以下の整数のはず\n実際の結果は\n"+小+"〜"+大+"だから\n仮説は【"+エ+"】") 結果:合ってるっぽい
xとy座標指定するときにうっかり0の存在忘れそうになるんだがどうしたらいい
>>152 だからXHTMLじゃなくて、JavaScriptの話だろ?
あえて言うならSGMLの話かな
馬鹿の一つ覚え
結局「なんとなく」でしか理解してなくて きちんと説明できる奴はいないんだな
ぐぐってみた タグとして認識されてしまうから script 要素内に「<」「&」を書いてはならない →>とかであらわせばおk?
つまり
>>117 をこうしろってことか?
document.getElementById("dispAreaX").innerHTML = "X : " + x;
document.getElementById("dispAreaY").innerHTML = "Y : " + y;
162 :
135 :2009/10/17(土) 22:02:46 ID:???
乱数の質問者です。みなさんご回答ありがとうございました。コードと か読ませて頂きましたが余計分からなくなりました(笑
・JavaScriptとHTMLを連携させるためにDOMという概念を使ってアクセスしている ・innerHTML,innerText,textContentはDOM木を破壊する(再構築される)ので要素の書き換えのために使うべきではない ・innerHTML,innerTextは、元はMSが勝手に作った独自プロパティ ・IEのシェアが大きすぎるためやむを得ず他のブラウザも追従した ・要素を作るにはcreateElementとcreateTextNode、要素を追加するにはappendChild、 削除するにはremoveChild、置き換えるにはreplaceChildと専用のプロパティが存在する。 ・速度的にはinnerHTMLが早い(纏めてパースするため) たぶんこんな感じ。記憶が正しければ
失礼なやつ
>>159 外部のscriptファイルを読み込めばおk
確かに
>>115 は直接書いちゃってるから駄目だな
つまりなんだ、独自拡張だからinnerHTMLは駄目だと言ってるのか
XHTMLの話じゃないっしょ
>>163 なるほど。
正解はreplaceChildだが、速度を考えれば慣例化してるinnerHTMLって感じになるか?
>>166 どちらが正解とかそういう問題じゃないね
あえて言うなら状況に応じて使い分けるのが正解
innerHTMLはHTML5に含まれる(ことになっている)。 今更仕様的に非推奨みたい書くのは時代遅れ。 まあ、イベントリスナーが消えたり、scriptが実行されたりとか、 素人が使うとミスりやすいのは事実。
無粋を承知でまとめるとinnerHTMLは DOMツリーを壊すからいかんと言っているのと #PCDATAだからいかんと言っているのと2派いて 片方しか理解してない奴が数名いる感じ
プロパティじゃなかった。メソッドの間違いだった、
innerHTML,innerText, ...etcがプロパティだ
>>166 速度より〜.innerHTML = "String"みたいに代入だけで置き換えられるのが一番大きいと思う
replaceChildだと代入みたいに単純には出来ない
〜.replaceChild([置換後のノード],[置換前のノード]);
昔のMozillaのinnerHTMLは死ぬほど遅かった
>>169 もしかして
・innerHTML使うと多くの場合でリテラルに<>が出現する
・XHTMLのインラインスクリプトで<>は使えない
→だからXHTMLでinnerHTMLは使うな
というずれた主張してるヤツがいるってことか
>>129 の意味とかやっとわかったわ
つーかインラインスクリプトはCDATAで括るのがXHTMLの常識じゃなかったのか?
実態参照でも別ファイルでも構わんけどさ
DOMツリー云々は
>>6 でおk?
>>172 >つーかインラインスクリプトはCDATAで括るのがXHTMLの常識
え
>>172 さんよろしかったら「正しい知識を付けたい人のためのJAVASCRIPT」講座やってください
エスケープもできない奴にinnerHTMLを与えるなってことだろ innerHTMLに限らずdocument.writeだってそう まともにエスケープできてるものなんてまず見ない だからHTML5で妙な構文修正やら入ったんだぜ よかったなお前ら、ブラウザ様に感謝しろ それでもscript内の</は駄目だからバカの一つ覚えでこれだけは避けろ
>>175 訂正
バカの一つ覚えでscript内を<!--...//-->で囲め
</を避けるのは高度過ぎたな
>>176 だからそれXHTMLで通用しないからバカの一つ覚えになってない
賢いつもりのバカは声がでかいぶんただのバカより厄介だな
XHTMLで通用しないってのも時代遅れ感あるな。 わざわざ Content-Type: application/xhtml+xml 使うようなモノ好きな人はそんなことは百も承知だろうし。
>>177 ほとんどの奴はXHTMLをtext/htmlにしているから事実上HTMLと同じ
application/xmlなXHTMLを書ける奴なら
>>115 のようなミスはしない
HTML5は非XML構文でも<br/>を許すようにした
HTML5は非XML構文でscriptなど特定の要素内でのみ使える新構文<!--...-->を導入した
(これはコメントではない)
これらによりSGML互換の夢は完全に潰えたがそれはどうでもいい
バカは無理してXHTMLを書くな
HTMLにしとけ、な
てかスクリプトは別のファイルに書いとけよ
>>178 空っぽの容器が一番大きな音を立てるんだぜ?
183 :
Name_Not_Found :2009/10/18(日) 09:40:27 ID:4XCaQKiu
JavaScriptでブラウザーのステータスバーの文字を変更できますが、 これって何のためにあるのでしょうか。ユーザビリチィの点で問題で はないでしょうか。悪意のあるスクリプトが書けるようにどうし て放置されているのでしょうか。
おかげでJavaScript自体オフにされちゃうからなぁ JavaScript以外の言語、HTMLとかでも言えるけど 特にIE
>>183 ごめんけどRPG作ってた頃に
ブラウザ互換が面倒でよく使ってたわ
友達からはまあまあ好評だったけどなぁ
marquee要素やtarget属性的な
問題があるのはわかってるけど、消したくても互換性のために消すわけ にいかないというところだと思う。
setTimeoutとsetIntervalどっち使ったらいいかがわかりません。 場合によって使い分けするものなのか、好みなのか どっちなんでしょうか
誤差しかないから好みでいいときもあるけど、基本は使い分け
190 :
Name_Not_Found :2009/10/18(日) 19:09:40 ID:2WeTZpL7
IE8のことで困ってます。 何らかのイベントが発生した際にデフォルトのブラウザ動作を 行わないようにしたいと思っています。 しかし、IE8ではreturnValueにfalseを設定してもデフォルトの 動作が行われてしまいます。 どうすればいいでしょうか。アドバイスよろしくお願いします。 <div onmousedown="window.event.returnValue=false;">AAAA</div> ※テキストが選択されてしまう
191 :
190 :2009/10/18(日) 19:26:30 ID:2WeTZpL7
失礼しました。 私の勘違いでした。ちゃんとデフォルトの動作はキャンセルされてました;
クラス内のメソッドに対してクラス内で window.setInterval(this.Foo, 1000); としても動作しないのですが何が問題なのかご教授よろしくお願い致します。
193 :
192 :2009/10/19(月) 01:36:38 ID:???
スミマセン、自己解決ですorz this.Foo側で読み込んでいたメソッドにバグがあったようです。 スレ汚し申し訳ないです。
this.Foo 内のコードに this が書かれてるに 2 ペソ。
195 :
192 :2009/10/19(月) 01:44:24 ID:???
>>194 正解です、1000万ペリカ進呈いたします。w
どうしてエラーになるんですか?
196 :
Name_Not_Found :2009/10/19(月) 01:58:37 ID:h+JGiZjA
>>195 いやいや。
setIntervalに渡した関数はwindowオブジェクトのメソッドとして
呼び出されるんだよ。すなわち、thisはwindowオブジェクトを指してる訳。
>>195 今の場合、this.Foo に代入されてる function オブジェクトを「関数」として呼び出しているから。
this には Global オブジェクト(window オブジェクト)がセットされる。
コンテキストが分からないから何とも言えないが、
var that = this;
window.setInterval(function() { that.Foo(); }, 1000);
ならうまくいきそうな気がする。
やーね、また Geno が流行ってきてるの?
>>196 ,197,198
ご丁寧な解説ありがとうございました。^ ^
なぞが解けました。
javascriptってmainから始まらないの?
Yes
javascriptで格闘ゲームをつくってみたいのですが 何かデモのある良いサイト教えて
>>203 どうせならゼロから作ってみるのもいいかも
ライブラリを組むいうことは、すごい良い経験になるはず
よくjavascriptを使ってテキストエリアの文字色や背景、 見出しやリストなんかを編集できるサイトがあるけど(ブログとか)、 ああいう機能を実現するスクリプトでフリーでオススメのがあったら教えてください。 上に書いた程度のことが実現できれば良いです。 今はtinyMCE?だったかな?外なんで分からんけど、ちょっと高機能すぎてもてあまし気味。
>>202 えっ!javascriptってmainから始まるの?
うるさい
>>207 英語やってみな
あんた嬉しいんじゃない?
Does javascript begin with main ?
Yes, it does.
Does not javascript begin with main ?
Yes, it does.
215 :
Name_Not_Found :2009/10/19(月) 17:57:56 ID:/Ma7yI8j
tiddlywikiはIE,Firefox,operaでも動作するjavascriptを使ったwikiですが javascriptでファイルへの書き込みはできるのでしょうか?
>>215 ソース見りゃいいじゃん、ヒントはsaveFile
ネットとローカルでセキュリティポリシー違うのは忘れんな
217 :
Name_Not_Found :2009/10/19(月) 18:17:54 ID:h+JGiZjA
すみません。 IE8であるスクリプトの処理速度を測定するにはどうすればいいでしょうか? もしアドオンなどがありましたら、教えてください。 よろしくお願いします。
古典的だが、始まる前にnew Date() 終わったところでnew Date() 後者から前者を引く
var b = new Date().getTime; 〜ここに処理を書く〜 alert(new Date().getTime - b + "ms秒かかったよ!!");
220 :
217 :2009/10/19(月) 19:14:49 ID:h+JGiZjA
>>218-219 どうもありがとうございます。
Dateを用いて測定することにしたいと思います。
IE8のデバッガで測定できればよかったんですけどね。
221 :
Name_Not_Found :2009/10/20(火) 12:00:29 ID:j/Vxh/Ys
フォームの連続送信を防ごうと、以下のようなソースを書きました。 function formSubmit(){ document.getElementById('sbm').disabled = true; document.form1.submit(); } <form action="form.php" method="post" onsubmit="formSubmit"> <input id="sbm" type="submit" value="内容確認"> </form> ボタンを押した時、disabled状態になって連続送信を防げるのですが、 Firefox3.5.3では確認画面からブラウザの「戻る」で前に戻った時、 ボタンが押せません。IE7では入力画面に戻っても再びボタンを押せます。 どうやってFirefoxに対応させればいいのでしょうか?
222 :
221 :2009/10/20(火) 12:01:49 ID:???
すみません。ソースがちょっと変でした・・・。 function formSubmit(){ document.getElementById('sbm').disabled = true; document.form1.submit(); } <form name="form1" action="form.php" method="post" onsubmit="formSubmit();"> <input id="sbm" type="submit" value="内容確認"> </form>
>>222 確認してないからアイデア止まりだけど、window.onloadでdisabled = trueしてみたら?
それか、記憶(再設定)するのはフォーム関連だけだったと思うから、アプローチを変えて
submitしたときにフォーム外側のブロックをdisplay: noneにして「送信中」と表示するとか
224 :
221 :2009/10/20(火) 13:25:44 ID:???
>>223 windows.onloadでいけました。後者の方法も有りですよね。
1つの関数だけで納められればと思ったのですが、これらの方法を使います。
225 :
221 :2009/10/20(火) 13:30:24 ID:???
すみません、window.onloadは勘違いでした・・。 これを入れても前の画面に戻ったらボタンはdisabled状態です。 もう少し考えてみます。
Javascriptと直接絡むか微妙ですが、HTMLのselectタグによる プルダウンでプルダウンの項目一覧が開いた瞬間と閉じた瞬間 を取得できるイベントってありますでしょうか? 開くのをonMouseDown、閉じるのをonChangeでやっているのですが、 これだと値を変更しなかった場合に閉じるが取れなくて困っています。 代替案でもよいのでご教授いただけるとありがたいです。
>>226 selectのonchangeってブラウザによってタイミングが違ったような気がするけど...
>>227 言い忘れてましたが、IE8のみ対応の案件です。
なのでIE8限定の対処方法でもOKです。
onmousedownも微妙なんだよね。 Alt+↓とかで開いたりすることもあるし。 onchangeだって開かなくても変更(選択してから上下等)すれば起こる。 そのイベントで「何をしたいか」をはっきりさせてくれると代替案が出しやすい。
やりたい事は、プルダウンが開いた時にだけwidthを広げ、プルダウンが 閉じた時にwidthを元に戻すというものです。 プルダウンの項目の中に長い文字があって、元のwidthより広くなる場合、 IEだと広がった部分の幅が元のwidthと同じなので文字が全部表示され ないんですよね……。(Firefoxとoperaでは問題ないのですが)
ちとめんどくさいね。 開き方としてはつぎの二通り mousedown => focus focus => keydown こいつらフラグなり駆使して監視してやればOK それが自分でできないなら仕様を再検討するべき じゃ頑張って
232 :
Name_Not_Found :2009/10/20(火) 18:01:09 ID:3YpkaVyV
>>226 かなり無理があるやり方だけど。
var count = 0;
select.onfocus = function(){
select.onmouseup = function(){
count++;
if(count % 2 == 0){
// ここで、selectが閉じる(たぶん)。
select.onmouseup = null;
count = 0;
}
};
};
手づくりaddEventListenerで書いたのを、適当に書き直したから
間違いがあるかもしれない。
233 :
232 :2009/10/20(火) 18:02:51 ID:3YpkaVyV
リロードしないで書き込んだらかぶった… すみません。
>>231 ,232
ありがとうございます。アドバイスを参考に下記のようにしてうまくいきました!
var Count = 0
function SelectOnMouseUp(){
if(Count == 0){
document.form.pulldown.style.width = 50;
}
}
function SelectOnMouseDown(){
if(Count == 0){
Count = 1;
document.form.pulldown.style.width = 200;
}
else if(Count == 1){
Count = 0;
}
}
function SelectOnKeydown(){
if(Count == 1){
Count = 0;
document.form.pulldown.style.width = 50;
}
}
function SelectOnBlur(){
document.form.pulldown.style.width = 50;
}
<select name="pulldown" style="width:50px" onmousedown="javascript:SelectOnMouseDown()" onmouseup="javascript:SelectOnMouseUp()" onkeydown="javascript:SelectOnKeydown()" onblur="javascript:SelectOnBlur()" >
なんというjavascriptスキームの嵐…
<html></body> <div style="width:450;height:450px;border:1px solid blue;cursor:pointer;"> <canvas id="tes1" width=450 height=450 style="position:relative;background-color:rgb(200,0,0);"></canvas> <canvas id="tes2" width=450 height=450 style="position:relative;bottom:450px;background-color:rgba(0,0,200,0.5);"></canvas> </div><div style="border:1px solid black;">foot</div> </body></html> これfirefoxだとfoot含むした側に450pxらしきものがあったり operaだとfootの上に450*2px分出てきてしまうけど どうにかならんのかおしえて。 ・一番上のdivのwidthを450*2以上にして、bottomのところをleft:450px;というのはなしで ・absoluteもなしで
訂正 →left:-450px;
次の方どうぞー
240 :
Name_Not_Found :2009/10/21(水) 00:02:44 ID:yjVdHlcU
Cドライブの中におけば実行されるのに Gドライブの中に置いたファイルはJavaScriptが無効になって <noscript>の中身が見える 何だよこれ死ねよ
>>236 どうなって欲しいのかを書きなさいよ。
たぶんJavaScript関係ない。CSSの問題。
Gドライブなんて恐くて開けません><
<noscript>ならブラウザのセキュリティポリシーだろ CSS関係ない
245 :
Name_Not_Found :2009/10/21(水) 09:44:28 ID:pBH87KYD
Jscriptはjavascriptをカバーしていて独自の拡張性をもっているの ならJscrriptはjavascriptの上を行っているのですよね。そんなす ごいものならなぜみんな使わないのですか? あと将来的に、javascriptがJscriptになる日は来ますか?勉強した 方がよいでしょうか。
>>245 独自の拡張性を持っていることは優れているということに繋がらない
「IEのCSSが独自拡張してるから優れてますよね?」って言ってるのと同じ
なのでJavaScript勉強した方がいい
たとえばLinuxはウインドウの描画をするためにX Windowというものを使っている このX Windowは1987年に仕様が決定されて以来拡張や変更が行われずにほぼ完全な互換性を維持している 互換性って大切なんだぜ
var isNewIE = typeof(document.documentElement.style.msInterpolationMode) != "undefined" ? true : false; なんかもっとスマートなやり方があったような気がする。。。
>>248 IEのバージョン判定?
なら条件コンパイルで@_jscript_versionを見りゃいいだろ
var IE = false; /*@cc_on IE = true;@*/ alert(IE);
>>245 > javascriptがJscriptになる日は来ますか?
来ません
IE 専のサイト作るつもりならお好きにどうぞ
WSH で使えるから無駄にはならんと思うけど
Web 標準とはちょっと違う方向を向いてる訳です
10年前のネット初心者時代ActiveXは脅威だった まだダイヤルアップ時代だったからな エロサイトは100%なんかしら仕掛けがしてあるし アンチウイルスソフトは精度が低くてあてにならないし うっかりインストール許可してしまうと国際電話やらQ2に勝手に接続するプログラムがよくあったものだ JScriptとVBスクリプトは負の遺産 MSはNTTにとられた2万円を俺に返すべき
IEは負の遺産
( ;∀;) イイハナシダナー
当時はスクリプト、ActiveX切るのが当たり前だったな…
ダイヤルアップで切り忘れて大変なことになったなあ
>>249 XP SP3以降はIE6でもJScript5.7なんだけど
ビルドバージョンを見るの?
レンダリングエンジンの特徴を調べるのに スクリプトエンジンのバージョンを見ても仕方ない 逆も同じ いい加減isIEとかの無意味さに気付くべき
261 :
Name_Not_Found :2009/10/22(木) 06:14:33 ID:nMh36VKS
オブジェクト?内で他の要素にアクセスするにはどうしたらいいでしょうか var obj = { a : function () { alert('a'); }, b : function () { obj.a(); } // ここで a の alert('a')を出したい } 自分でもよくわからんことやってて混乱してます。 可能ならばお教えくださいm(__)m
263 :
Name_Not_Found :2009/10/22(木) 07:10:08 ID:nMh36VKS
264 :
Name_Not_Found :2009/10/22(木) 07:47:52 ID:qxFhJRXR
JavaScriptは、携帯ホームページでは使えないのでしょうか?
839 名前:nobodyさん[] 投稿日:2009/10/22(木) 07:53:18 ID:wrpHBrml Cookieは携帯ホームページでも使えるのでしょうか? まとめてレスしてやる ぐぐれば3秒でわかるようなことはググリなさい
貴様、名のあるエコロジストだな!
267 :
Name_Not_Found :2009/10/22(木) 18:31:41 ID:ZpZioJnp
a = new Array(); a[0] = 1; a[1] = 2; hoge(a); function hoge(a) { alert(a.length)←これは出る for (i = 0; i < a.length; i++) {←なのに、ここのaに対してundefinedエラー 処理 } } これってなぜなんでしょうか?
268 :
267 :2009/10/22(木) 18:46:25 ID:ZpZioJnp
あ、alert(a.length)の時点でも出てました でもちゃんと値も出るんですよね alert(a[0]) や alert(a[1]) でもちゃんと出ます 値が入ってるのにundefinedってどういうことなのでしょうか?
269 :
Name_Not_Found :2009/10/22(木) 18:59:45 ID:XbobHndb
>>268 何か書き間違えてない?当方問題なく動作するよ。
firebugの為に関数を前にしたけど。
270 :
267 :2009/10/22(木) 19:45:20 ID:???
仰る通りの凡ミスでした。。 実際のコードでは想定外の動きで2度関数が呼ばれており、 1度目では正式な配列値が渡り正常にlengthがalertされ、 2度目では値が渡らずundefinedで、 それらの一連の動きを1度の動作と思い込んでいました。 お手を煩わせて申し訳ありません。
271 :
Name_Not_Found :2009/10/22(木) 22:40:48 ID:e856PHph
質問です a.html?k=aaaのようなパラメータがついたページを ポップアップで開かせているのですが、 a.html?k=aaaに貼られたリンクや直接アドレスが入力されて 開かれた場合はページを閉じるようにしたいのですが そんな感じの方法があれば教えてください ポップアップ以外ではa.html?k=aaaというページを 開かれたくないので「閉じる」じゃなくてもかまいません なにかいい方法ないでしょうか?
よく分かんないんだけどlocation.searchチェックかな
それじゃできないんじゃない? popupでも使えるのかはわからないけど、Refererかな? あとはiframeの中に表示する部分の文字の色を白にしてoverlibのCSSで背景設定。iframeって背景透過できたよね? いろいろ勘違いだったらスマソ
274 :
Name_Not_Found :2009/10/22(木) 23:41:12 ID:2Opy8K0k
var hairetu = alert(1); hairetu; この2行のようにhairetuにアラートを入れて、hairetuを呼び出したらアラートが出るようにできませんか? function使えばできますが変数でやれる方法ってありませんか?
ファーストクラスオブジェクトだとそれできないんだわ 添え字無しの配列は[0]の値を返してほしいとかいうのに近い どういう例がわかりやすいかがわからないけど一例として var a = alert; a(a); // alert(alert);
>>274 >function使えばできますが変数でやれる方法ってありませんか?
functionも変数に入れられるよ。
>>271 opener.document.URLが想定外のものだったり取得できなかったらエラー画面に遷移でどうかな?
閉じるのはブラウザによって警告が出るだろうからしないほうがいいかも
278 :
Name_Not_Found :2009/10/23(金) 10:40:33 ID:YOGrBGKc
どこで質問していいか分からなかったので、ここで質問させてください。 "http"のページでJavaScriptにてログインフォームを生成していて、action先は"https"なフォームを作っているのですが、 http から https へデータを飛ばすのはセキュリティー上よくない事なのでしょうか? 分かっているのは、http -> http はダメで、https -> https はちゃんとデータが暗号化されている ということです。 スレ違いな質問でしたら誘導して頂けるとありがたいです。 よろしくお願いします!
> http から https へデータを飛ばすのはセキュリティー上よくない事なのでしょうか? 大丈夫ちゃんとPOSTデータは暗号化されてるよ ただあなたのようにセキュリティー上どうなの?って思った人から質問がきたり 自称Web関連技術に多少詳しい人が危険だと思い込んで苦情ぶつけてくるのを想定して 最初からhttpsにしておいたほうがいいんじゃない? そんなに送る内容が重要でもないのならSSLを無理に使う必要もないし 使いたい人にはSSLモードに切り替えるリンクを張っておくみたいな感じでいいんじゃないかな
スレチだけど誘導先知らんから軽く答えておくと、それやるとHTTPS使うメリットが半減する フォーム自体の安全性が保証されないからたとえば送信先を書き換えられる可能性が生まれる とはいえ安全性を削ってでも利便性を取るパターンはある
281 :
Name_Not_Found :2009/10/23(金) 11:49:20 ID:YOGrBGKc
>>279-280 ありがとうございます!
物凄く参考になりました。
一先ず現状のものに、httpsとなるページのリンクを付け加えてみます。
var obj = {}; があったときにこれが空のオブジェクトかどうかを調べる方法ってありませんっけ? 前に自分でどうやって判断していたのか忘れた。 for (var key in obj) {} で、key舐めるしかないのでしたっけ? typeof だとobjectが返ってきちゃうし。 jQuery使えば何かできるんだっけと思って探したけどそれっぽいのがない
function isEmpty(o) { for (var k in o) return false; return true; } 舐めるってほどでもないけど、for-in しかないと思う そもそも Object の空チェック自体ニッチなんだよな 大抵はしなくてもなんとかなる どうでもいいけどどっかの言語の _ あたりのノリで捨て変数に $ 使いそうになったw
284 :
Name_Not_Found :2009/10/23(金) 12:58:02 ID:hMV8z3Nb
ちょっと聞きたいんですが、 携帯サイトにドリコムRSSを貼り付けて 自動更新のニュースを見れるようにしたいんだけど、 どうすればいいですかね? やっぱそんなん無理ですかね
285 :
Name_Not_Found :2009/10/23(金) 13:02:34 ID:hMV8z3Nb
↑ すいません補足です。 このままだとPCからは見れるんですが、 携帯からだと表示されない状態です。 script type="text/javascript" src="rssのurlみたいなの" charset="AUTO"></script> こんなんです。
286 :
Name_Not_Found :2009/10/23(金) 14:18:50 ID:qt/MfDVw
>>285 使っている携帯電話はJavaScriptに対応しているのかね?
MDC
289 :
Name_Not_Found :2009/10/23(金) 15:04:48 ID:qt/MfDVw
Firefoxもそうですがoperaやieやsafariやchromeも視野に入れてるのですが MDCってFirefox独自の仕様も入ってるそうですが参考にしても大丈夫ですかね?
292 :
Name_Not_Found :2009/10/23(金) 15:31:48 ID:hMV8z3Nb
>>287 調べてみたら対応してないっぽいです。
っていうか携帯自体が基本JavaScript無理みたいですね・・
日々進化する携帯に今だったら行けるんじゃと思った自分が甘かった。
htmlだけで
>>285 と同じ操作をするなんてのは不可能なんでしょうか?
無料ホームページサイトでお手軽にやりたいので、
出来ればPHPは避けて通りたいです。
>>285 ドリコムRSSがどんなものか分からんが、
Flash Liteを使えばRSSリーダー作れるんじゃないかな
JavaScriptは無理
294 :
Name_Not_Found :2009/10/23(金) 15:51:32 ID:hMV8z3Nb
>>293 情報サンクスです。やっぱ無理ですかぁ
どっちかというと携帯ホムペのヘッドラインニュースみたいのを
作りたいんですが、Flash Liteでいけるんですかね?
モバイルスペースとかでやりたいんで、
それこそhtmlとかがいいんですが・・・
>>294 htmlでも出来る
新しいニュースが入る度に手動更新すればいいだけ
FlashLiteは古い機種は対応してないから注意
それが嫌ならPHPやRubyとかを使うべし
というわけでWebProg版へGo
296 :
Name_Not_Found :2009/10/23(金) 16:16:11 ID:2hA2MvXp
297 :
Name_Not_Found :2009/10/23(金) 17:14:45 ID:hMV8z3Nb
>>295 なるほど手動更新の手がありましたね・・・
298 :
Name_Not_Found :2009/10/23(金) 17:25:58 ID:FEQ4zD06
299 :
Name_Not_Found :2009/10/23(金) 18:29:41 ID:b0zmPGHk
301 :
Name_Not_Found :2009/10/23(金) 19:45:27 ID:nIzPO7WG
ただ今、学校の課題でhtml/jspを使用した簡単なショッピングサイトを作っております。
その中でjavascriptでポップアップエラーを出したいのですが、上手くいきません
<input type=\"radio\" name= \"sdate\" value=" + nb + " />
----中略---
<script formcheck = "javascript">
<!--
function formcheck(form){
if(form.sdate.value == null){
alert("商品が選択されていません。");
return false;
}
return true;
}
//-->
</script>
sdateにチェックが入っていなければアラームを作動させたいんですが、
チェックが入っていてもアラームが作動してしまいます。
初歩的な質問ですみません。よろしくお願いします。
一応ソースも貼り付けておきます。
http://kissho.xii.jp/1/src/1jyou94948.jsp
>>301 ラジオボタンとチェックボックスを間違えてるってことはない?
>>300 それってmozilla独自仕様なんじゃないの?
javascript1,8は4thをサポートしてるってだけでさ
どこを読んだら独自仕様になるんだ 独自仕様ならプリフィックスが付くだろ
>>301 ラジオボタンまたはチェックボックスなら、要素.checkedで判断しないか?
それに、ソース見た感じボタン複数も想定できるから全ボタンに対してチェックが必要
ECMA 4Editionは草案なのに
NP完全問題を解くため探索領域を分割したいのですが、JavaScriptとPHPでタスクを分担して別々に同時処理することは可能ですか?
308 :
Name_Not_Found :2009/10/23(金) 22:11:22 ID:b0zmPGHk
>>307 >JavaScriptとPHPでタスクを分担して別々に同時処理
まあ、別のコンピュータでやることだからねえ。
同期したいところでAjaxでもすれば。
309 :
Name_Not_Found :2009/10/23(金) 22:16:10 ID:nIzPO7WG
>>302 チェックボックスで購入画面を作ろうと思ったのですが、
処理が面倒になるのでラジオボタンで妥協しました。
>>305 商品IDであるnbをif文で判定するのでしょうか?
>ボタン複数も判定
これはラジオボタンなら考えないでいいですよね
310 :
Name_Not_Found :2009/10/23(金) 22:16:30 ID:q07ioA4B
if (cipher_char == from_char) { result = result + to_char; x++; } else result = result + clear_char; これってエラーでないんですけどどこか間違ってますか?
>>309 function formcheck(form){
if( Array.prototype.slice.call( form.querySelectorAll('input[name="sdate"]') ).some(function(e){return e.checked}) ){
alert("商品が選択されていません。");
return false;
}
return true;
}
312 :
Name_Not_Found :2009/10/23(金) 22:58:48 ID:nIzPO7WG
if( form.querySelector('input[name="sdate"]:checked') )
314 :
Name_Not_Found :2009/10/23(金) 23:11:17 ID:nIzPO7WG
>>313 出来ませんでした。
本当にありがとうございます。
ブラウザがSelectors APIサポートしてないと当然できないよ
316 :
Name_Not_Found :2009/10/23(金) 23:43:03 ID:nIzPO7WG
Selectors API・・・ 習っていない物を使ってしまったら先生にどんな顔をされるか分からないので ポップアップエラーはあきらめることにしました。 本当にありがとうございました。
普通にこんなんでいいんじゃないの? if(!form.elements["sdate"].checked){ radio ボタンなら「いずれにもチェックされていない場合」に 多少書き換える必要があると思うけど
習ってないから使ってはいけないのはプログラマーとして失格
先生に遠慮なんていらんよ 義務教育中ならまだしもまわりと足並みをそろえることはない
本人が理解もしてない洗練された(?)コードを提出するのは問題じゃないか
>>317 >radio ボタンなら「いずれにもチェックされていない場合」に
そういうことでしたか・・・
調べてみます
>>318 ,
>>319 ,
>>320 >習ってないから使ってはいけないのはプログラマーとして失格
確かにそうですね。調べてみて、自分に使えこなせそうなら使ってみます。
色々ありがとうございました。
>>286 JavaScript1.5とか1.6とかってバージョニングがそもそもFirefox独自(正確にはそのJavaScriptエンジン用)のもの
だから
>>303 は概ね正しい。
クロスブラウザも考えて真面目にJavaScript勉強するならオライリーのJavaScript第5版くらいしかまともな教材ないよ
>>291 ,
>>306 ECMAScript3.1, 4… それらはもう消えました。ECMAScript5にご期待ください。
querySelector(All)はIE8、Firefox3.5、Opera10、Chrome1、Safari3.2以上かな(Safariは4かも確認できん…)
Array.prototype.someはFirefox1.5、Opera9.5、Chrome1、Safari3以上でIEは対応してない
>>321 ここに書かれたコードを参考にしちゃダメだよ。
function isSdateChecked(){
var sdates=document.getElementsByName('sdate');
for (var i=0;i < sdates.length; i++){
if(sdates[i].checked){
return true;
}
return false;
}
}
それで出てきたのがよりによってgetElementsByNameなのはギャグか
確かに参考にしてはいけないコードだ
まさかHTML4しかも互換モードでのgetElementsByNameにケチつけられるとは…
てか、
>>301 が根本的に駄目なのは
<script formcheck = "javascript">
だな。なんじゃそりゃ。
<script type="text/javascript">
か、面倒なら <script>で良いよ
HTML4互換なら尚更、name="sdate"を持つのがフォーム内、 しかもそのフォームが文書内で一つだけという思い込みはマズい かつHTML5では全てのHTMLElementがcheckedを持つから尚マズい 役立たず故にDOM2で意味論変更すらされそうになったgetElementsByNameを 使いたがる理由がよく分からん
>>327 301のjsp見ろよ。なに勝手に一般論の話してんの?
なんだったらサーバーをハックしてjsp書き換えて適切にid振ってくれ。
そうすりゃgetElementsByNameなんて使わなくて済むからさ。
O'ReillyのJavaScript第3版を持っているのですが第5版は購入する価値がありますか? 解説がJavaScript1.2と古いので新しいバージョンのリファレンス本が欲しいのです。 ネットで調べた結果ではJavaScriptマスターブックがよさそうな感じですが、 最近のJavaScriptが理解できるおすすめの本があれば教えてください。 他にはJavaScript ビジュアル・リファレンス第2版(2006年2月発行)を所有しています。
そうですか、私の勉強不足でしたか… それで、どう書くとより良いのでしょうか?
googleのキャッシュを見た際に、元のページを読み込ませる方法を教えてください
リファラを見てGoogleのキャッシュだったら飛ばすようなスクリプトを仕込んでおく しかしGoogleのキャッシュでありGoogle側のコントロールにあるので Googleのキャッシュがそういったスクリプトを除外して表示している場合は不可能 しかし重要なこととして頭に入れておくべきことは Googleのキャッシュを見てるのに勝手に飛ばされるのは 見てる側の意図ではないのでやめたほうがいい キャッシュ側にも手動ではあるが元のページへのリンクを張っているわけだしそれでいいのでは?
もちろんjavascriptで
JavaScriptでもリファラはとれるでしょ document.referrer
リファラ見てどうする。 キャッシュならlocationだろ
だからキャッシュと判断するためにリファラが必要といったんだが
338 :
337 :2009/10/24(土) 08:20:38 ID:???
あ、すまん 冷静に考えてみたらキャッシュから見るのも普通に見るのも Googleの検索からくるわけだからリファラは同じだったな 上のほうのはなかったことにしてくれ
Googleから来たなら、オリジナルのページもキャッシュも、リファラはgoogle/searchにしかならんぞ… キャッシュの場合、locationがIPになるから(もちろん、必ずしもGoogleとは限らないが)すぐわかる
で、getElementsByNameを使わない実装は誰かやってくれないのかな。 せめてこれ使うんだぜってヒントだけでもほしいのだけど。
function formcheck(form) { var n = form.sdate.length; for (var i = 0; i < n; i++) { if (form.sdate[i].checked) { return true; } } alert("商品が選択されていません。"); return false; } formオブジェクト取るならこれでよろし。
343 :
332 :2009/10/24(土) 09:26:19 ID:???
locationが自分のところでなかったら、自分のところに飛ばすようにすればよいのでしょうか?
朝からカオスなスレだな
>>321 名乗るほどのモンじゃねえから礼はいいってことよ
きもいのが沸いてるな
>>329 AjaxとかDOMの解説が増えてるから購入する価値はあるね
>>329 「JavaScriptマスターブック」からJSを始めたけど十分な内容だったよ。
マスターブックが終わったら、オライリーの「Javascript&DHTMLクックブック」
で実践的なコードを学ぶといい
追加でオライリーのクイックリファレンスがあれば完璧。
>>308 回答ありがとうございます。Ajaxを勉強してみます
>>347-348 「JavaScriptマスターブック」良さそうですね。買ってみます。
第5版は解説が増えているということですので、Javascript&DHTMLクックブック等と
比較して、マスターブックが物足りなくなったら再度購入を検討することにしました。
ありがとうございました。
>>342 それだとラジオボタン1個の時に対応できないよ
352 :
Name_Not_Found :2009/10/24(土) 23:48:11 ID:DwHdb6bx
質問です。 モーダルダイアログを表示させる、showModalDialogという メソッドがありますけど、これって正式なJavaScriptでは ないのでしょうか? (オライリーのJavaScript 1.5版に記載がないもので。)
window.showModalDialogはDOMの領分
354 :
Name_Not_Found :2009/10/24(土) 23:53:32 ID:F6j7TLub
DOMがさっぱりわかりません w3cのDOM level2にはlevel1の内容も含まれているのでしょうか?
DOMがわからないってのはHTMLがわかってないということ
phpの中にjavascriptを使って、ラジオボタンで項目を選んだ後に
違うボタンで指定されたサイトに飛ばすようにしたいですがphpに入れたら動いてくれません。
これだけだと動くのですがphpに入れると動かなくなるのはなぜでしょうか?
<html>
<head>
<script type="text/javascript" language="JavaScript">
<!--
function Check() {
var tolink = document.url
for(i=0 ; i<=tolink.list.length -1 ; i++){
if (tolink.list[i].checked) {
var n = tolink.list[i].value;
document.location.href=n;
}
}
}
//-->
</script>
</head>
<body>
<form name="url">
<input type="radio" name="list" value="
http://www.yahoo.co.jp/ ">テスト表示1
<input type="radio" name="list" value="
http://www.google.co.jp/ ">テスト表示2
<input type="button" name="ok" value="OK" onclick="Check()">
</form>
</body>
</html>
ごめんなさい・・・ 解決しました・・・・
358 :
354 :2009/10/25(日) 11:47:18 ID:???
>>355 さんDOM2はDOM1に含まれるのでしょうか?
ちなみにHTMLとXHTMLについてはw3cのDTDを理解してます
訂正
>
>>355 さんDOM2はDOM1に含まれるのでしょうか?
>>355 さんDOM2はDOM1の内容も含まれるのでしょうか?
css2.1にcss1の内容が含まれているようなものと考えて大丈夫ですか?
お前の優しさに全米が泣いた
>>355 の言うDOMとHTMLの関係を誰か解説頼む
HTMLがわからないってのはDOMがわかってないということ(ただしDOMがわからなくてもHTMLを理解することはできる) の間違いじゃないかな
何故?
DOMの理解にはHTMLはわかってなくてもXMLがわかってりゃいい
誰が開発したものなのかとか 最初に、かっこよくかつきちんと宣言したいんですけど 何か良いテンプレートみたいなものありませんでしょうか。
実用性重視でJsDoc
string = "abacbbdc";これをこの文字列のまま正規表現など で(ループなしで)string = "abcd";にすることってできますか?
エスパーさせんなよ、例は大事だけど説明もしろよ それで、これでいいか?実質的にループしてっけど var string = "abacbbdc"; var flag = {}; string = string.replace(/./g, function(s) { if (flag[s]) return ""; flag[s] = true; return s; });
>>369 すごいな。
>>368 見てもどういうルールかわかんなかったわ
単純にabcdって順番で出したいのかと思った
俺もソートしてから重複する文字を削除・・・を考えた。
>>370 俺は1,2,4,7,11,16...番目を取得するのかと思ったけど
間が一つずつ増えるのね
>>372 ??(゚Д゚;)三(;゚Д゚)???
どうやったらそういう風になるのか、すまんが教えてくれないか
あ、ごめん事故解決した。どんがらがっしゃん的な意味で。
>>372 数学ガールの数列の話思い出したわw
少ない数列で階差数列だと思い込むってなかなかないw
どんがらがっしゃんついでにおらが考えたのはこういう方法。
var str = "abacbbdc";
var arr = new Array();
str.replace(/./g, function(s){arr.push(s)});
str = arr.sort().join(''),replace(/(.)(.*?)\1+/g, "$1$2");
結局どれが正解なのかがわからんので
>>368 は早く出頭するように。
なんだよそのカンマなんだよ。俺のバカバカ ×,replace ○.replace あと他に間違ってないだろな・・・
378 :
372 :2009/10/27(火) 11:49:57 ID:???
>>375 数学ガールが何物なのかは知らないけど、
数列でとりあえず階差をとってみるってのは常套手段だぜ
>>378 文字列を見る→とりあえず数列→とりあえず階差
っていう発想がおらには無かったわ・・・
>>375 奇遇だな、俺も思い出した
文字列を数列と見なすあたりはよい着眼点してる
>>376 >var arr = new Array();
>str.replace(/./g, function(s){arr.push(s)});
var arr = str.split("");
ようするにjoin("")の逆
正規表現も意図がよくわからん、これではだめなのか?
arr.sort().join('').replace(/(.)\1*/g, "$1");
>>380 なんでだっけか忘れたけど、うまくいかないことがあって確かそんな風に置換してたっけかなーとうる覚えで書いたのでようわからん・・・
382 :
Name_Not_Found :2009/10/27(火) 12:13:27 ID:OFmzOs7u
全然話についていけない件について。この文字列は 大文字とスペース交えて書くと AB a C bb D ccc E dddd F eeeee .... だってこと?
383 :
372 :2009/10/27(火) 13:07:41 ID:???
>>382 >>368 が正解を言ってくれないとなんとも。
string = string.replace(/^(.)(.).*(.)(.)$/, '$1$2$4$3');
かもしれないじゃん?
単に質問じゃないのか?
>>384 >string = "abacbbdc";これをこの文字列のまま正規表現など
>で(ループなしで)string = "abcd";にすること
だけだと、色んなアプローチ方法がありすぎる。
もっと具体的に何がしたいのかを示してくれないとこのようにエスパーレスがつかざるをえない。
おまえら本人は質問逃げしてるのに優しいね それともただのバカなのか? こんなやつのために議論してやるなんて時間の無駄だぞ
1日も経ってないのに逃げたと判断するのもどうかと思うがこれはこれで楽しいぞ?w
現時点で既に一つの問いに対して4通りの解が出てるしな。 ある意味参考になる
>>368 >string = "abacbbdc";これをこの文字列のまま正規表現など
>で(ループなしで)string = "abcd";にすることってできますか?
var string = "abacbbdc";
string = "abcd";
これでよし
>>389 おれも初め全く同じ答え出して書き込もうとしたw
要件は満たしている。何も問題はないw
393 :
372 :2009/10/27(火) 15:03:12 ID:???
>>372 のコード。複雑になったうえにループありw
string = (function (f, string) {
var len = string.length, s = '', n = 1, x = f(n);
while (x < len) {
s += string.charAt(x);
x = f(++n);
}
return s;
})(function (n) {
return n * (n - 1) / 2;
}, string);
やっぱり
>>380 かなあ
394 :
372 :2009/10/27(火) 15:18:56 ID:???
ごめん、こっちのほうが簡単。でもループは消えないw string = (function (string) { var len = string.length, s = '', n = 1, a = 0; while (a < len) { s += string.charAt(a); a += n++; } return s; })(string);
/* ここまでのまとめ */ var string = "abacbbdc"; // @左から順に var flag = {}; string = string.replace(/./g, function(s) { if (flag[s]) return ""; flag[s] = true; return s; }); // A階差数列 string = (function (string) { var len = string.length, s = '', n = 1, a = 0; while (a < len) { s += string.charAt(a); a += n++; } return s; })(string); // Bソート var arr = new Array(); var arr = string.split(''); arr.sort().join('').replace(/(.)\1*/g, "$1"); // C切り出し string = string.replace(/^(.)(.).*(.)(.)$/, '$1$2$4$3'); // Dお前の願いを一つだけ叶えてやろう string = "abcd";
B間違い。ごめんorz /* var arr = new Array(); */
str.join("") の逆ってstr.split("") じゃだめなの?
399 :
368 :2009/10/27(火) 22:04:22 ID:???
みなさん、こんばんは。
>>368 で質問した者です。少し前に帰宅した所
です。開いてみてびっくり!みなさん、どうもありがとうございます。
>>369 さん、舌足らずな質問ですいませんでした。趣旨は、文字列に重複
したものがあったとき、それを排除したかったんです。配列に格納して
要素マッチをするとか、charAt()で回して同じことをするのは、誰でも
まず考えると思いますが、文字列のままスマートにできないかな、と思い
ました。ソートの必要までは考えていませんでした。
いろいろ自分でやってみたのですが、寝る時間までやってもでき
ず、ここでお伺いしたわけです。ありがとうございます。
>>369 さん、流石です。勉強になりました。そのほかの方々もありがとう
ございました。
>>395 さんには、まとめまでして頂いて、とても分かりやす
いです。とりあえず、少々のお詫びとお礼まで。
長々とすいません。では。
短いのを書いてみた。最初の出現を判定しつつ記録するのって短くしづらい。 var str = "abacbbdc"; var map = {}; str=str.replace(/./g,function(s){return(map[s]||(map[s]=0)||map[s]++)?'':s;})
str=str.replace(/./g,function(s){return(map[s]||(map[s]=0)||map[s]++)?'':s;}) str=str.replace(/./g,function(s){return(map[s]||void(map[s]=1))?'':s;}); ちょっと縮まった、てかなんでgolfにw
<script> function Rec(w,h){ this.width = w; this.height = h; } function RRec(x,y,w,h){ Rec.call(this,w,h); this.x = x; this.y = y; } RRec(1,2,3,4); document.write(RRec.width); </script> RecのプロパティをRRecに継承したいんだけど、 callメソッドってこういう使い方じゃダメなの? 実行結果はundefinedだった
function RRec(x,y,w,h){ alert(this); } RRec(1,2,3,4); function RRec(x,y,w,h){ Rec.call(this,w,h); this.x = x; this.y = y; } var rr = new RRec(1,2,3,4); document.write(rr.width);
>>404 オブジェクト作るの忘れてたわ
ありがとう
>>402 をを! voidか、なるほどこういう時に使うんだねー。
str=str.replace(/./g,function(s){return(map[s]||(map[s]=0)||map[s]++)?'':s;})
str=str.replace(/./g,function(s){return(map[s]||void(map[s]=1))?'':s;});
str=str.replace(/./g,function(s){return(map[s]||!(map[s]=1))?'':s;})
ああ否定演算子のほうがよっぽど素直だw
str=str.replace(/./g,function(s){return(!map[s]&&(map[s]=1))?s:'';})
極限まで短くしてって質問じゃないだろw トリッキーなコードでわけがわからん
arr=['a', 'b', 'c', 'd', 'e', 'f']; とあるときにarr[5]='g'というように格納すると同時?というか arrの中を左にずらしてarr=['b', 'c', d', 'e', 'f', 'g']; という風にしたいので、arr[0]=arr[1],arr[1]=arr[2]・・・・arr[5]='g' のような感じにしてみました。ですが効率が悪い気がします。 なにかよい方法ありませんでしょうか よろしくお願いします。
とおもったらshift、pushというものがありました お騒がせしました
質問です 一番手前の位置にページ全体を覆うように透明のオブジェクトを配置し、 なおかつマウスでのリンクやフォームの操作に支障が無いようにする事はJavaScriptで可能ですか? 何て説明したらいいのか分かりませんが、オブジェクトの非オブジェクト化というか イベントを受け取らず止めもしない、単なる視覚効果として扱いたいのです。 上手く説明できなくてすいません。
いや、上手く説明してくれよ。具体的に何したいんだかさっぱりわからん。
>>412 それだけだとページ全体を花柄の枠とかで飾りたいだけのようにも見て取れる
もっとちゃんと説明汁
415 :
Name_Not_Found :2009/10/28(水) 18:40:45 ID:Ea84aIqv
ライトボックスの黒カーテンみたいなものを置きつつ、 下層のオブジェクトは普通にマウスで触れるようにしたい、 ということかと。
視覚的に手前(z-index最大)、イベント的に奥(z-index最小)のエレメントがほしいんだろ グラフィックソフトなんかでいうと手前のレイヤーが見えた状態で奥のレイヤーを操作したいと 意味はわかるけど答えはしらん フォーム全体に半透明の一枚絵を描きたいとかならFlashでやってくれ そもそも一部のオブジェクト(フォーム部品やFlash等)はHTMLよりも手前に描画されるじゃなかった? 最近のブラウザでは解決してるんだっけ?
417 :
Name_Not_Found :2009/10/28(水) 20:27:50 ID:Ea84aIqv
>>416 ライトボックス的なものとか、コンテンツにオーバレイして云々する
アクティブなバナーやブログパーツ的なものとかでは、割と良く使いますよ、
全画面を覆うブロック。
フォームの部品やフラについては、おっしゃる通りかと。
MSIEのselectとMacFxの張付動画(swfじゃなくて)はdisplay:hiddenするように
しています。
>>413 例えば、αチャンネル付きの薄い霧の画像をページ全体を覆うdivのbackgroundに指定して
スクロールさせたり透明度を微妙に変化させて雰囲気を出したり、
ふわっとHTML上のランダムな場所に薄くメッセージを表示させてすぐに消すような演出をしたり、
大きな桜の花びらや雪のオブジェクトを降らせたり、マウスストーカー系のスクリプトのときに、
オブジェクトがリンクやボタンに被っても操作性に影響が無いようにする方法があれば知りたかったのです。
>>414 そのようなことです。
>>415 ,416
理解していただいてありがとうございます。
現状はJavaScriptでは不可能と言うことでよろしいのでしょうか?
Flashは分かりませんが、Flashを学び、サイト全体を作り直す方が簡単なのでしょうか?
>>419 Flashで作り直すほうが、というかjavascriptじゃ無理
javascriptで出来ないわけでは無いが複雑なコードになるだろうactionscriptでやれば楽
jsだけでもできそうがけどなかなかハードな仕様だな見た目つくりにしては。 flashの方がいいんじゃね?action scriptとかどっかに落ちてそうだし。
単に色フィルタかけたいだけならオブジェクト全部色変化させて一見スクリーンかかってる様に 見せる手はあるけどな。グラデーションだとキツいが。
jQueryでも限度がある。
全部canvasでやれば自由自在に・・
XHTML+SVG
それはひどい
配列の中を全部削除したいのですが、 arr.length分forで、popもしくはshiftする 以外になにかよい手段があれば教えてください
Canvasを筆頭に他要素が力つけて flashいらねってなったら、そりゃいろいろと困るもんな。
canvasのgetImageDataで連続でimagedata取得してみて。 メモリがすごいことになるんだが
そうですか
a=['x', 'y', [['c','d'], ['e','f']] ]; のときに、a[2]の配列の最後に['g','h']を格納しようと、 a[2].push(['g','h']); としたのですが無理でした。どうすればよいでしょうかよろしくおねがいします。
すいません勘違いでした、 できました。
また質問させていただきます 配列の中に同じ値があるかを検索したいのですが、 a=[['a','b'], ['c','d'], ['e','f']]; とあるときに a.indexOf(['c','d']); で一致したり、 a.indexOf(['g','h']); で一致しなかったり、というようなことをやりたいのですが 上記ではどれもindexOfが-1を返してしまいます。 [○,△]のペアで一致する検索をしたいのですが うまくいきません、どうすればいいでしょうかよろしくおねがいします。
久しぶりにスレッドを覗いたら
>>301 の解答が出ていました。
遅くなりましたが報告させていただきます。
>>342 さんを試したら成功しました。
>>351 さんの指摘を受けて
function formcheck(form) {
var n = form.sdate.length;
if (form.sdate.checked) {
return true;
}
for (var i = 0; i < n; i++) {
if (form.sdate[i].checked) {
return true;
}
}
alert("商品が選択されていません。");
return false;
}
と、成りました。
協力いただいた方々ありがとうございました。
>>438 まずArray#indexOf()はECMA-262の標準には含まれていないので、
ブラウザによっては動かないかも。そして、indexOf()は内部で
===を使って等しいかどうかを調べるらしいので、配列の「内容が」
等しいかどうかを調べるのにはどのみち使えない。結局、自分で
ループしながら配列を検索するしかないと思われ。
441 :
Name_Not_Found :2009/10/30(金) 22:04:46 ID:svkMyns1
すみません、どうかアドバイスをください。 横のボタンを押せば、テーブルの行が上に上がるスクリプトを組みたいのですが・・・ 作ったのは・・・ <table border=1> <tbody id="test"> <tr> <td><a href="javascript:testn(0);">↑</a></td> <td>一行目</td> </tr> <tr> <td><a href="javascript:testn(1);">↑</a></td> <td>二行目</td> </tr> <tr> <td><a href="javascript:testn(2);">↑</a></td> <td>三行目</td> </tr> </table> <script type="text/javascript"> function testn(no) { obj = document.getElementById('test'); if (no != 0) obj.insertBefore(obj.rows[no], obj.rows[(no-1)]); } </script> うまく動かない原因はわかるのですが・・・ しかし、どう改良すればよいのかわかりません。 どうかアドバイスをください。。。
>>440 ありがとうございます。なるほど、indexOf()は使わないほうがいいみたいですね。
一応自分なりにかいてみました。
fpは次のような配列になっています、
fp=[
[ 8, //←dx
[4,2,5] //←dy
],
[ 5,
[10,21]
]
];
で、fp[0][0]やfp[1][0]がdx、
fp[0][1]やfp[1][1]がdyというような関係です。
説明しにくいので
(dx,dy)=(11,3)、(8,3)、(5,10)が与えられたとき、fpがどのように変化するかを下に書きます
fp=[
[ 8,
[4,2,5,3]
],
[ 5,
[10,21]
],
[ 11,
[3]
]
];
です。(11,3)はどれも重複しないので新たにfpの最後に加えます。
(8,3)はまずdxがfp[0][0]に重複後、fp[0][1]の最後にdyを追加します。
(5,10)はまずdxがfp[1][0]に重複後、dyもfp[1][1][0]に重複するので何もしません。
こういう検索をするために次のコードを書いてみました。つづく
443 :
442 :2009/10/31(土) 01:55:09 ID:???
fp=[[8,[4,2,5]],[5,[10,21]],]; var a=function(dx,dy){ for(var i=0;i<fp.length;i++){ if(fp[i][0]==dx){ for(var j=0;j<fp[i][1].length;j++){ if(fp[i][1][j]!=dy){ if(j==fp[i][1].length-1){ fp[i][1].push(dy); } }else{break;} } break; }else{ if(i==fp.length-1){ fp.push([dx]); fp[i+1].push([dy]); } } } } var t=function(){ var tes=[]; for(var i=0;i<fp.length;i++){ tes.push(fp[i][0]+'<>'+fp[i][1]+'\n'); } return tes; } a(11,3);alert(t().join()); 今のところはこれで思ったとおりの検索ができるのですが、自分の書いたものだと、無駄なものがあったり間違っていたり、別の良い方法があるような気がしてなりません。 ちなみに、そもそもこのdx,dyは、onmousemoveしている間、整数のdx,dyを取得し続け、その都度a(dx,dy)を実行するような感じです。どうかアドバイスよろしくお願いします。
訂正 整数→正の整数(0もあり)
0は正じゃないけどね。揚げ足か
0には正負があるけどね。揚げ足か
IE8って、もしかしてwindow.event.yでスクロール分足した数値返すようになってる・・・?
0に正負があるとかやばくね?話逸れてるけど
450 :
441 :2009/11/01(日) 02:20:02 ID:DhDwNkMP
自己解決しました
451 :
Name_Not_Found :2009/11/01(日) 06:45:29 ID:IpszXO/r
http://url には4桁の数字のみが記述されているとします。
この中身をアラートで表示させるために、
readFrame = document.createElement('iframe');
readFrame.setAttribute('style','display:none;');
readFrame.src = '
http://url ';
readFrame.id ='readFrame';
document.body.appendChild(readFrame);
readFrame.onload = function (){
var nakami = document.getElementById('readFrame').innerHTML;
alert(nakami);
}
としたんですが、空白のアラートが表示されてしまいます。
なにが原因か分かりますでしょうか?
<iframe>のinnerHTMLを表示したから。 nakami=document.getElementById("readFrame").ownerDocument.body.innerHTML;
iframeの中身であっても、ドメイン超えだとアクセスできなかったりはしない? 確認せず適当に言うが。
そんな事が出来たら
<iframe src="
http://www.amazon.co.jp/ " id="readFrame"></iframe>
alert(document.evaluate("//div/span[@class='navGreeting']",document.getElementById("readFrame").ownerDocument,null,0,null)).iterateNext().textContent);
こうするだけでAmazonで使ってる自分の名前が表示出来ちゃうね
XPathがどうしようもなく分からない
異ドメイン操作不可というのはよいですよね。
XPathは軸とノードテストと述語を省略せずに覚えろ //divとか書いてあるのは、とりあえず参考にするな
//divは/descendant-or-self::node()/child::divの省略形だからな /descendant::divとは効率も結果も全然違う 特にJavaScript-XPathを使って//divと書いてる奴は悔い改めた方がいい
省略しないと長すぎるって言われるんだもん
ownerDocumentとcontentDocumentを混同してる奴がいるな
あはは誰だownerとか書いてるヤツ。 ownの意味もわかんないのかwwwww俺
表示させたくない要素は、positionでleftとtop のどちらに大きな負の値を入れるのがよいでしょうか。 要素を飛ばすとき、bottomとrightに指定すると ブラウザによってはスクロールがでてしまいました。 今はleftでしているのですが、ほぼ差し支えないでしょうか? よろしくお願いします。
display: none
あれ、つうかcssでいいのか? ここjavascriptのスレだけど?
cssスレだと、js知らないやつからしたら 使い道よりも一つの方法としての意識の方が強いが js、css両方知ってるやつからしたら 明確に、使い道として理解してる まぁどっちでもいいんじゃないだろうか 強いて言うならjsスレの方で聞くほうが賢いと思う
正方形200×200のエリアがあって、その上をマウスが動くときに その正方形の中心から100×100の範囲だけ有効にしたくて マウスのx座標、y座標それぞれxとyにして if(x>50 && y>50 && x<150 && y<150){} みたいにしたんだけどもっとカッコいい書き方があるような気がしてそわそわするから教えて
何かが間違っているような気がしてそわそわする
似たようなことを繰り返すなら俺はRectオブジェクトでも用意するけど、最終的にやってることは変わらんから一回だけならそれでもいい var r = new Rect(50, 50, 100, 100); if (r.contains(x, y)) ちなみにそれ99x99だぞ、不等号使うときはよく考えろ
469 :
Name_Not_Found :2009/11/02(月) 13:16:10 ID:lWYkjuDV
>>462 ほぼ差し支えないんじゃないかと。
>>463 作った要素の大きさをこっそり測っておきたい時とか、あるじゃん。
測りたいときだけそうすればいい 多少なりとも描画に時間を費やしているから測れるってことを忘れんな
計りたいときだけそうできればどんなに楽だったろうな
472 :
Name_Not_Found :2009/11/02(月) 16:16:12 ID:lWYkjuDV
>>470 >測りたいときだけそうすればいい
あ、それはそうだと思います。
parseIntって非推奨とかある? なんかどっかで見た気がするんだけど勘違いなきがするのでお願いします
>>473 parseInt()はECMA-262で規定されているので使うことは無問題。
ただ、1引数で使うと'012'みたいに0で始まる文字列は8進として
解釈されるため、常に2引数で使った方がいい。
それを忘れるくらいならむしろparseFloat()を使えばと前に
ここで書いたがそれには異論もあったかと。まあそれだけ。
あとはきちんと戻値をisNaN()にかけてNaNチェックするとかね まあ使いどころによるけど
476 :
Name_Not_Found :2009/11/02(月) 19:43:46 ID:lWYkjuDV
みんなNaNってなんて読んでる? 自分は奈良ナンバーと読んでいるんだけど…
ナン
ナソ
文末のセミコロンはつけるべきですか? それとも省略すべきですか?
つけるべき
寧ろ改行とかいらん
>479 つけないとセミコロンは自動補完されるわけだけど、稀にセミコロンがつくと思ってた場所につかなくい、って事がある。 (まあ、逆に「つかないと思ってた場所にセミコロンがつく」場合の方が多いが。例えば return { aaa : bbb }; // nullが返る いずれにせよ原因を非常に特定しづらいバグを生むので、なるべくつけるようにした方がいい。
つかなくい→つかない
なんちゃって
for(){} とか if(){} とかもセミコロンつけた方がいいですか?
arr=['test']; oj={'a':'test'}; 上の配列と下のJSONって arr[0]とoj.aだと、配列の方が testの引き出しが速いんですよね?(大差なしという話ではなくて)
evalするコストが無い分配列のほうが断然早いな、
>>489 なるほど参考になります。
あと、oj={'a':'test'};場合
oj.aでもoj['a']でもどちらでもtestを取れるみたいなんですが
これって何か違いがあるんでしょうか
JSON=文字列
>>489 ハッシュするコストじゃないか?評価はどっちもするし
って質問内容に忠実すぎるのかw
それはオブジェクトリテラルだ、JSONならこう
var json = "{'a':'test'}";
var oj = eval(json);
>>490 使用可能な文字の違い(文字列リテラルならほぼ全て)
静的or動的
Stringオブジェクトの要不要
二番目の差が一番でかいと思う
var v = "a";
alert(oj[v]);
もちろん便利な分、若干でも処理にコストがかかる
>>491 ,492
勘違いしておりましたありがとうございました。
たしかにoj.aだとa=なんたらとかにして代入できずでした
あとoj['a']のときよりもシビアなリテラル選びになりそうでした
ただやはり処理を速くくしようとすれば
配列>オブジェクトリテラルのoj.a>oj['a']
な感じでしょうか
ありがとうございました。
ちゃんとベンチとったほうがいいぞ Arrayでもデータ構造はObjectの使い回しをしてる可能性もあるし 最適化とか関わるとドット演算子使うのが一番速い場合だって考えられる つーか変数使うのが一番速い
Firefox 3.0以上向けにJavaScriptのプログラムを組んでいます。 Canvasを利用した描画を行いたいと思っているのですが、点線の描画方法が分かりません。 点線でなく、実線の描画方法ならば、下記の通りに出来ました。 --ソースの描画部分-- //キャンバスの取得 var canvas = document.getElementById("canvas"); if (!canvas.getContext) return; // Unsupported //線描画 cv = canvas.getContext("2d"); cv.beginPath(); cv.lineTo(25,255); -- ここまで -- 点線の描画を行いたいので、そちらをお願いいたします。
便乗でcanvasの質問します。 以下のコードでf=[16,16,20,20]のときより明らかにf=[16,16,32,32]のときの方が 四角の描写までの反応が速いのですが、何が原因でしょうか。 一応自分でいろいろと考えてみたのですが、f=[16,16,20,20]のとき、 1.座標取得の時点で反応が遅れている(pageXやoffsetLeft、offsetTopが原因?) 2.helpのinnerHTMLのコメントアウトの行を有効にしたとき、 ・help要素がhoge1要素とかぶると遅い、 ・hoge1要素と十分にかぶらないくらい(16×20より上)の値をhelp要素のleftに入れると速い(例left:400px;) くらいしかわかりませんでした。いずれもFireFox3.0で実験した結果です。 <html><body><div id="hoge1" style="border:2px dashed blue;position:absolute;left:0px;"><canvas id="hoge2" style="position:absolute;"></canvas></div> <div id="help" style="width:100px;height:50;position:absolute;left:0px;">a</div> <script type="text/javascript"><!-- elem1=document.getElementById('hoge1'); elem2=document.getElementById('hoge2'); // f=[16,16,32,32]; f=[16,16,20,20]; elem1.style.width=f[0]*f[2]; elem1.style.height=f[1]*f[3]; elem2.width=f[0]*f[2]; elem2.height=f[1]*f[3]; ctx=elem2.getContext('2d'); elem1.onmousemove=function(e){ var px=Math.floor(e.pageX-this.offsetLeft); var py=Math.floor(e.pageY-this.offsetTop); var sa=[f[0]*Math.floor(px/f[0]),f[1]*Math.floor(py/f[1])]; //document.getElementById('help').innerHTML=sa.join(); var rgb=function(){return Math.floor(Math.random()*255+1)}; ctx.fillStyle='rgb('+rgb()+','+rgb()+','+rgb()+')'; ctx.fillRect(sa[0],sa[1],f[0],f[1]); } //--></script></body></html>
Firebugでたどっていくといいよ
JSONは二重引用符しか受け付けないし 配列もJSONなんだぞ 大丈夫かお前ら
>上の配列と下のJSONって という元質問に対して、JSONで配列が定義できることがどう関係するんだ?
>思う なのか。なんだか自信なさげだな
この世に絶対なんて無いってアビタニが言ってた
アビタニって?トニー谷しか知らないっす。
javascript始めたばかりのものです。 選択したテキストエリアに書かれているテキストを取得したいのです。 条件としては、同じページに複数のテキストエリアがあっても、それぞれが 区別出来るようにしたいのですが、 javascriptでどのように書けばいいのでしょうか?
>>504 onfocus/onblurハンドラでどのテキストエリアが選択されたかを
常時追跡する。分からなければ勉強してね。
XMLで書いたデータをJavascriptで読み込みたいのですが、 属性値のある情報をどう表示させればいいか困っています。 <HTML><SCRIPT> function displayData(){ rec=bookdata.recordset while(!rec.EOF){ area.innerHTML+=rec("title")+" "+rec("author") +" "+rec("publisher")+"<BR>" moveNext()}} </SCRIPT> <BODY onLoad=displayData()> <XML ID="bookdata" SRC="books.xml"></XML> <SPAN ID="area"></SPAN> </BODY></HTML> XMLはこの様になっています <book> <title>おもしろい本</title> <author>山田太郎</author> <publisher>出版社</publisher> <year>2000</year> <price unit="円">1000</price> </book> これから値段を取り出して表示させたいのです。 よろしくお願いします。
i=''; t=0; var tes=function(w){ alert(w); } (t==1)?i='tes1':i='tes2'; tes(i); ってやるとtesはファンクションじゃありませんってエラーがでます。 t==1?i='tes1':i='tes2'; だと大丈夫でした。三項でかくときは条件のところ()は外さないといけないのでしょうか よろしくおねがいします。
>>509 式と文の違いについて再勉強
わかんねーなら全部セミコロンつけとけ
それしても(function(){})()のfunction周りの括弧ってなくてもいけるんだな
511 :
Name_Not_Found :2009/11/06(金) 01:00:33 ID:eRRSS6lE
>>508 rec()で関数のように値が取れるのは何の言語だ?多分何かの言語と勘違いしてるんだよね?
javascriptでそういう取り出し方あったけ?
>>509 i = (t == 1) ? 'tes1' : 'tes2';
って書けば曖昧じゃなくなるな
books.xmlをbookdataというIDにして、 bookdata.recordsetは長くて入力が面倒なのでrecとする。 それで、area.innerHTML+=rec("title")+" "+rec("author") +" "+rec("publisher")+"<BR>" で出力できています。 一応、JavascriptとHXMLの課題です。
前から気になっていたのですが if(x+y+z>0){ x=x+y+z; } みたいなとき、条件式の中でx+y+zして、 さらに条件に合えばまたx+y+zをしているのですが これは無駄ではないでしょうか? 解決できるのであればアドバイスくださいませ
514 :
Name_Not_Found :2009/11/06(金) 02:42:10 ID:eRRSS6lE
>>513 if( (x=x+y+z) > 0 ){
}
わかりやすさから言ったら
x=x+y+z;
if(x>0){
}
ってする方がいいと思うけど。普通そうすると思う。
var a = x + y + z;
if (a > 0) { x = a; }
>>514 動作変わってんじゃんw
517 :
Name_Not_Found :2009/11/06(金) 06:46:01 ID:eRRSS6lE
>>515 えぇ、どこが違うんだ?としばらくマジで考えてしまった
if分岐なのに全く頭に入れてなかったよ。寝ぼけてたすみません。
質問です JavaScriptでカーソルの形状を取得できますか?
イベントハンドラを駆使すればできるが、完璧とは言えん。
>>510 "function" から始まる文は function 文と解釈されるから、
文の先頭に "function 式" を書くときは括弧が必要。
式と文の違いについて再勉強な。
質問です。
ああああ
<script type="text/javascript">
var req = new XMLHttpRequest();
req.open('GET', 'test.php', true);
req.onreadystatechange = function (aEvt) {
if (req.readyState == 4) {
if(req.status == 200)
var newresponseText= req.responseText.match(/test\.php?[0-9]+/);
var test1=("
http:test.com/ "+newresponseText)
document.write(test1);
document.close();
}
};
req.send(null);
</script>
ああああ
これをhtml中へ入れると上下にある「ああああ」などが表示されなくなるんですが、
どこが悪いんでしょうか?
>>520 >括弧が必要
一緒に再勉強しようか
void function(){}()
>>521 document.writeが悪い
>>521 onreadystatechange の中で document.write を呼び出しているから、
その時までに「ああああ」などを含む document の読み込みが完了していると、
強制的に document を再 open した後 document.write が実行される、んだと思う。
>>522 一緒に勉強?お断りw
525 :
521 :2009/11/07(土) 08:19:39 ID:???
>>522 >>524 ありがとうございます。
あの、、できたらズバっと書き換えて書き込んでもらえませんでしょうか!
お願いします!お願いします!!
527 :
521 :2009/11/07(土) 09:04:47 ID:???
>>526 ありがとうございます。
}
};
document.write(test1);
document.close();
単純にズラしただけではダメなんですよね?
firebugで「test1 is not defined」と出てしまって表示されないのですが。
どうしてもdocument.writeが使いたければ 同期通信にして、onreadystatechange使うな
529 :
521 :2009/11/07(土) 09:59:02 ID:???
>>528 いえ、どうしてもと言うわけではなく、表示させるにまだはdocument.writeしか知らないもので
ああああ
test1内容
ああああ
と表示できれば何でも良いのですが・・・
530 :
521 :2009/11/07(土) 10:34:22 ID:???
>>528 同期通信でいけました!
ありがとうございます。
532 :
Name_Not_Found :2009/11/09(月) 12:01:38 ID:hcohdA59
<input type="file" name="hogehoge" value="hogehoge"> <input type="submit" value="send"> これでファイルを送信してるんですが、ファイルが指定されていない時はsubmitをdisabled状態にして ファイル名が指定されている時はsend出来るようにしたいと思います。 type=fileの部分に文字列が入っているかどうかを監視出来れば出来そうな気がするんですが、 文字が入っているかどうかの判断はどの関数を使用すれば出来ますでしょうか? 初歩的な質問かもしれませんがアドバイスいただけると助かります。
input type=file の中身をアクセスすることはセキュリティ 制約からできないと思われ。
>>532 単に文字列が入ってるかどうかでいいなら(それで意味があるかは別として)
valueが空かどうかで判断できる。
document.forms[0].hogehoge.value;
JavaScriptってPHPマニュアル(
http://www.php.net/manual/ja/index.php )のようなサイトって無いんでしょうか?
関数とかイベントハンドラ等の詳細な説明(引数とか戻り値の説明とか)のあるサイトって調べてもないような気がするのですが
JavaScriptの公式サイトというのも見当たりませんでした
とほほさんとか、一撃さんようなリファレンスとかサンプルコードは見つかりましたが、PHPマニュアルのようなメソッドの詳細な説明のあるサイトはないように思います
すみませんが、もしそのようなサイトがありましたら教えていただきたいのですが
オライリーのクイックリファレンスは持っているのですが、持っていない時に分からないのがあった時に困ったりするもので
オライリーのクイックリファレンスのようなサイトを探しています
>>535 公式サイトなら
>>1 に載ってるでしょ。JavaScript言語本体ならね。
問題はさまざまなブラウザ固有の違いとかDOMをはじめとするAPI
なんだけど、そういうものを一手にまとめてるものはないと思われ。
PHPと違って各実装者がそれぞれ開発してるからねー。
>>533 <input type="file" id="test" />
document.getElementById("test").files[0].fileName; //ファイル名
document.getElementById("test").files[0].fileSize; //サイズ
document.getElementById("test").files[0].getAsBinary(); //バイナリ形式のファイルの中身
document.getElementById("test").files[0].getAsDataURL(); //Dataスキーム形式のファイルの中身
Firefoxオンリーだけどね
すげえ
array=[1,[2,1],3] みたいなやつで、値だけじゃなく [1,[2,1],3]みたいな文字型で得たいのですがどうすればよいでしょうか phpでいうvar_dump的な感じです よろしくおねがいします
console.log
dqnew-calendarというのを自分好みに改造している途中です。
開発環境はDebian Lenny, Firefox 3.0.11で、
動作確認はDebianのGoogle Chrome 4.0.223.11とWindows XPのIE7でおこなっています。
質問が2点あります。
1. IE7だと動作しません。画像をクリックすると'XXX' is undefined.と言われます。ちゃんとポップアップされていたときもあったのですが、今はエラーになります。どこを修正すれば良いでしょうか?
2. 画像をクリックして表示されるカレンダーの年月の部分をドラッグするとカレンダーが移動するようにしたいのですが、どのブラウザでも動作しません。これは根本的にどこか間違っていると思うのですが、どこがマズいでしょうか?
ttp://kissho.xii.jp/1/src/1jyou96309.zip.html ソースが長くて恐縮ですがよろしくお願いします。
>>543 せめて問題の部分を特定してから質問しなよ
ドラッグなんかも、一旦ドラッグのみを実装してみればある程度
問題は絞れるでしょ
DnDはなんとかできました。 しかしまだIE7で動かない問題は解決していません。 どこが問題なのか全く見当がつきません。。
>>545 16行目
day_hover_bgcolor: '#99BBFF',//コンマとれ
547 :
543 :2009/11/10(火) 22:04:57 ID:???
>546 ありがとーー 表示されるようになりました。 こんなん全然気付かんわ。すごいね。
64行しかない件
551 :
Name_Not_Found :2009/11/11(水) 03:37:05 ID:jW1SZMrP
JSファイルを軽量化したくて、
先月出たAjax Minifier新版のハイパークランチ機能(高圧縮)を試してます。
ヘルプを読むと、たとえば↓こんなのが
------------------------------------------------------------
function DivideTwoNumbers(numerator, denominator, unsedparameter )
{
return numerator / denominator;
}
------------------------------------------------------------
こんな風に↓短くなるらしいんですが、
-------------------------------------
function a(a,b){return a/b}
-------------------------------------
実際はこんな風に↓中途半端になってしまいました。
-------------------------------------
function DivideTwoNumbers(a,b){return a/b}
-------------------------------------
試した方法ですが、コマンドプロンプトから下記記事のとおり↓このように打ち込みました。
ajaxmin -hc inputfile.js -o ouputfile.js
上例のように短くできた方いらっしゃいますか?
どうぞ、よろしくお願いいたします。
(記事11/6)
http://journal.mycom.co.jp/articles/2009/11/06/msajax/002.html (D/Lサイト)
http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34488
displayはだめだめ言われてるのをよく見るけどどうして?
displayはだめだめ言われてるのをよく見ないんだけどどこで?
>>551 記事の説明よく読みな!
>ローカル変数名を短い文字列に置きかえ
555 :
Name_Not_Found :2009/11/12(木) 01:00:33 ID:m9aNdsA1
再初期化したいのですが、同じ変数に数度newで割り当てるとメモリリークしますか? あるいは、Cのmemsetのような関数はないでしょうか?
よく○○.js ver1.00とか1.01とかみるんすけど 小数点以下って一体なんなんですか? ver1とかver2とかだとかっこ悪いから.00とかにしてるんですかね?
>>555 しない
基本的には、どーやってもアクセスできないオブジェクトはGCがよろしくやってくれる
JSオブジェクトの循環参照ぐらいまでなら余裕
>>556 JSに限らない話だからム板の質問スレにでも行くといい
>newで割り当てる そもそもこの発想がおかしい newは生成であって割り当てじゃない
559 :
Name_Not_Found :2009/11/12(木) 04:12:27 ID:m9aNdsA1
>>557 ありがとうございます。これが噂のガーベジコレクションですか。
そういった参考例が見つからなかったので安心しました。
>>558 すみません、言葉が足りませんでした。
手放したオブジェクトのアドレスの行方が知りたかったのです。
560 :
Name_Not_Found :2009/11/12(木) 08:03:32 ID:DlYjSI6s
ただ単純に正規表現で配列を検索したいと思っているのですが、うまくいきません。 a.456 だけが出てくるのを期待しているのですが、どこが間違っているのでしょうか? function pattern_check(){ pattern = '/^a\.\d+$/'; arrays = new Array('a1.123','a.456','1a.789'); for(i=0; arrays[i]; i++){ if(arrays[i].match(pattern)){ alter(arrays[i] + ' ok'); } } }
456ってのは正規表現のどこに反映されてんだよ つか普通に==でいいだろそんなもん
\d を [0-9] に変更
patternが文字列になってる 引用符いらない
あーわり読めてなかった 何で正規表現リテラルを文字列にしてんだお前
pattern = '^a\.[0-9]+$'; だな なんつーか Perl 臭い
567 :
560 :2009/11/12(木) 09:37:58 ID:DlYjSI6s
デリミタ使う正規表現は使えなかったのか ありがとうございました
>>566 \d は Firefox で全角数字にもマッチする。
569 :
Name_Not_Found :2009/11/12(木) 10:33:01 ID:rf00CiU4
javascriptで操作できるdom一覧のページをテンプレに追加していただけませんか?
>>568 おぉ。そうなんだ。[0-90-9]と同等なのか。
でもFirefoxだけなら\dを使わない方がいいのね。
いや・・・・
>>566 のリンク先を見たらとっくにバグとして修正済みらしい。
知らんかった。スマソ
>>569 具体的なURLを挙げなよ。まともなサイトがあまりないので
結局W3Cの標準を読めとかになりがちなのでね。
w3cを読める人がこのスレに一覧でまとめればおk
>>574 はECMA 262 3rd Edition (ECMAScript 3)の邦訳を公開してる人のサイト
IE8で var obj = document.createElement("table"); obj.setAttribute("id","table"); document.body.appendChild(obj); document.getElementById("table").innerHTML = "<tr><td>テスト中</td><td>失礼いたします</td></tr>"; 上記のスクリプトを実行するとなぜかエラーになります。回避する方法はないでしょうか? 複雑なテーブルを組むので、できればinnerHTMLで一括置き換えしたいのですが・・・。
すいません、divで囲ってtableタグごと書き換えたら事故解決しました。
promptみたいな感じで、複数個入力できるようにしたいんですが 無理でしょうか?
すみません、 function A(t){ var v = 33; } var a = new A(); こうした時に、aオブジェクトから 変数vにアクセスする方法はないですよね? やりたいことは、使っているライブラリのconstructor内のローカル変数にアクセスしたいのです。
>>579 >table.innerHTML を設定するさせるには、次のエラー メッセージを表示します。
リンクページの文章が^^;
天下のマイクロソフト様も日本語がおかしいのは気のせいかw
>583 ありがとうございます。 function A(){ var v = 33; } var a = new A(); function A()
>583 ありがとうございます。 function A(){ var v = 33; } var a = new A(); function A(){ var v = 87; } a = new A(); こういうことですよね。
586 :
585 :2009/11/12(木) 23:31:56 ID:???
途中の var a = new A(); はいらないですね。 なんとなく、できそうなきがしてきた。
587 :
Name_Not_Found :2009/11/13(金) 00:53:21 ID:6Eu/tgl7
>>587 ここはJavascriptの作り方を教えるスレではありません。
>>585 値を書き換えるだけならそんな感じ
prototypeを移すのも忘れずに
__A = A;
function A(){}
A.prototype = __A.prototype;
このやり方だとnew A().constructor == __Aになるけど、まあ大丈夫だろ
XMLHttpRequestで読み込み終わった後、またXMLHttpRequestとループさせることできますか? 可能であれば方法教えて欲しいです。宜しくお願いします。
XHRのコールバックでXHRすればいいだけ
592 :
Name_Not_Found :2009/11/13(金) 20:38:21 ID:YUnQfsTF
その黄色のビックリマークをクリックしてみなよ。
594 :
592 :2009/11/13(金) 20:54:40 ID:YUnQfsTF
>>593 下記のような表示が出ました。これはブラウザ側の設定で直るのでしょうか。
Web ページ エラーの詳細
ユーザー エージェント: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
タイムスタンプ: Fri, 13 Nov 2009 11:53:43 UTC
メッセージ: アクセスが拒否されました。
ライン: 495
文字: 5
コード: 0
URI: file:///C:/Users/JUN/Desktop/クイズ!エイズを知ろう!!.htm
メッセージ: アクセスが拒否されました。
ライン: 495
文字: 5
コード: 0
URI: file:///C:/Users/JUN/Desktop/クイズ!エイズを知ろう!!.htm
Firefoxでブックマークにある特定のサイトだけ常に新しいタブで開きたいです。 ミドルクリックすれば任意に選んで新しいタブで開けますが。 そのサイトだけは常に新しいタブにしたいんです。 ブックマークレットに使われてるように、登録したURLの前にjsを使って可能でしょうか? 検索しても見当たらないので記述おわかりの方いたら教えてください。
>> じゅん君
ライン 495 って window.open の箇所かな。
自分の環境(XP/IE8) では再現しないから分からん。
>>595 javascript:void window.open("url")
あ、「新しいウィンドウではなく新しいタブで開く」にチェック入れとかないと駄目か。
598 :
595 :2009/11/13(金) 22:20:35 ID:???
>>596-597 そのチェックは既にしていたので無事開けました
こんな短いスクリプトでできるんですね
ありがとうございました
599 :
592 :2009/11/13(金) 22:39:08 ID:YUnQfsTF
>>596 >>597 私は JavaScript の中身は全然わからないのですが、問題を作った後にサイトの
説明ではブラウザのメニュー「ファイル」→「名前を付けて保存」で,ファイルの種類を
「Webページ,HTMLのみ」で保存するように書いてあったのですが「Webアーカイブ、
単一のファイル」で保存して実行したら動作しました。
600 :
599 :2009/11/13(金) 23:02:50 ID:YUnQfsTF
のつもりだったのですが問題数が少ない場合は「Webアーカイブ、 単一のファイル」で保存でよかったものの問題数が多いとエディタ で見ると問題が消えてなくなってました。結果、サイトの説明の 通りに「Webページ,HTMLのみ」で保存し、ブラウザに google の新しいのをいれたらこれでは表示できました。本当は IE8 で 使いたかったのですが。
601 :
Name_Not_Found :2009/11/14(土) 01:07:57 ID:mAPd0lxt
>>601 質問の意味がわからん
var div = document.getElementById( 'photos_here' );
の id を渡せるようにするだけじゃないの?
605 :
585 :2009/11/14(土) 02:32:20 ID:???
>>589 すいません。 prototype, consturctorの辺りがよくわからなくなって、手が止まってました。
週末の間には、考えて、また返信します。
単に、関数を差し替えれば、いいかと思ってしまっていたのですが、、、勉強が足らなかったです。
location.pathname の末尾が ".pdf" ないし location.search に ".pdf" が含まれる だと いくらか拾えるかもね そもそも ".pdf" が含まれない場合だと JavaScript で対応するのは現実的ではないが
javascriptのprototypeて試作品という意味?
???
>>608 prototypeってフレームワークがあるんだよ
jqueryみたいなもん
611 :
590 :2009/11/14(土) 10:47:54 ID:???
すいません、もう一度聞かせて下さい。
document.writeが終わったらまた最初から同じ処理のループがしたいのですがどなたか改変してもらえませんでしょうか?
function など入ると僕の頭では厳しくて・・・
jmp = new Array();
jmp[0] = "image.php";
jmp[1] = "img.php";
jmp[2] = "gazou.php";
n = Math.floor(Math.random()*jmp.length);
var req = new XMLHttpRequest();
req.open('GET', jmp[n], false);
req.send(null);
var newresponseText= req.responseText.match(/test\.php\?no=[a-zA-Z0-9]+/);
document.write("<a href='
http://test.com/get.php?no= "+newresponseText+");
document.close();
宜しくお願いします。
612 :
Name_Not_Found :2009/11/14(土) 10:51:38 ID:mAPd0lxt
>>601 で書き込んだものですが、すみません書き方が悪かったです。
例えば犬の画像の検索結果と猫の画像の検索結果を同じページ内に表示したいのですが
自分なりのコードを変換してみたのですがどうしてもうまくいきませんでした。
その方法をぜひ教えてください。
e = new Array() と e = [] ってどっちがいいの?
どっちも同じだろks
a1 = new Array(); a2 = new Array(1); a3 = new Array(1, 2); と並べてみて問題点を指摘できないなら、new Array()は使わない方がいい
わざわざコンストラクタ使うやつは変態
変態というのはひどすぎませんか。大学で言語をしっかりとマスターした 人ほど変態ということですか?明確なご説明を求めます。
褒め言葉だろ
javascriptでオブジェクト指向にそって書く方法ってありませんよね? phpなら class Hello { function word(){echo "こんにちは";} }
クラスベースだけがオブジェクト指向だと考えてるなら大間違い
無いね
大学で言語をマスターとかw
大学ではフォートランを習いました・・・
624 :
619 :2009/11/14(土) 17:16:17 ID:???
>>621 無理そうですね621さんありがとうございました
Prototype.jsとかはクラスっぽい書き方をしようとした努力の集大成なのに 全否定しやがったな いいことだ
>>619 JavaはObjective-Cの流れを汲むクラスベースのオブジェクト指向
JavaScriptはSelfの流れを汲むプロトタイプベースのオブジェクト指向
>>605 かわいそうだから言っといてやるが
589は関数宣言だから無理
628 :
585 :2009/11/14(土) 22:01:46 ID:???
>>627 降参です。できれば、もう少しヒント下さい。
関数宣言とは、 function A(){}という形でしょうか?
A = function(){}という形なら、なんとかしようが有ると言うことでしょうか?
関数Aを呼び出してから一秒間は関数Aを使えないようにしたいのですが、うまくいきません。 $('ABC').toggle();の部分が動くのは確認済みです。 <script type="text/javascript"><!-- function A() { var Z if (Z != 0) { $('ABC').toggle(); }; setTimeout("add_Z (0)", 0); setTimeout("add_Z (1)", 1000); } function add_Z(num) { Z = num; } //--></script> どなたかお助けを。
var Z; 何でローカル変数なん?
simpleJS使ってるでしょ
setTimeout、setIntervalでミリ秒指定しても必ずしもその時間後に動作するとは限らない function(){ setTimeout(function(){alert("Hello!");},100); heavyFunction(); } たとえばheavyFunction();の実行に2秒かかったらsetTimeoutが実行されるのは2秒以降になる
>>629 > setTimeout("add_Z (0)", 0);
ここは setTimeout 使う意味ないし。
634 :
Name_Not_Found :2009/11/15(日) 04:11:45 ID:Gx55W3JL
siki = "//body";
rsv = document.createNSResolver(document.documentElement);
res = document.evaluate(siki, document, rsv, XPathResult.ANY_TYPE, null);
<html xmlns="
http://www.w3.org/1999/xhtml ">
<body>
・・・
これでresにnullしか含まれないのはなぜでしょうか?
siki = "//*"だと取れるのに・・・?
ブラウザはfirefox3.5, safari4、HTMLはContent-Typeをapplication/xmlにしており、XMLとしてパースされてます。
この間うちの部署のパソコン画面がエラーが出て部長が激怒。ある人 がやってきてメモ帳みたいなのを開いてチョチョッとやったら直って しまいました。ジャバの天才っているんですね。皆さん本当に凄いです。 尊敬してます。
↓みたいなことを実現したのですが、うまくいきません。 スクリプトから、外部スクリプトを呼び出すことは無理なんでしょうか? <div id="box"></div> <a href="javascript:void(0);" onclick="document.getElementById('box').innerHTML = '<script type=\"text/javascript\" src=\"ほにゃらら.js\"><\/script>'; return false;">表示</a> 「<script type="text/javascript" src="ほにゃらら.js"></script>」はいわゆるブログパーツで、 要点としては、これを画面操作によって初めて表示させたいのですが。
失礼 ×実現したのですが ○実現したいのですが
とりあえずhtml-lintでチェックしてみ
// ==UserScript==
// @name gPDF
// @version 1.1
// @author ArpitNext
// @namespace
http://blog.arpitnext.com/ // @description Scan webpages for pdf links and set them to open with Google PDF viewver.
// @include *
// @exclude
http://docs.google.com/* // ==/UserScript==
(function () {
dl=document.links;
for(i=0;i<dl.length;++i){
if(dl[i].host!="docs.google.com"){
if(dl[i].href.substr(-4)==".pdf"){
dl[i].href="
http://docs.google.com/viewer?url= "+dl[i].href;
}
}
}
})();
>> if(dl[i].href.substr(-4)==".pdf"){
これだと.pdfにしか反応しないので
>> if(dl[i].href.substr(-4)=="*pdf*"){
としたのですが、全く意味がありませんでした。
URLに"pdf"が入っている場合全てに適用させるにはどうしたらいいでしょうか
640 :
636 :2009/11/16(月) 01:21:20 ID:???
>>638 レスありがとうございます。
html-lintでチェックしてみて、文字参照されていないのがまちがいのようだったので、
<div id="box"></div>
<a href="javascript:void(0);" onclick="document.getElementById('box').innerHTML = '<script type="text/javascript" src="ほにゃらら.js"></script>'; return false;">表示</a>
に書き換えたのですが、やはり狙い通りには動いてくれません。
Firebugで確認すると、確かにbox内に「ほにゃらら.js」は書き込まれて、展開もされているようなのですが、
内部の関数が実行されないのか、ブログパーツが表示されません。
あとはどこをチェックすればいいでしょうか?
あら、これならうまくいくか <div id="box"></div> <a href="javascript:void(0);" onclick="document.getElementById('box').innerHTML = '<script type="text/javascript" src="ほにゃらら.js"></script>'; return false;">表示</a>
642 :
636 :2009/11/16(月) 01:24:31 ID:???
onmouse系が左クリックで反応してくれるのはいいのですが 右クリックでも反応してしまうのはどうにかなりませんか? ただし、右クリックメニューはそのまま使いたいです。
>>636 innerHTMLでは基本的に無理
createElementで<script>を組み立てて、<head>あたりにappendChildする方法が一般的
ブックマークレットで外部jsを読む方法を調べれば実例見つかると思う
645 :
636 :2009/11/16(月) 13:10:55 ID:???
>>644 レスありがとう。
ブックマークレットのやり方をググってcreateElement&appendChildしてみましたが、
やっぱり表示できませんでした。
「ほにゃらら.js」の中身でdocument.writeとかやってるせいかなと思っているのですが、
「ほにゃらら.js」は一律じゃなく、こちらで中身を触れないのもあって、とりあえずこの方法も無理との判断です。
ですが、この方法を教えてもらったのをきっかけに、ある別の方法を思いつき、
ちょっと試したところ、やりたいことが実現できそうな目星がたちました。
ただそれがJavaScriptの文法的に正しいのか自信が無くて、
他のブラウザでも汎用的に通用するのか、もう少しテストしてみて、改めて相談に伺います。
その時はまたよろしくお願いします。
application/xml笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
>>646 失笑の爆笑をしてらっしゃるところに質問なのですが、application/xmlで駄目な理由を詳しく教えてもらえますか?
理由も知らないでapplication/xml使ってたのかよ笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
なーんだ答えられないのか 聞いて損した
文字参照を使うなら、application/xmlかapplication/xhtml+xmlじゃないと駄目だよ IEは相変わらず機能しないけど
651 :
Name_Not_Found :2009/11/16(月) 17:39:44 ID:a2Nmfpeo
>>639 クォートで括ったそれは文字列リテラルで、"*pdf*"という文字列と
一致するかどうかの比較。ワイルドカードとして機能しない。
正規表現リテラルはスラッシュで括ります。
/.*?¥.pdf.*?/.test(dl[i].href)
とかかな。乱暴すぎるだろうか。
652 :
634 :2009/11/16(月) 19:24:46 ID:VFLw7WPT
だ、誰かお助けを・・・
>>634 XPathでの「body」は「名前空間なしのbody」の意味。
だから名前空間のあるXHTMLではそのままで動かない。
654 :
634 :2009/11/16(月) 21:07:22 ID:VFLw7WPT
>>645 読み込んだだけでdocument.writeするjsをクリックイベントで読み込ませるのはどうかと思うけど、
document.writeを上書けば何とかなるんじゃ
>>654 繰り返しになるけど、NSResolverがどう動こうと、XPath式の中のプレ
フィックスなしタグ名は「名前空間なし」と決まっているの。
だから、この場合はXPath式の中でプレフィックスを付けて自分で
NSResolverを提供するか、//*[local-name()="body" and namespace-url()="..."]
と書く必要がある。
657 :
634 :2009/11/17(火) 00:36:14 ID:???
>>656 理解できました。ありがとうございます。
文字列をつくるのに、クオテーションやダブルクオテーションを使いますが、Perlのように q/文字列/ みたいな記法はないのでしょうか?
RegExp コンストラクタ
q/文字列/みたいな記法はないが似たような事は可能 function q(s) { s += ""; return s.replace(/\//g, ""); } var a = q(/"""'''/); alert(a);
>>660 なるほど、関数を作れば似たようなことができるんすね。
d
662 :
Name_Not_Found :2009/11/17(火) 15:44:28 ID:/uatvqzf
専ブラのjane等のようにアンカーをマウスオンすると その上にポップアップ(ブラウザが開くタイプではなく、レイヤー?というタイプだと思います)して、特定のHTMLファイルを読み込んで表示したいのですが、参考になるサイトがあればご教授下さい
教授はあげません
ご教示だな。
665 :
Name_Not_Found :2009/11/17(火) 17:08:32 ID:PFN85Hw+
666 :
Name_Not_Found :2009/11/17(火) 20:20:12 ID:PFN85Hw+
サーバ負荷が高まった時に、レスポンスが遅くてイラついた ユーザがリロードするのを抑制したくて、とりあえず サーバ側で高負荷時にフラグを立てて JS側で、フラグONなときにショートカットとF5を 抑制することにしたんですが、 リロードそのものをどうこうすることって、できるんかね?
うざす
>>660 斬新な発想だなw
s += "";は文字列変換したいんだよな? String()でキャストしたほうが見た目もパフォーマンスもいい
あと replace(/\//g, "")だと/が全部消える。replace(/^\/(.*)\/$/g, "$1") とか。
で、こんな感じ。
function q(s) {
return String(s).replace(/^\/(.*)\/$/g, "$1");
}
たださ、これ、q(/[/) とかがシンタックスエラーになるのよ。
残念だけど、実用的ではないな。
JavaScriptで<html></html>内に記述した日時を取得してくるって可能ですか?´`
>>668 パフォーマンスの話をするなら結果的に呼ばれるtoString()を直に呼ぶ方がいいはず
>>669 DOM操作の基本レベル
>>668 /にしても[にしても(にしても、あんたのように何が書けて何が書けないかが
分かるヤツならどうとでもなるでしょ。
実用的って…んなもの考えて書いちゃいないって。勘弁してよw
使いたいヤツが使えるようにすりゃいいのよ。
673 :
Name_Not_Found :2009/11/17(火) 22:05:50 ID:PFN85Hw+
>>667 やっぱ無理かー。
いろいろ調べたんだけど、リロード自体とちゃんと向き合って
どうこうしたのは見つからんし。
>>670 >>671 var obj = document.getElementsByTagName("html").innerText;
alert(obj);
こんな感じでつか?
あんでぃふぁいんど としかでねー<(゚Д゚;)>ぬおーー
>>672 アイデアは素直に面白いなーと思ったけど、
実用的じゃないと鵜呑みにしちゃってる感じの
>>661 は困るんじゃないかなと思ってさ。
って、それなら安価を661にするべきだったな。すまそ
676 :
Name_Not_Found :2009/11/17(火) 23:37:56 ID:h/dA56Cd
カスとか言いながらググッてくれた貴様の優しさに東京市民が泣いた
1943年東京都誕生
>>676 safe サーチを off にして何を検索してるんですか//
何ってナニでしょ
んま〜お下品ですこと
>>661 実用に耐えられるものを書いた(つもり)
/*******************************************
引数:正規表現リテラル(/ [ ] ( ) これらはエスケープ)
*******************************************/
function q(s) {
function f(s1, s2, s3) {
if (s3.charAt(s2 + 1) != '\\') return '';
return s1;
}
return s.source.replace(/\\/g, f);
}
var a = q(/\\ \/ \[ \( " '/);
alert(a);
穴があったらフォローしてちょ
穴があったら俺は入れる。
おめーら下品すぎんだよ おれのチンポでもしゃぶってろこのチンカスマンゲ
>>682 関数にしてまで利用する処理なのか?それ
>>685 知らん。
クォーテーションをエスケープすんのが面倒なんじゃないの。
>>682 function q(s) {
function f(s1) {
return s1.substring(0, s1.length / 2);
}
return s.source.replace(/\\+/g, f);
}
ぶっちゃけると、エスケープの手間を省こうとして エスケープしないといけない文字の種類を増やしてるのは本末転倒だよね
以下サイトにクロージャーの説明がありますが、
第3回 変数の宣言とスコープ − @IT
http://www.atmarkit.co.jp/fdotnet/ajaxjs/ajaxjs03/ajaxjs03_04.html function myClosure(init) {
var cnt = init;
return function() {
return ++cnt;
}
}
var result = myClosure(10);
window.alert(result()); // 11
window.alert(result()); // 12
window.alert(result()); // 13
以下のように引数をそのままクロージャーに入れるのとは何か違いはありますでしょうか?
function myClosure(init) {
return function() {
return ++init;
}
}
>>689 その例だと見てるスコープが同じだから違いがないなぁ
上の例は、
var cnt = init;
で初期化を考えてるんだろうから
var cnt = init || 0;
の方が良い気がする。引数なければ1からカウントってことで。
Number の初期化に論理和演算子使う奴とかまだいたのかよ arguments.length まで頭回らなくてもせめて Number() してくれ alert(let (x = 'num') x++);
or使うと不幸になるパターンあるのはわかるがそのコードでなにが言いたいのかわからねー NaNはNaNだろ、つーかサンプルコードで当然のようにlet使うなよ
694 :
690 :2009/11/19(木) 12:49:10 ID:???
>>692 ごめん、Numberの初期化で論理和演算子ってダメなの?今まで気にしてなかった
arguments.lengthの話ってことは0だとfalseになるからってこと?
それと、alertのコードの意味がよくわからないのでそれも教えて
695 :
636 :2009/11/19(木) 19:22:37 ID:???
onclickでブログパーツを表示させたいと相談した
>>636 です。
あれからいろいろやってみて、↓でかなりいい線まで来ました。
<script type="text/javascript">
function Disp(js, x, y) {
document.getElementById('box').innerHTML = '<iframe id="blogparts" name="blogparts" width="' + x + ' height="' + y + '" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"><\/iframe>';
var iframeDocument = document.getElementById('blogparts').contentWindow.document;
iframeDocument.open();
iframeDocument.writeln('<html><head><title><\/title><\/head><body style="margin: 0px; padding: 0px;">' + js + '<\/body><\/html>');
if (!document.all) iframeDocument.close(); //IE除外※
return;
}
</script>
<div id="box"></div>
<a href="javascript:void(0);" onclick="Disp('<script type="text/javascript\" src="ほにゃらら.js"></script>', 160, 400); return false;">表示</a>
innerHTMLで書き出すのでは「ほにゃらら.js」を実行できないので、iframeを書き出して、その中にdocument.writeしてしまおうという発想です。
つづく
696 :
636 :2009/11/19(木) 19:24:07 ID:???
つづき この方法で、動作確認しているFirefox 3.5.5、Google Chrome 3.0、Safari 4.0.4では完璧に表示できました。 しかし、IE 8.0ではcontentWindow.documentをclose()すると、ほとんどの場合、エラーも出ないままにIEが固まってしまいました。 ※その回避のための「if (!document.all) iframeDocument.close();」 そこでまた相談なのですが、 1)IEがエラーで停止じゃなくてブラウザごとフリーズしてしまうというのは、この方法は他のブラウザでたまたま表示できているだけで、JavaScript的になにか根本的にまずいことをしてしまっているのか? 2)手法として問題ないのであれば、今のスクリプトだと、当然IEではcloseしていないので「ほにゃらら.jsをダウンロードしています」とステータスバーに表示されたままになってしまう。 closeしても絶対フリーズするわけではなく、タイミングによっては表示ができるので、おそらくcloseのタイミングが早すぎるのだと思われる。 ほにゃらら.js読み込み完了を判別してcloseする方法はないか? やってみたこととして、 「<iframe 〜 onload="self.contentWindow.document.close();">」 ↑iframeにonloadを仕込む。 「iframeDocument.writeln('<html> 〜 <\/html><script type="text/javascript">self.document.close();<\/html>');」 ↑contentWindow.documentに書き出す内容の最後に自身をcloseするスクリプトを追記する。 「iframeDocument.writeln('<html> 〜 <body 〜 onload="self.document.close();">');」 ↑contentWindow.documentに書き出したbodyにonloadを仕込む。 は、いずれもダメでした。 いかがでしょうか?どうかいいアイデアをご教示願います。
697 :
Name_Not_Found :2009/11/19(木) 19:27:25 ID:4k1oW1OP
ブラウザIEなんですが、 <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html;charset=UTF-8N"> <TITLE>あ</TITLE> </HEAD> ・・・というHTMLがあって、 var titleTag = document.all.tags("HEAD")[0].children(1).tagName; とすると、TITLEではなくMETAになるんですが、 HEADのchildrenは勝手に並びかえられて、HEADのfirstChildは必ずTITLEになるという決まりがあるのでしょうか?
698 :
Name_Not_Found :2009/11/19(木) 19:38:53 ID:istAjeXH
javascriptを覚えることとjqueryやprototypeを覚えるのは どちらがweb制作現場で使える技術になりますか?
最低限、HTML(HTML4.01/5.0/XML/XHTML1.0|1.1),CSS(CSS2.1/3),JavaScript,PHP,WAI(アクセシビリティ)は使えるようになった方が良い
>>695 どこで利用したいのかわからないけど、思いついたこといくつか。
1、ほにゃらら.jsを書き換えられるなら関数で包んで、onclick=その関数
2、自分のウェブページとかでページをうpできるなら、ほにゃららJSを埋め込んであるページを作る。iframeのsrc="〜”の〜部分にそのページを入れる。
>>698 現場だとライブラリを使いこなせるほうが助かる。
ただ、本質的にJSを理解したいとなれば、当然自分で
ライブラリを組んでみるなりしたほうがよい。
702 :
Name_Not_Found :2009/11/19(木) 21:55:42 ID:Aafz5cdk
>>698 両方できないといずれ困る。っていうか
「来週からやる案件、JQuery使うから(使えないから)よろしこ」
「はい」
ってなるだけだけどね。
>>699 2009/11/19現在で勧告段階でもないのにHTML5を使える人なんているんですか?
>>703 もうYoutubeとかいろいろなサイトで使われてますがな
試験用の先行対応を利用するとかえらい迷惑やね
706 :
Name_Not_Found :2009/11/19(木) 23:09:27 ID:Aafz5cdk
sectionに対応したブラウザが無いのにhtml5が使えると思ってる人って勘違い野郎ってことか
「勧告段階でもないのに」とか… HTML5は実装されて、使える状態になってからやっと勧告だからな。 CSS2.1とかも勧告候補だけど、普通に使われてるし。 勧告されるまで律儀に待つというなら止めないけど、完全に取り残されるぞ… 実際、Firefox3.6にはHTML5パーサー載ってて、html5.enableをtrueにすればもう試せるようになってる。
試すのはいいが、まだ独自拡張状態だからな
710 :
Name_Not_Found :2009/11/20(金) 00:45:40 ID:3jkPr5Fz
何をもって使えないって言ってるかだよね。 IE以外はある程度使えると実感してるけど。canvasとか。 web storageも使えてるなぁと実感してるけど、確かにそれぞれのブラウザの独自拡張とかもあるからそう言う面ではまだってことか。
HTML5の半分以上は意味論の再定義と現実装の後付け標準化なんだから 勧告段階だのサポートだの言ってる奴はHTML5をFlashか何かと勘違いしてる
発端は
>>699 JavaScriptから話がそれた
XHTML1.1なんていまさら使う機会なんてないよ
質問です。 jQueryを使用していて、 $(this).css("backgroundColor","red"); みたいにやると、thisの指し示す要素の背景色を赤くできると思うんですけど、 thisの指し示す要素の中にある「#hoge」の背景色を赤くしたい場合、 どのような書式にすればよいのでしょう。 $("#fuga > #hoge").css("backgroundColor","red"); みたいなことをしたい時に、「#fuga」の部分が「this」になると書き方がわからないのです。 JavaScriptの根本が全く理解できていないせいだとは思うのですが。。。
技術的にという意味ならいる
ノシ
そういうのって行動力が評価されるべきだろ
>>716 すみません(たぶん)自己解決しました。
jQueryの仕様の中に普通にあったみたいで、
$("#hoge", this)
とすれば、(ちょっと自信ないですが)okだという認識で落ち着きました。
お騒がせしました、ありがとうございます。
>>721 children()かfind()使ったらええやん
>>722 children()とfind()についてリファレンス見てきました、理解できたつもりです。
どんな命令が予め用意されてるのかすら把握できていないことは自覚できたので、
もう一度リファレンス等きちんと読んで勉強してきます。
ありがとうございます。
参考のためそのリファレンスを教えてください
725 :
716 :2009/11/20(金) 11:47:17 ID:???
URL直接貼るのはどうなのかな、いいのかな 私が今見てるのは、「jQuery リファレンス」でググると上の方に出てくる、以下3つです。 www.openspc2.org/JavaScript/Ajax/ref/jQuery/ver1.0.3/index.html semooh.jp/jquery/ www.mikage.to/jquery/jquery_ref.html かなり初心者なのでどういう情報を参考にするとよいのかも自信ないんですが、 ひとつ見てもよくわからない場合とかに複数のサンプル比べながら目を通したりして、 まあ、少しずつ勉強してるつもりです。
>>700 レスありがとうございます。
利用場所というか目的は見たまんまだと思うんですが、ブログパーツギャラリーみたいなのを構築しています。
というわけで、ほにゃらら.jsの中身は千差万別で、書き換えることもできません。
で、ごめんなさい。
本当はIEの場合の回避は、今回問うているclose問題とは違う理由から
>>700 の2の方法でやっています。
ただ、自由にページを増やせる環境でなく、今やっている別ページの埋め込みも、
それ専用のページが作れないので、いろいろ無理をしており、できれば単独ページで完結させたいのです。
その辺を説明しだすと回りくどくなるかと思い触れなかったのですが、
結果的に同じところにたどり着いてしまいました。すみません。
他のブラウザではうまくいくのに、IEではハングしてしまうのが解せなかったのですが、
これについては、IEが特殊と思うしかないんでしょうかね。
仕方ないので、別ページを埋め込む無理を許容して、一応の完成としたいと思います。
ありがとうございました。
727 :
Name_Not_Found :2009/11/20(金) 15:51:07 ID:u77XSZWV
教えてください。 ある会社のHPを作成しています。 その中にブログのページを作るのですが、最新のブログのタイトルとテキストを 表紙ページでも表示させたいのです。 そのときに、テキストは全文ではなくて、最初の3行程度だけ表示させて、 下に『続きを読む』と入れて、ブログのページにリンクさせたいのです。 『続きを読む』と入れて、ブログのページにリンクさせることは簡単なので出来ましたが、 ブログのページの最初の3行程度を表示させるところがわかりません。 JavaScriptを使うのかと思い、こちらに質問させていただきましたが、違ったらすいません。
>>727 そういうのはサーバで全部やるのが普通
javascript使うのは「リンクをクリックしたらその部分に全文が表示される」という場合
要約にせよ全文にせよサーバがデータ吐かないと実現不可能なわけで、大概サーバもいじることになる
つーかどのブログシステム使ってるのかしらないけど、該当スレで聞けばいいだろ
有名どころなら特定のアドオンやテーマを使えば一発だったり、手順解説してる記事が存在してたりする
javascriptで続きを読むという文字をクリックしたら tuduki1にdisplay:noneにしてkiji1にdisplay:blockを設定 .kiji1 { display:none; } あああああああああああああああ いいいいいいいいいいいいいいい ううううううううううううううううううううう <div class="tuduki1">続きを読む</div> <div class="kiji1"> えええええええええええええええ おおおおおおおおおおおおおおお かああああああああああああああ </div>
失礼、MTやWPを想定してたけど表紙ページってブログ外か 俺ならそのページを動的生成にしてブログのRSSを埋め込む javascriptでRSS表示する方法でもいいだろうけど、どちらかといえば最終手段だな
>>727 メルアド晒してくれるのなら作ってもいいんですよ
最初の三行だけ別のデータとして登録すればよかったりするけど
まだ初心者だけど、そのブログが同一サーバー内にあるのなら内容をAjaxで取ってくれば いいのかな?
test999
アクセスログ取得CGI(PERL)を先頭ページに仕込んでアクセスすると ”アクティブコンテンツをブロックした”というポップアップが出て うざくてしかたありません。出さないようにするCGIの設定方法や、 HPへのJAVASCRIPTの記述方法はないものでしょうか?
人のソース見て、変数名とかが訓令式になってるのをを見るとヘボン式に直したくなります
ローマ字綴りはうんこ エヴァンゲリオンとヱヴァンゲリヲンを区別できない
wevangerion
>>727 「その中にブログのページを作る」とあるから同一ドメインだろ?
ならjQuery使えばいいんじゃね
<!-- 表紙ページ -->
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<div id="nav"></div>
<div><a href="blogTop.html">続きを読む</a></div>
<script type="text/javascript">
$("#nav").load("blogTop.html #title, #contents");
</script>
<!-- ブログページ -->
<h3 id="title">タイトル</h3>
<div>
<span id="contents">表紙に表示させたいテキスト</span>
...
</div>
ブログの文字コードはUTF-8でなきゃダメよん
744 :
Name_Not_Found :2009/11/21(土) 07:54:25 ID:66iDeqOB
公開されているライブラリやサイトで、 時々if文などで === が使われているのをみかけるのですが、 == と === の違いはなんでしょうか? PHPだと === は、厳密な型の比較を行って == よりも高速に動作するみたいなのですが一緒でしょうか?
JavaScriptは最適化の関係で厳密等価演算子を使うと遅くなる。 でも使い道が無いわけでもない たとえば正常なら数値を、エラーが発生したらfalseを返す関数の場合、等価演算子をつかうと0とfalseの区別が出来ない
746 :
Name_Not_Found :2009/11/21(土) 08:49:07 ID:66iDeqOB
>>745 ありがとうございます!
=== は、やはり厳密等価演算子でしたか。
しかしPHPと違って厳密等価演算子は遅くなるんですね・・・注意します。
>>741 それはヘボン式が音写だから。訓令式なら翻字なので可逆変換。
748 :
Name_Not_Found :2009/11/21(土) 13:13:40 ID:/DfmKa7m
ネスケでの__proto__は将来的にIEでも採用されますか?
>>745 手間のかかる文字列比較以外は厳密比較のほうが速いはず
文字列も同じだったかも? とりあえず厳密比較のほうが遅いというソースがほしい 手元のFx3.5でおおざっぱに試してみたら、誤差程度か厳密比較のほうが倍ほど速かった まあJITのご機嫌にも影響するけど
if (file1.match(/abcd/)) { document.write("OK"); } file4まである場合 file1〜file4の4つの値全てにabcdが入ってる場合だけOKと表示させたい場合は どう書くのでしょうか?
4つだけなら && で繋げたら?
>>751 &&でつなげるか、フラグを用意するか。
それと、その程度の検索であればindexOfを用いたほうがよい
「厳密」って言葉のイメージとは裏腹に、 型変換をしない分、却って速いと思うんだけどな。
>>753 ありがとうございます。
できました。
一応・・・
if ((file1&&file2&&file3&&file4&&file5).indexOf(/abcd/)) {
で合ってるでしょうか?
あ、何か違いますね if ((file1&&file2&&file3&&file4&&file5).indexOf("abcd")) { これで合ってるでしょうか?
ふ・・・増えてる・・・・? wwww
基礎丸ごとだと一時間じゃ足りないかもしれないw
真偽値と論理演算について勉強してみて
オブジェクトの合成は普通できないけど(それぞれ専用の関数を用意した場合を除く)
trueやfalseになってしまえば合成できる
やりたいことは、愚直に書けばこういうことでしょ?
if (file1.match(/abcd/)) {
if (file2.match(/abcd/)) {
if (file3.match(/abcd/)) {
それが
>>756 みたいには化けないんだよ
でも複数のif文を一つに化けさせることならできる
>>750 速くなるというより遅くならないというほうがしっくりくる
0〜4までの値で、イベントに応じてこれが変動するarrayの値(point)があります。 sample[1].point:2 sample[2].point:3 sample[3].point:3 sample[4].point:2 sample[5].point:3 sample[6].point:1 sample[7].point:0 sample[8].point:4 これをhtml内に反映させて、 23323104 のように表示させる部分を作ったのですが、これらの数字のかわりに GIF画像を値に応じて表示させることはできますか?(0なら○○.gif、1なら××.girのように) ネットでいろいろと調べてみたのですが、これといったものが見つけられませんでした。 ここ一週間ほど行き詰まっています。 当方初心者です。アドバイス、もしくはお叱りだけでもかまわないのでよろしくお願いいたします。
検索する対象が増えたらどうするの? こう↓すればいいの? var file_; for ( var i = 1; i < 5; i++ ) { eval( "file_ = file" + i ); if ( file_.indexOf("abcd") ) break; } if ( i == 5 ) document.write("OK");
763 :
Name_Not_Found :2009/11/21(土) 17:18:45 ID:OBIjUl2O
>>762 そのくらいでeval必要ないだろ。あとindexOfは位置を返すからそれだと正常な状態でもbreakする
var files = ['abcde','abcdf','abcdg','abcdh','abcdi',];
for (var i=0,l=files.length; i<l; ++i) {
if (files[i].indexOf('abcd') < 0) {
break;
}
else {
if (i === l-1) document.write('ok');
}
}
764 :
751 :2009/11/21(土) 17:19:13 ID:???
あら、755ではダメなんですね
>>759 ありがとうございますl。愚直なそれでいきます!
>>762 どういう意図で eval 使ってるのか分からん。
>>765 既存のローカル変数に動的にアクセスしたいからでしょ
コンテナ使わずに、動的にアクセスしたくなるほど変数を作った時点で破綻してるわけだけど
767 :
Name_Not_Found :2009/11/21(土) 18:02:02 ID:95sN+lT1
>>761 「イベントに応じて」っていうのがよくわからないし、
表示部分をどうしているのかによるけど、
エスパーしてみると、今は
for (var i = 1; i <= 8; i++) { //sample[i]の添え字は1〜8なんだよね?
document.write(sample[i].point);
}
みたいになってる?
だとしたら、0〜4までの値で表示させたい画像をそれぞれ、
0:○○.gif
1:××.gif
2:□□.gif
3:△△.gif
4:◇◇.gif
として、
var img = new Array('○○.gif', '××.gif', '□□.gif', '△△.gif', '◇◇.gif');
for (var i = 1; i <= 8; i++) {
document.write('<img src="' + img[sample[i].point] + '" />');
}
みたいな感じ?
文字列にHTML含めるな
769 :
Name_Not_Found :2009/11/21(土) 19:42:39 ID:OBIjUl2O
>>768 横レスだけどinnerHTML使わずにDOMでやれってこと?
771 :
Name_Not_Found :2009/11/21(土) 20:32:30 ID:OBIjUl2O
DOMが難しいかどうかは別にして、簡単に使えるinnerHTMLを全く使わないってのももったいなくない? PCDATAの理由なら <![CDATA[ ]]> で囲めば良いし、外部ファイルにすれば良いって話じゃない?
いや、全然。
質問です。 横幅のピクセル数が決まっているdivにフォントサイズの決まったテキストを入れる時に、 右端で折り返す必要のあるとき、あらかじめ何行になるか知る方法はないでしょうか? 3行以上になるならば、残りを省略して2行に抑える処理を入れたいと思っています。 たとえば「長すぎるテキストメッセージ」を「長すぎるテキス...」という風に変更したいわけです。 何か良い方法やアイデアがあればぜひ教えてください。よろしくお願いします。
条件付コンパイル
778 :
Name_Not_Found :2009/11/21(土) 21:52:05 ID:95sN+lT1
>>770 ごめん、解答しておいてなんだけど、
最近やっとDOM的な扱いを覚え始めてて、
PCDATAとかについてはまったく無知なんだけど、
>>767 なら、
var obj = document.createElement('div');
var img = new Array('○○.gif', '××.gif', '□□.gif', '△△.gif', '◇◇.gif');
for (var i = 1; i <= 8; i++) {
var img = document.createElement('img');
img .setAttribute('src', img[sample[i].point]);
obj.appendChild(img);
}
document.getElementById('body内のどっか').appendChild(obj);
ってことであってる?
document.write('<tag>fuga</tag>');
とか、
document.getElementById('body内のどっか').innerHTML = '<tag>fuga</tag>';
ってのは、今の(?)ルールではやっちゃだめってことで?
779 :
761 :2009/11/21(土) 21:55:23 ID:???
>>767 ありがとうございました!
試行錯誤した結果、理想のものができました。
自力では100%できなかったんで、本当に感謝です!!!
>>773 <div id="nav" style="border:1px solid; width:100px;"></div>
var str = "ああああああああああああああああああ".split("");
var s = "";
var obj = document.getElementById("nav");
for (var i = 0; i < str.length; i++) {
obj.innerHTML += str[i];
if(obj.offsetHeight > 40) {
obj.innerHTML = s.substring(0, s.length - 1) + "…";
break;
}
s += str[i];
}
英数字が絡んでくると微妙なんだけどね
あとは工夫してちょ
質問です。 簡易パスワード認証をかけたんですが、firefoxだとうまくいくのにIEではうまくいきません。 どうしたらいいでしょう。 <script type="text/javascript"><!-- function checkpw(){ var pswd = prompt("パスワードを入力して下さい:",""); location.href = pswd + ".html"; } //--></script> <form> <input type="button" value="秘密のページへ" onClick="checkpw();"> </form> というソースを記載しています。
782 :
Name_Not_Found :2009/11/21(土) 22:53:05 ID:lHVTQkPd
>>782 出来るかどうかは実装次第
検索ワードに javascript ってつけ足せばよくね?
個人的には MDC Search で十分だと思うけど
>>782 IE以外なら、DOM Level 2までは確実に使えるよ。
DOM Level 3はブラウザによってまちまちかな。
てか、document.implementationとかでググれば普通にJavaScriptについての記述が出てくるけど…
getElementsByNameってinputタグみたいにname属性があるものしか取れないの? divタグに無理矢理name属性つけてgetElementsByNameで取るとか不可能?
id付けてidでとれよ
getElementsByNameとかgetElementsByIDって標準でしょうか?
まず標準を定義しようぜ
DOM一覧をまとめたサイトをどなたかテンプレ追加していただけませんか?
792 :
790 :2009/11/22(日) 11:50:21 ID:???
それ俺じゃないです
検索使えば一覧なんて必要ないだろ
テンプレに入れたいなら人任せにしないでURL貼れよ 知りたいだけなら小賢しいこと言ってないで素直に聞けばいいだろ
>>794 は初心者とみた
煽っておいて本当は自分が知りたいために人を利用するとか乙
>>796 sorry,this thread is japanese only!!
脳みそ腐ってんの?
ジュワワ?
innerHTMLだけだと限界があるんだよね・・変数上にDOMを構築出来ないとか色々と
innerHTMLって初心者向きだと思ってるよ
トラップだらけなのにどこが
ブラウザが曖昧解釈してくれる言語は初心者向け……と言われてる気がする
それは JavaScript を知らない人間の認識が間違っているだけ。
子飼弾がYAPCで、「言語モドキのJavaScriptにできてPerlでできなわけがない」という 言及があった。
ブラウザによって全然違うからそういわれても不思議ではない
CanvasのgetImageDataって、canvasに外部画像読み込ませた上からやるとエラーでるっぽくない?
same origin
Web Workersを使ってマルチスレッドプログラミングに挑戦中です。 スレッドに引数を渡したいのですがどのようにすればよいのでしょうか?
postMessage
811 :
Name_Not_Found :2009/11/23(月) 17:39:06 ID:IOMrU+tq
>>810 ありがとうございます。今出先で確認できないのですが、postMessageは親→子の通信も可能なのですか?
マルチは消えろ
出先で質問するなよ
<HTML><BODY><script type="text/javascript"><!-- for(x=1234000;x<=1234100;x++) { var flag=0; if( (x % 2) == 0) { document.write(x+"<br>"); }else { for(y=1;y<=(sqrt(x)/2);y++) { if( (x % (2*y+1) ) == 0 ) { flag++; } } if( flag == 0 ) { document.write(x+"Prime!<br>"); } else { document.write(x+"<br>"); } } } // --></script></BODY></HTML> 1234000〜1234100までの素数判定のプログラムを書いたつもりなのですが、何がいけないのでしょうか
質問です。javascriptで出来ないことって何ですか?
>>817 他の鯖に進入して中身を改竄することが出来ないっていう意味でいいんですかね。
javascriptを学ぼうと思っているんですが、何が出来て何が出来ないのかいまいちよく分からなくて。
それ以外の事は大体出来ると考えていいんでしょうか?
スレチだったらごめんなさい。
出来ること以外は出来ない、と考えておけ どうせ理論上可能でも現実的・能力的に不可能なことは山ほどある
JavaScript 上達しても彼女できないし、生活は充実しないし(T^T) あ、でも AV はいっぱい手に入りました(^^;)
「自分に」が抜けてたスマン 結局、地道にチャレンジを繰り返すことで出来ることを増やしていくしかないんだよ
JavaScript 上達しても自分に彼女できないし、生活は充実しn
分かりました、ありがとうございました。 あともう1つだけ(スレチだと思うけど)質問させて下さい。 javascriptが理解出来るようになるまでどれくらい掛かりましたか?
JavaScript は進化し続けるよ、いつまでも。 いくら AV を揃えても、新作が気になるのと同じ。
分かりやすい説明ありがとうございます。 なんかやる気が出てきました。
ホテル等の検索サイトや家電系の比較サイトのように、複数のサイトから同じ条件(料金や個数など)をフォームで指定し、その結果を1つのページに表示したいのですが、ソースが分かりません・・・
>>826 webサーバにデータベース置いて検索してるだけ。jsの仕事じゃない。
828 :
Name_Not_Found :2009/11/24(火) 13:18:05 ID:3CHH7Npu
>>823 理解したつもりになる→全然わかってなかったことに気づく、
の繰り返しでしょ。何事も。
>>823 結局自分がどこで納得するかということだよ
JavaScriptなんてたいして難しい言語じゃないよ むしろ他からすると簡単 そう難しく考えずに気楽にすればいいんだよ
>>824-825 >いくら AV を揃えても、新作が気になるのと同じ。
>分かりやすい説明ありがとうございます。
>なんかやる気が出てきました。
・・・おいおいw
え? おいらもその説明に納得が行ったんだが、君は違うのかい?
(訳:吹いた)
834 :
Name_Not_Found :2009/11/24(火) 16:07:35 ID:r4ZX7Ioz
JavaScript買ったお^^
835 :
Name_Not_Found :2009/11/24(火) 16:55:16 ID:vWQq4MUX
<div>header</div> <div>あれこれ「はげ」です。 それこれ「ほげ」ではありません。</div> <div>footer</div> このdiv内(実際はもう少し長い)の「」で囲った部分を強調するように変換するには、 innerHTMLを使っていいなら、 document.getElementsByTagName('div')[1].innerHTML = document.getElementsByTagName('div')[1].innerHTML.replace(/「(.*?)」/g, '「<strong>$1<\/strong>」'); の一行で済むと思うんですが、 同じことをDOMを意識して(document.createElement('strong')などを使って)やるには、どうやったらいいんでしょうか? 一切innerHTMLを使わずにやれるんでしょうか?
太字にするだけなら、id.style.fontWeightでいんじゃないん? ツリーを再構築する必要もないし
>>835 結果の状態をDOM inspectorみたいなのでツリー表示してみりゃわかると思う
手順的には、「ほげ」の前後でtextNodeを分割して
strongエレメントと「ほげ」をreplaceしてからappendする
838 :
Name_Not_Found :2009/11/24(火) 18:26:26 ID:3CHH7Npu
>>835 replaceの第二引数に関数を渡してゴニョゴニョする。
は?
840 :
Name_Not_Found :2009/11/24(火) 20:52:30 ID:3CHH7Npu
>>839 あ、自分が以前やったとき、replaceに落ち着いたってだけで。
もっといいやり方があったら、ぜひぜひ!
さいきんのにほんごはむつかしいねえ
843 :
Name_Not_Found :2009/11/24(火) 21:53:08 ID:q6LvWNk8
>>839 とか>842みたいな日本語だけのレスよりはJavaScript使ってレスしてる方がまだマシだけどな
おかしなこと言ってればつっこめばいいだけだし
844 :
Name_Not_Found :2009/11/24(火) 22:27:05 ID:3CHH7Npu
書いたの見つけてきました。 おかしいところとかあると思うんで、添削してもらえるとありがたい。 var target = 変換する対象となる要素。 var pattern = /(.*?)(「[^」]+」)/g; (function(target){ var c = target.childNodes , i = c.length - 1 , F = arguments.callee; for(; i>=0 ; i--)(function(node){ if(node.nodeType == 1) F(node); else if(node.nodeType == 3){ var baff = node.nodeValue.replace(pattern,function($0,$1,$2){ var element = document.createElement("strong"); node.parentNode.insertBefore(document.createTextNode($1),node); element.appendChild(document.createTextNode($2)); node.parentNode.insertBefore(element,node); return ""; }); if(baff == "") node.parentNode.removeChild(node); else node.nodeValue = baff; } })(c[i]); })(target);
>.844 いつもそんな書き方してるの? 正直読みにくい
846 :
Name_Not_Found :2009/11/24(火) 23:15:19 ID:zVVLsdRG
そこかい!
強調するくらいでツリーごと変更するべきじゃないだろう…
>>848 cで\0だったかな?例えてnullじゃなかった?
なんか懐かしいような
10年前に廃業したから違ったらすまん
(function(target) { var doc = target.ownerDocument; target.normalize(); var textNodes = doc.evaluate('descendant::text()', target, null, 6, null); for (let i = 0, len = textNodes.snapshotLength; i < len; i++) { let textNode = textNodes.snapshotItem(i); let [$0, $1, $2]; let $3 = textNode.nodeValue; let parent = textNode.parentNode; let arr; while (arr = /([^]*?)「([^」]+)」([^]*)/g.exec($3)) { [$0, $1, $2, $3] = arr; $1 && parent.insertBefore(doc.createTextNode($1), textNode); parent.insertBefore(doc.createElement('strong'), textNode) .appendChild(doc.createTextNode($2)); } $3 && parent.replaceChild(doc.createTextNode($3), textNode); } })(target);
悪化してんな
ごめん 7 行目おかしかった let $0, $1, $2, $3 = textNode.nodeValue; これで動いたよ! きれい!
アンデフィンドとナルの違いをわかりやすく詳しく教えてください。
「ナル」は分かる。ナルはナルシストの意。 「アンデフィンド」はググっても見つからなかったから、多分固有名詞。 アンデフィンドさんのことをナルシストとか言ってただけじゃないかな。
undefinedは値がないという値(消極的・暗黙的) nullは空っぽという値(積極的・明示的) ただ実用面でnullは滅多に使わない
nullは初期化やmatch等の返り値を統一させるために使うくらいだな。
まじで!? undefined に比べたら null の方がよほど使ってるけど。
return "" クソワロス
undefinedは滅多に使わないな。 使わないと言うか、大抵は宣言するから使わなくて済むことが多いな。 objを確認したい時にnullなら if (! obj) {} ってやるけど、undefinedは if (typeof obj === 'undefined') {} ってやってる
>>856 すまん語弊があった
返値などで空であることを伝える必要があるなら俺もnullを使う
まさに明示する状況だし
だけどvoid(引数無しreturn)で返値がundefinedになることのほうが断然多いんだよな
変数やプロパティの初期値もundefinedだし
undefinedに比べて滅多にnullが使われないということが言いたかった
>>859 区別したいなら、nullチェックのほうにtypeofを使うべきじゃないか?
861 :
Name_Not_Found :2009/11/25(水) 14:00:04 ID:txBM9G+t
だ、だれか
>>850 を解説してくれる御仁はござらぬか…
手元でコピペして7行目直して、targetに適当なエレメントノード渡したけど動かず。
missing ; after for-loop initializer
[Break on this error] for (let i = 0, len = textNodes.snapshotLength; i < len; i++) {¥n
ってなるけど、; は足りてるような気が…letのせい?
あと、ざくっと調べたんですが、IE6では動かない、ですかね?
>>860 undefinedは'undefined'だからtypeofで確認してる
>>861 javascript1.7だからIEはダメ
よく読んでないから保証しないけどvarに置き換えても動くはず
>>862 nullだってnull型じゃ・・・げ、"object"かよ
というかobj === nullでいいのか
864 :
844 :2009/11/25(水) 14:20:31 ID:jZeLnWCW
>>844 です。
確かにbaffのところはおかしいです。
何か他の処理が挟まってたのか、または気が狂ってたかの、
どちらかかと思います…
>>861 >>851 が言っている「悪化」の意味は
・document.evaluate がIEにはない
> var textNodes = doc.evaluate('descendant::text()', target, null, 6, null);
・let がIEにはない
let は javascript 1.7 から。
わざわざ遅くなる let を使う意味はない。
・安全ではない参照
質問者がテストするときに $3 が変化する可能性が高い。
簡潔に書こうとする場所が間違ってるよ。
insertBefore のところを外部に出して汎用化した方が
読みやすくて良いじゃない。
function attachElement(name, node) {} と言うのを作って
ループ内は
attachElement('strong', textNode);
だけで終わった方が良いよ、後から直しやすい。
867 :
Name_Not_Found :2009/11/25(水) 14:44:38 ID:txBM9G+t
>>865 なるほど。
普段ちゃんと動くJSしか作ってないので、1.7とか疎くて。
古いIEが駆逐されるまでに勉強しようと思いました。
>確かにbaffのところはおかしいです。 スペルからしておかしいことは気づいているのか?w
869 :
844 :2009/11/25(水) 18:07:00 ID:jZeLnWCW
べ、べつにbufferって書きたかったんじゃないんだから…///
>>865 IE はどうでもいいが let が遅くなるのと安全ではないのをもうちょっと詳しく
var undefined; if( hoge === undefined ) でいいじゃん グローバル変数一個使うけど
(・・;)エ? undefined はグローバル変換として定義済み。 わざわざ宣言して使うのは、ローカル変数にする場合。
× グローバル変換 ○ グローバル変数
>>872 window.undefinedは書き換え可能なために不確実
typeofや宣言だけのローカル変数は確実
書き換えられる心配をする必要があるのかは俺にはわからんがね
if( typeof(example) == "undefined" )
undefined のチェックはこうやるもの。 if (hoge === void 0)
877 :
844 :2009/11/26(木) 02:53:28 ID:shG1f8EJ
なんか自分のせいで
>>835 が置いてきぼりになったみたいで申し訳ない。
どうしてそう思ったのか知らないけどもう出てこなくていいよ
dataスキームについて質問です。 <a href="dataスキームのurl">TEST</a> という風にリンクタグを生成して TESTの上を右クリック保存するときに ファイルの名前を決めてやりたいのですが どうすればよいのでしょうか よろしくおねがいします
880 :
879 :2009/11/26(木) 06:48:05 ID:???
自己解決しました 自分の場合、特に拡張子の部分を独自のものにしたかったのですが、 textファイルなのでdata:text/plain,にして.txtで保存することにしました
toSourceの逆な感じで、phpでいうjson_decodeみたいなものは無いでしょうか よろしくお願いします
882 :
Name_Not_Found :2009/11/26(木) 17:17:01 ID:yeQPEU7j
var i = 0; var abc = 'Page ' + (++i); この式の()についてですが、これはInt型をString型に変換するという認識でいいのでしょうか?
インクリメント
884 :
Name_Not_Found :2009/11/26(木) 17:39:52 ID:yeQPEU7j
インクリメントがないのもあります var index = 123; var def = 'ex' + (index) + 'sample); どういうことでしょうか?
885 :
Name_Not_Found :2009/11/26(木) 17:43:37 ID:yeQPEU7j
>>884 訂正
sampleの後の ) は ' です。
元の処理の記述も書いておきます。
function addTab(){
tabs.add({
title: 'New Tab ' + (++index),
iconCls: 'tabs',
html: 'Tab Body ' + (index) + '<br/><br/>',
closable:true
}).show();
}
>>882-884 どっちも () なんか無くても動く。単に読みやすさのために
かっこで囲んで見せただけでは。
887 :
Name_Not_Found :2009/11/26(木) 17:47:11 ID:yeQPEU7j
>>886 なるほど、特にプログラム的な意味はないのですね
値や処理動作が変わったりするのかと思い気になってました
ありがとうございます!
DOMで、あるノードの親ノードが インライン要素かブロック要素か判定する方法はありますか?
node.style.display を見る。
890 :
Name_Not_Found :2009/11/27(金) 18:19:32 ID:tCq/P/Bh
>>889 それだと、明示的にstyleプロパティが設定されてないとわからなくない?
(node.currentStyle || document.defaultView.getComputedStyle(node,'')).display
じゃないか?
window.getComputedStyleで良くね? document.defaultView・・・ってやたら良く見かけるけど、なんでわざわざ長く書くん?
str.testfunc() にして使うのと testfunc(str) みたい使うのとあるのですが これってそれぞれ何か呼び名みたいなのが あったと思うのですが忘れてしまいました 教えてくださいよろしくお願いします。
895 :
Name_Not_Found :2009/11/27(金) 21:09:10 ID:tCq/P/Bh
>>891 safariのため。safariのwindowにはgetComputedStyleがなくて、
document.defaultViewにある。
で、firefoxとoperaだと(chromeも?)document.defaultViewがwindowなので、
ちょっと長いけどこう書くと、このへんのブラウザがカバーできる。
safari4.0.3、chromium4.0.222.3、opera10.10で試してみたけど、 getComputedStyle(〜).displayで取得できたよ 古いsafari?
Safari2以前 Safari3以降はwindow.getComputedStyleでおk
セキュリティアップデートが切れたブラウザをサポートしても……
>>894 あ、そうかもしれません
たぶんそれです
ありがとうございました!
replaceで正規表現使うときに patternを文字列にできないのが不便なのですが・・ 例えばstr.replace(/aiueo/,''); みたいにaiueoのところをpattern='aiueo';みたいにしたいんですけど /'aiueo'/ってなるとマッチしないんです・・ patternがかぶるものが複数でてきたときにpattern=aiueo;ってやるとエラーでちゃうし 何か上手い方法ないでしょうか
new RegExp?
とほほの管理人○なねーかなあ
>>901-902 str.replace(re,'');
でできました!ありがとうございました
905 :
Name_Not_Found :2009/11/28(土) 05:41:05 ID:FxKf+clX
>>896 ,897
自分もsafari2以降、windowでも使えるようになったときかどうかなんて
調べてすらいませんでした。
勉強になりました。
safariいいブラウザだと思うんだけど、デバッガの使い勝手が
firebugの方がいいんで、どうしても後回しになるというか…
対応するのは1世代前で良いと思うわ。 IE7以上 Firefox3以上 Safari3以上 Operaは10以上
1世代前と言うか、サポート切れのブラウザには対応すべきじゃないと思う
IE以外のブラウザを使っている人は大概、最新にしているから、IEだけIE6以上に対応させれば いいよね?
JavaScript ば IE6 対応でいいげんども、CSS についでば早う切り捨てたいのう
IE6対応は別料金DEATH!
医療費に関しては日本がかなり特殊なんで、日本基準で考えてるとおかしな事に なるぞ
誤爆orz
IE8は高度先進医療扱いになってボられるんですね、わかります
IE8はスパコン扱いになって後継開発が廃止になるんですね、わかります
>>906 Opera だけ何でそんなに厳しいんだ?
IE以外のユーザはリテラシ高いことが多いから最新版を要求しても問題ない。 IEはオフィスやネカフェみたいな自由が制限された環境で使われることも多いので、できれば6位まではサポートしたい。
1位〜5位を教えてください
>>915 Opera9はXMLHTTPReqestが酷くなかったっけ
8 は酷いが 9 はそこまでじゃない。が、 9.5 以下は対応したくないな。
Opera なんてユーザーが壊滅的に少ないんだからみんな最新版使ってるだろ ウンコ Opera の糞バージョン使ってる変態なんてスルーすべき
すべきかどうかは個人が判断することだよ 指針にするようなもんじゃない
セキュリティに問題がある古いバージョンに対してはスルーすべきと言うか、警告を出すべきじゃないかと
924 :
Name_Not_Found :2009/11/29(日) 05:12:52 ID:pmzIHy4G
初心者です。。。 ボタンをクリックで1から10までの和を計算して、 結果をアラートで表示するjavascriptを書かなきゃなんですが誰か教えてください><
alert(55);
女子高生です。。。 ボタンをクリックで1から10までの和を計算して、 結果をアラートで表示するjavascriptを書かなきゃなんですが誰か教えてください><
由香里 35歳 人妻です。。。 ボタンをクリックで1から10までの和を計算して、 結果をアラートで表示するjavascriptを書かなきゃなんですが誰か教えてください><
alert("女の子? かわいいね〜 乳首ダブルクリックしちゃうぞ^^");
var num = 10; alert( num * (num + 1) / 2 );
var AP = function(a, n, d) { return a + (n - 1) * d }; alert(AP(1, 10, 1));
>>931 var AP = function(a, n, d) {
return a + (n - 1) * d;
};
alert(AP(46, 10, 1));
こうですね、分かります。
てれてれ
935 :
Name_Not_Found :2009/11/29(日) 11:45:18 ID:q64M16CP
おまらちゃんと
>>924 の質問を理解してるか?
ボタンをクリックしてってところからもう抜けてるだろ。
正解はこれ↓動作確認済み。
<input type="button" value="クリックしてね" onclick="alert('結果は「' + prompt('1から10までの和を計算して、結果を入力しなさい。', '') + '」です。');" />
936 :
Name_Not_Found :2009/11/29(日) 12:03:32 ID:nrMIsFRX
もう大喜利になってきてるじゃねーか
10個入力フォームがあって、ボタンをクリックするとそのフォーム内の和をアラートさせるんじゃねーの
<script>s=0</script> 左からクリックしてね☆ <input type="button" value="1" onclick="alert(s+=this.value)"> <input type="button" value="2" onclick="alert(s+=this.value)"> <input type="button" value="3" onclick="alert(s+=this.value)"> 続きはまかせる
誰かやると思ったw
これでどう? <input type="text" id="num" value="10"> <input type="button" value="計算" onclick="var num=eval(document.getElementById('num').value);alert(num*(num+1)/2)">
Operaってelem.href='
http:// 〜〜/'
みたいなことできないっぽいですか?
>>941 eval使うほどじゃないだろ
Numberのほうがよい
944 :
942 :2009/11/29(日) 14:41:49 ID:???
と思ったらできました すいませんでした
945 :
924です。 :2009/11/29(日) 15:25:32 ID:pmzIHy4G
答えてくださった方々ほんとありがとうございます。 計算はたぶんできたんですけど どこにボタンのフォームを書いていいのかわかりません;; <HTML> <HEAD> <TITLE>計算</TITLE> </HEAD> <BODY> <SCRIPT language="JavaScript"> sum = 0; for( i = 1 ; i <= 10 ; i++){ sum += i; } document.write("1〜10の和: ",sum); </SCRIPT> </BODY> </HTML>
好きなとこに書けばいいと思うよ
>>945 ボタンから呼び出すなら、その処理を関数にせんといかんよ
>>945 いまひとつ?
<HTML>
<HEAD>
<TITLE>計算</TITLE>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
sum = 0;
for( i = 1 ; i <= 10 ; i++){
sum += i;
}
</SCRIPT>
<input type="button" value="計算" onclick="document.write('1〜10の和: ',sum)">
</BODY>
</HTML>
scriptのlanguage属性は廃止予定じゃなかったっけ? 使えるけど。
あと、
>>924 の課題はalertでの表示と書いてないかい?
おまえらそろそろ真面目に宿題解いてやれよ
document.write() とか
べっ別に
>>950 に釣られたんじゃないんだからねっ///
<script type="text/javascript">
function sum55(){
var sum = 0;
for(var i = 1; i <= 10; i++){
sum += i;
}
alert(sum);
}
</script>
<button type="button" onclick="sum55()">calc</button>
個人的な好みだが、onclickは書きたくなかった。
んことを気にするぐらいならbuttonごとJSで構築するだろ
>>953 >>924 氏が課題でcreateElementとか書いてたら、先生は間違いなく疑うだろがww
textとかimageファイルだと、<a href="○○.jpg">ダウンロード</a> ってしたときに、ブラウザ側で表示してしまうことが多いと思うのですが、 どうにかして、javascriptで保存画面(右クリックファイルを保存するで出てくる画面) を強制的に出すことはできないでしょうか? よろしくお願いします。
できますん
日本語でおk
>>955 header('Content-Length: '.file_exists("teeeeeeeeeeeest.txt"));
header('Content-Disposition: attachment; filename="wwwwww.txt"');
header('Content-Type: text/plain);
readfile("teeeeeeeeeeeest.txt")
createXMLHttpRequest1(); hyouji(); setTimeout('document.body.innerHTML = ""',5000); hyouji();の後5秒して白紙ページにしてまたcreateXMLHttpRequest1();へと、、って感じで ループさせる事できますか? for(;;){ 使ってみたのですが表示すらされない勢いで繰り返してしまうのですが reload以外で何か方法無いでしょうか?
5秒後にreloadする場合は<meta httpe-equiv=...>を使うんじゃないの。 JavaScript関係ないけど。
>>961 いえreloadはしないでページを空にして、また
createXMLHttpRequest1();
↓
hyouji();
↓
ページを空白
と繰り返したいのです。
for(;;){ でやるとテキストが表示されないではなく、ページを空にできないの間違いでした。
これだとブラウザがいつか固まってしまいそうなんで・・・
空にした後にcreateXMLHttpRequest1へ戻るにはどうしたら良いでしょうか。
963 :
924です。 :2009/11/29(日) 23:01:17 ID:pmzIHy4G
教えてくださったみなさんありがとうございました☆ まだまだ道のり長いけどがんばりますー!!
スレが過疎って皆が暇してるときにまた来れば良いよ。
出遅れたけどマルチスレッドで == w.htm == /*<!--*/ onmessage = function(event) { var n = event.data; if (n <= 1) { postMessage(n); return; } var w = new Worker('w.htm'); w.onmessage = function(event) { postMessage(n + event.data); }; w.postMessage(n - 1); }; /*--><button onclick="w=Worker('w.htm');w.onmessage=function(event)alert(event.data);w.postMessage(100);">push</button>*/ == /w.htm == Worker の相対パスに "." (ドット) が使えないのはなんで?
げげ、出かけていたらもう965ですか。今回テンプレ変更なし? もし参考サイト追加希望あるなら、具体的なURLも含めて提案 してね。それで異論なければすんなり入れてもいいかも。 次スレは975超えたら。
967 :
Name_Not_Found :2009/11/30(月) 11:16:45 ID:AjmlJgni
>>965 > Worker の相対パス
ってなんぞ?Workerに渡している引数のこと?
使えなくないよ?
>>967 そうそう、Worker の引数に指定する URL に
相対パスとして自分自身を表すドットが使えないって言いたかった
Firefox だと エラー: Failed to load script: . (nsresult = 0x805303f4)
って怒られるよ。
969 :
Name_Not_Found :2009/11/30(月) 16:16:48 ID:AjmlJgni
>>968 Worker()が何かわからないけど、手元のFx3.0系で、簡単なAjaxで試した。
XHR.Open()の引数に"."もしくは"./"を渡したら、そのディレクトリの
デフォルトファイル(index.html)が返ってきたよ。
ローカルで(htmlファイルをブラウザにドロップして)やってないか?
>>968 とは違う症状だけど、AS・JS連携のページでエラー出たことがあったなぁ。
アクセス権の問題と判って、それ以来開発はlocalhostでやるようにしてる。
ファイルのパーミッションによってJavascriptで処理を振り分けることって出来ますか?
972 :
Name_Not_Found :2009/11/30(月) 18:16:48 ID:AjmlJgni
>>971 レスポンスが403なら振り分け、なら。
thickboxに関して質問です。 thickboxを閉じた際にある処理を行いたいのですが、 ある事情でthickbox.jsは触れないのですが、 別のjsでthickboxが閉じられたことを判定することは可能でしょうか? 当然、jQueryの使用もありです。
>>973 thickboxの終了命令がtb_removeだから、同名で宣言して上書きしてみたらどうかな?
fadeOutにコールバックを付けるなり、直接関数をコールするなり、何かグローバルのフラグを立てるなり。
>>969-970 すまん、相対 URL のこと勘違いしてただけだったわ
ドットは自分自身じゃなくて基準 URL を表すんだなw
まだ勘違いしているな
アコーディオンメニューを採用したページを作りたくて悩んでいます。 その際、アコーディオンメニューを左に縦カラムとして配置し、右側に内容がそれぞれ 違う別ページを作成し、メニューからそれぞれのページへリンクさせたいと考えています。 この時、"category1"をクリックし、ddのメニューが開閉されると同時に 別ページ(ソース例ではcontents_a.html)へリンクする事は可能なのでしょうか。 左側のアコーディオンメニューが入ったdiv"left_box"は、 dreamweaverのテンプレート機能を使い全ページ共通にしていますがメニューの開閉が動作しません。 動作の条件として、 ・jqueryを使用したい。(jqueryの他のプラグインを使用しているので、誤作動を避けるため) ・dtをクリックすることでddの内容の開閉が自由にできる。この時、クリックしていない別のdt下のddは自動的にたたまれる。 よろしくお願いします。
978 :
977 :2009/12/01(火) 10:55:43 ID:???
■下記htmlソース例■ <div id="left_box"> <dt><a href="contents_a.html">category1</a></dt> <dd> <ul> <li><a href="contents_a01.html">menu 1-1</a></li> <li><a href="contents_a02.html">menu 1-2</a></li> <li><a href="contents_a03.html">menu 1-3</a></li> </ul> </dd> <dt><a href="contents_b.html">category2</a></dt> <dd> <ul> <li><a href="contents_b01.html">menu 2-1</a></li> <li><a href="contents_b02.html">menu 2-2</a></li> <li><a href="contents_b03.html">menu 2-3</a></li> </ul> </dd> </div> <div id="right_box"> コンテンツ内容 </div>
979 :
977 :2009/12/01(火) 10:57:46 ID:???
■css例■ #left_box{ width:200px; float:left; } #right_box{ width:500px; float:left; } ■javascript例(jqueryを使用しています)■ $(function(){ var dd = $('dd','#left_box'); dd.hide(); $('dt','#left_box').click(function(){ var next = $(this).next(); dd.not(next).slideUp(); if(next.is(':visible')){ next.slideUp(); }else{ next.slideDown(); } }); });
981 :
Name_Not_Found :2009/12/01(火) 13:12:41 ID:kNgtWQkI
function hello() { hello = "こんにちは"; return hello; } 定義関数の名前(hello)と、その定義関数内に作った変数の名前(hello)が被ったらまずいでしょうか?
>>981 varをつけないと「内に作った」ではなくグローバル変数になるから
まずいと思うな。
>>981 ローカルにせよグローバルにせよ結局問題が付きまとう。
スコープチェーンとか調べてみるといいかも。
質問です pngのアルファを変更してフェードイン・アウトの処理を行っているのですが IE7の場合、アルファを変更したとたん半透明の抜きがgifのように単色抜きに変わってしまうのですが 勝手にアルファチャンネルが変更されてしまうのを回避する上手い方法はないものでしょうか? テスト用に書いたソースを貼ります <img id="testimg" src="hoge.png"> <script type="text/javascript"> function alphaTest( alpha){ obj = document.getElementById( "testimg"); obj.style.filter = "alpha(opacity="+ alpha +")"; } </script> <button onclick="alphaTest( 100);">画像不透明</button> <button onclick="alphaTest( 50);">画像半透明</button> <button onclick="alphaTest( 0);">画像透明</button> よろしくお願いします。
>>984 IEのpngがおかしいのは仕様じゃなかったかな?
AlphaImageLoaderで出来るらしいけど、こっちでテストしてもなんかうまくいかなかった。
後は誰か任せた。
987 :
Name_Not_Found :2009/12/01(火) 17:52:04 ID:4YWjthRa
正規表現で半角英数時とハイフンを書くときに[a-zA-Z0-9-]で合ってますでしょうか? ググって出てきたサイトによってはハイフンを\でエスケープしているのも見ます[a-zA-Z0-9\-.] javascriptではどちらが正しいのでしょうか?
988 :
Name_Not_Found :2009/12/01(火) 17:58:33 ID:adkCyzKU
>>986 ああ、alphaImageLoaderのことは自分も知りたい。
alphaImageLoaderで貼った50%の透過pngを
filterでopacity=0にしてからopacity=100にすると、
透過度がなくなってしまう気がする。
>>987 実際にコード書いて試せ…それが一番早い
-は[]内だとメタ文字
Firefox3.5ではどっちも動いてしまいます IE8だと\-と書かないと動きませんでした
[]の中では、-は先頭に書けばエスケープ不要。 …だったっけ? それとも末尾?
先頭だろが
じゃあ[-0-9A-Za-z]で決まりか。
うめ
おやすみ
おやすみ
999
このスレは1000の風になりました
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。