+ JavaScript の質問用スレッド vol.89 +
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4 のテンプレを読んだ上で質問してください。
■質問を書く上で
(1) 質問にならない投稿はご遠慮ください。(煽り、コード制作依頼など)
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) メール欄は空欄を推奨。2回目の投稿時は前回のレス番を名前にすることを強く推奨します。
長い間連続して質問する場合にレス番を名前にしてあれば、質問の流れが回答者に伝わりやすくなります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は
http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。質問テンプレートを活用してみてください。
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
■主要FAQ (全部は
http://fiddle.jshell.net/vSqKr/26/show/ )
Q1. 別窓・フレーム内容やローカルファイルを読み書きしたいのですが…
A1. 別サーバのページやファイルの内容はセキュリティ制約でアクセス不可です。
Q2. document.write()でページ内容を追加したいのですが…
A2. 一度表示完了後にwriteするとページ内容が消去されます。DOM等別手段を。
Q3. table内容のinnerHTMLやDOMでの変更がうまく行かないのですが…
A3. IEではtable/tbody/trのinnerHTML書き換え不可です。DOMを使いますが、
DOMの場合tableの直下にはtbody要素が(作らなくても)あることに注意。
Q4. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A4. 「document.forms.myform.elements[変数名].value」でどぞ。
JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
グローバル変数はwindowのプロパティなので「x」と「window['x']」も。
Q5. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A5. 取得には document.defaultView.getComputedStyle() を使う必要あり。
IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q6. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A6. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
Q7. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
「"...this..."」とか「function(){...this...}」ではうまく行きません。
A7. 実行時にthisが別のものを指してしまってる。以下のようにthisを束縛保存。
「function(x){return function(){...x...};}(this)」
Q8. input type="file"の値を設定(参照)できないのですが…
A8. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q9. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A9. コード実行時点でHTMLがそこまで読まれてない。window.onload 中でやるとか。
このスレは極端な人間(鬱病患者)が多いです 煽り合いは無駄な時間を作るだけですのでやめましょう
匿名掲示板でなにを言ってるのかねキミは
別に煽らなきゃいいじゃん。煽りはスルーでいいじゃん。2ちゃんの常識。
お前ら気持ち悪いな
髪型ライオンだぞ俺様は かっこいいだろ? まあな、javascriptの世界でも崇められてるし 百獣の王だよ サイボウズ所属してたけどな
がおがお!!
javascriptを使ってスライダーの位置をずらすとその分 画像が回転するものを作りたいです。 宜しくお願いします。
OKです。お作り下さい。
答えだけが欲しいんです。 宜しくお願いします。
11です。 ボタンを押すと画像の角度が変わる部分と スライダーを動かすと数値が変わる部分は作れたのですが その数値を画像の角度が変わる値に代入できません。 宜しくお願いします。
その角度が変わる関数をどんな感じに作ってるのか教えてくれ そすりゃドコをどー変えればいいのかわかるぜよ
ああ、ごめん どんな感じに作ってるのかより そのソースをそのまま貼ってくれ
>>16 11です。
他サイトのスクリプトを組み合わせているのですが
ここに載せても大丈夫でしょうか。
他サイトの→他サイトで紹介されている
余裕
全く問題ないな
11です。関係ない処理も入ってると思いますが、宜しくお願いします。
var startAngle="10";の部分の数字を入れ替えると角度が変わります。
長いので数回にわけます
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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" />
</HEAD>
<SCRIPT language="JavaScript">
var iniX = 10; //バーの初期位置(x)
var iniY = 200; //バーの初期位置(y)
var dY = 10; //バーに対するスライダーの表示位置(y)
var dX1 = 11; //バーに対するスライダーの表示位置(x,最も左)
var dX2 = 202; //バーに対するスライダーの表示位置(x,最も右)
var valx = 230; //バーに対する数値を表示する位置(x)
var valy = 10; //バーに対する数値を表示する位置(y)
var minValue = 0; //最小値
var maxValue = 8; //最大値
var iniValue = 0; //初期値
var M_flag = false;
var mdx,mdlayx,mmx,mmlayx;
var xmax,xmin;
function Init(){ dx = dX2 - dX1; x = dx * ((iniValue - minValue) / (maxValue - minValue)); xmin = iniX + dX1; xmax = iniX + dX2; if(document.all){ document.all("iLf").onmousedown = Mdown; document.onmouseup = Mup; document.onmousemove = Mmove; document.all("iLf").style.posLeft = xmin + x; document.all("iLf").style.posTop = iniY + dY; document.all("iLb").style.posLeft = iniX; document.all("iLb").style.posTop = iniY; document.all("iLv").style.posLeft = iniX + valx; document.all("iLv").style.posTop = iniY + valy; document.all("iLv").innerHTML = iniValue; }else if(document.layers){ }else if(document.getElementById){ document.getElementById("iLf").onmousedown = Mdown; document.onmouseup = Mup; document.onmousemove = Mmove; document.getElementById("iLf").style.left = xmin + x; document.getElementById("iLf").style.top = iniY + dY; document.getElementById("iLb").style.left = iniX; document.getElementById("iLb").style.top = iniY; document.getElementById("iLv").style.left = iniX + valx; document.getElementById("iLv").style.top = iniY + valy; document.getElementById("iLv").innerHTML = iniValue; } }
function Mdown(e){ if(document.all){ mdx = event.x; mdlayx = document.all("iLf").style.posLeft; }else if(document.layers){ }else if(document.getElementById){ mdx = parseInt(e.pageX); mdlayx = parseInt(document.getElementById("iLf").style.left); } M_flag = true; return false; } function Mup(e){ M_flag = false; return false; } function Mmove(e){ if(document.all){ if(M_flag){ mmx = event.x; mmlayx = (mmx - mdx) + mdlayx; if(mmlayx < xmin) mmlayx = xmin; if(mmlayx > xmax) mmlayx = xmax; x = Math.floor((mmlayx - xmin) / dx * (maxValue - minValue) + minValue); document.all("iLf").style.posLeft = mmlayx; document.all("iLv").innerHTML = x;
<input type=text id="manko"> ってのでも作って document.getElementById("manko").value でそのテキストに入れた数値取得してその文字列をMathで数値化してやりゃいいんじゃね?
11です。すいません途中で連投規制がかかりました。
http://ideone.com/9cmp2 に投稿したので宜しくお願いします。
iLvに表示される数字を
113行目のvar startAngle = "10";
に持ってくればいいのだと思いますが上手く行きません。
>>26 htmlをideoneに投稿しても仕方ないだろう
jsfiddle jsbin でも使えばいい
あと、
>>1 の3
お前ら答えない屁理屈だけ達者すぎワロタw
答えるのに必要な作業をアドバイスしてるだけ
>>1 を読むのは基本だろ
くだらねーんことやってんだなカスども
>>29 答えるのに「必要な」作業は揃っているがw
ケチが付く質問は答える気を無くしてしまうなぁ
煽りはスルーで。2ちゃんの基本。答えるも答えないも回答者の自由。このスレの基本。
36 :
Name_Not_Found :2011/07/20(水) 21:21:16.62 ID:1wnjGCNM
【環境】Firefox 5.0 / Adblock Plus 1.3.9
【何をしたのか】Adblock Plus がインストールされている場合
【エラーメッセージ】(なし)
【期待する結果】
Firefox の エラーコンソール と Adblock Plus についてです
Adblock Plus をインストールすると
XMLHttpRequest.onload / onreadystatechange 内でエラーが発生しても
コンソール上にエラーが表示されなくなります
ローカルファイル上でこの現象は発生せず、
http:// で始まる URL で発生します
Adblock Plus をインストールしたまま、この現象を回避することは出来ませんでしょうか
【サンプルコード】
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "
http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd ">
<html xmlns="
http://www.w3.org/1999/xhtml ">
<head>
<title>サンプルコード</title>
</head>
<body>
<script type="application/ecmascript">
var req = new XMLHttpRequest();
req.open('GET', './example.txt', true);
req.onload = function(){
alert(undefinedVariable);
};
req.send(null);
</script>
</body>
</html>
37 :
Name_Not_Found :2011/07/20(水) 21:46:07.74 ID:bglLtJkN
try catchもできない?
>>35 推奨はしてもいいけどスレの足を引っ張るのはやめたほうがいいよね。
足を引っ張ってるのは煽りだからなあ 情報を促す事は普通にやるし
41 :
36 :2011/07/20(水) 23:16:10.57 ID:1wnjGCNM
>>37 有り難う御座います
try catch は使えましたので、そちらでしのぐことにします
42 :
Name_Not_Found :2011/07/20(水) 23:19:22.91 ID:Y3GEmHor
初めてajaxでカテゴリーごとのタグを取得する機能を作って、とりあえずイメージ通りに動いてるんですが こんな感じでいいんでしょうか? (jQueryを使っています) $(function() {$('input.categoryRB').change(function(){ var wt = $(this).attr('value'); var insert_html = ""; $.post( "/ajax_tags.php", {"category":c}, function(data, status){ $.each( data, function(key, value){ var forId = 'tag_'+wt+'_'+value.id; insert_html += '<label for="'+ forId +'" class="labelH"><input type="checkbox" name="tag" value="'+value.id+'" id="'+ forId +'" />'+value.tag+'</label>'; } ); $('#tagBox').html(insert_html); }, "json" ); }); }); 漠然とした質問ですみません。初心者の自分のわからないダメな点があるのか不安で。。 また、.post()メソッドは.ajax()メソッドと違い、サーバ側の処理が失敗した場合の処理を出来ないとありましたが、 どう使い分けたらいいんでしょうか? 描画に失敗しても困らないところ以外はajax()でやるべきってことですか? statusがsuccessでないときに「失敗しました」と出力することも出来るのではと思いますが、 それよりも大きなメリットがajax()にはあるんでしょうか? あと、最初上のコードで var insert_html; にしていたら実行したときに undefinedという文字が表示されました (最初の <label>の出力の前に) これはなぜでしょうか? var insert_htmlとvar insert_html = "";って両方ともカラの変数の宣言ではないのでしょうか
煽りってどっちの?
煽り全般だろ
「
>>1 も読めないの?」「屁理屈ばかりで答えられないの?」「足を引っ張ることしかできないの?」
これ全部煽り
指摘するだけなら煽りじゃないし、言い方の問題
今回
>>1 に誘導した人に煽りはいなかったと思う
ブックマークレットでとあるJavascriptのメソッドを除去したいのですが 可能でしょうか? 例えば <script type="text/javascript"> function hoge() { alert('hoge'); } </script> となっていたらhoge()を無効にしたいです。 よろしくです。
>>48 hoge = null;
hoge = new Function;
50 :
11 :2011/07/21(木) 12:11:40.83 ID:zhAEvKdw
11です。私の質問で荒れてしまって申し訳ありません。
>>39 ありがとうございます。
まだ上手く動きませんががんばってみます。
>>27 すいません、投稿サイトの使い方がよくわかりませんでした。
>>31 いえ、質問として不十分でした。
>>34 そうですね。とはいえ推奨されていることをしたほうがスムーズに
答えやすいと思うので今後気をつけます。
>>その他の方
ご意見ありがとうございました。
51 :
Name_Not_Found :2011/07/21(木) 16:39:41.72 ID:NBoNsXTB
【環境】モダンブラウザ 【何をしたのか】(なし) 【エラーメッセージ】(なし) 【期待する結果】パラグラフ(<p>)のフォントサイズをランダムに変更したい。ご教授いただければ幸いです。 【サンプルコード】 <html> <head> <SCRIPT language="JavaScript"> <!-- // ランダムにフォントサイズを変更する fontsize = new Array(); fontsize[0] = "13px"; fontsize[1] = "18px"; fontsize[2] = "24px"; fontsize[3] = "36px"; n = Math.floor(Math.random()*4); document.p.fontSize= fontsize[n] //--> </SCRIPT> </head><body> <p>1</p><p>2</p><p>3</p> </body></html>
>>51 簡単に。DOM読んでからじゃないと動かない
fontsize = new Array();
fontsize[0] = "13px";
fontsize[1] = "18px";
fontsize[2] = "24px";
fontsize[3] = "36px";
var p = document.getElementsByTagName("p");
for(var i=0,j=p.length;i<=j;i++){
n = Math.floor(Math.random()*fontsize.length);
p[i].style.fontSize= fontsize[n];
}
54 :
Name_Not_Found :2011/07/21(木) 18:05:20.15 ID:NBoNsXTB
>>53 早速のご指導ありがとうございます。
私の不勉強でまだ思う挙動となっておりませんが、
ご教授いただきましたDOMまわりを調べて勉強したいと思います。
また不明な点がありましたら質問させていただくかと思いますが、
どうぞよろしくお願いします。
55 :
51 :2011/07/21(木) 18:21:03.71 ID:NBoNsXTB
>>53 読み下してみたのですが以下のような解釈となりますでしょうか。
fontsize = new Array();
fontsize[0] = "13px";
fontsize[1] = "18px";
fontsize[2] = "24px";
fontsize[3] = "36px";
var p = document.getElementsByTagName("p"); //ドキュメント中のPタグ要素を取得してpに代入する
for(var i=0,j=p.length;i<=j;i++){ //p要素の数(=j)までiを加算する
n = Math.floor(Math.random()*fontsize.length); //fontsizeの数までの乱数を発生させnに代入する
p[i].style.fontSize= fontsize[n];//p要素すべてに乱数で選ばれたfontsizeを指定する
}
解釈概ねOKです。まあ元コードをいじったけだし。 fontsize = new Array(); fontsize[0] = "13px"; fontsize[1] = "18px"; fontsize[2] = "24px"; fontsize[3] = "36px"; var p = document.getElementsByTagName("p"); for(var i=0,j=p.length;i<j;i++){ n = Math.floor(Math.random()*fontsize.length); p[i].style.fontSize= fontsize[n]; } 自分もガッツリやってるわけじゃないので他の人のツッコミ待ちだけど スクリプトが<p>の記述後じゃないとp要素が取得出来ないのでスクリプトを後ろに持ってくといいです。 あと7行目は ? i<=j ○ i<j でした。
57 :
42 :2011/07/21(木) 18:56:06.01 ID:???
>>44 ,46
ありがとうございました、ドキュメント読み込んでみます
58 :
Name_Not_Found :2011/07/21(木) 19:44:41.36 ID:rNr22M2N
もっとふさわしいスレがあれば誘導お願いします。 IP、ブラウザ、OS、画面解像度などを取得してログに書き出す JavaScriptのサンプルが乗っているページを探しております。 ご存知の方はどうかお願いします。
60 :
51 :2011/07/21(木) 20:51:40.11 ID:NBoNsXTB
>>56 ありがとうございました!
ご指摘いただいた点と、調べたものを足したところうまく動くようになりました。以下にうまく動いたものを張っておきます。ありがとうございました。
<html>
<head>
</head>
<body>
<p>1</p>
<p>2</p>
<p>3</p>
<SCRIPT language="JavaScript">
<!--
// ランダムにパラグラフのフォントサイズを変更する
fontsize = ["13px","18px","24px","36px"]
var p = document.getElementsByTagName('p');
for(var i=0; i<p.length; i++){
n = Math.floor(Math.random()*fontsize.length);
p[i].style.fontSize= fontsize[n];
}
-->
</SCRIPT>
</body>
</html>
61 :
Name_Not_Found :2011/07/21(木) 21:36:16.67 ID:T54sLeF+
>>59 GoogleAnalyticsとかどうじゃろ
>>61 GoogleAnalyticsはもう導入しております。
ですがGoogleAnalyticsだと、プロバイダとかホスト名までは表示出来ますが、
IPでユーザー固有の部分まではわからないのです。
たとえば
K123456.sonet.ne.jp
がアクセスした場合に、sonet.ne.jpはわかりますが、ユーザー固有のK123456は
表示されないのでわからず、個人レベルで確認ができません。
もう一つ、プロクシを使ってアクセスされた場合に、GoogleAnalyticsは
プロクシのIPを記録するだけで、ユーザーのIPはわからんのです。
プロクシを使われれば別人に見えてしまうので。
>>62 JSはIPを保持していなかったと思うが・・・
64 :
62 :2011/07/21(木) 22:13:05.15 ID:???
GoogleAnalyticsはJavaScript無効のときでもアクセスを記録してくれるので、 それとJavaScriptを併用して、プロクシでアクセスしてる人を把握したい。 もっとも、JavaScriptを無効にしてアクセスされたらどうしようもないんですけど、 それはもう仕方ないんで・・・
65 :
Name_Not_Found :2011/07/21(木) 22:19:49.04 ID:T54sLeF+
>>62 あ、GoogleAnalyticsのJSのコードを参考にしたらどうかな、って意味で
>>65 すいません。もう少し詳しい情報をいただけましたら嬉しいです。
67 :
Name_Not_Found :2011/07/21(木) 22:32:54.99 ID:T54sLeF+
>>66 リモホはAPIを用意して、直接取得すればいい
必要な情報はそこに向けてJSと<img>要素で投げればいい
>>67 大変申し訳ありませんが、APIとは自分のスキルにはレベルが高過ぎるようです
参考に出来るサイトをお教えいただければ幸いです
それと、GoogleAnalyticsのJSは見れるんですか?
69 :
Name_Not_Found :2011/07/21(木) 23:27:11.85 ID:198gSbFP
jQueryのカルーセルパネルと、
ファンシーフォーム<
http://lipidity.com/fancy-form/ >という
フォームのラジオボタン等を画像にするjsの2つを
同じページで動作させようとしています。
カルーセルパネルだけなら動作するのですが
ファンシーフォームのjsを読み込むようにするとカルーセルが動作しなくなります。
どういう原因が考えられるでしょうか?
70 :
Name_Not_Found :2011/07/21(木) 23:34:56.23 ID:hMf3yaLl
>>68 じゃあ、どうやって値を受け取るのよ
あと、JS貼ってんだから、見られるだろうよ?
IPアドレスはページにアクセスされたときサーバー側で取得すりゃあええんじゃないの
>>69 ファンシーフォームてのはMooToolsベースだから、たぶん$衝突。
jQuery - MooToolsの順にjsファイルを読み込む。(カルーセルが動かなくなる順序)
jQuery(function ($) {
$(selector)... // カルーセルパネル
});
jQueryの方を少し書き換えれば動くようになると思うけど。
インラインフレームでテキストファイルを表示させてるけど そのテキストファイルが存在しない(または空の)ときはインラインフレームを表示させないって方法はあるのかな? Ajax.updaterで表示させるとファイルが空なら無駄なスペースあんまりとらないけど ファイルの行数が長いとだらだら縦長に表示してしまう インラインフレームだと長い内容でも領域内でスクロールさせればすっきりするけど ファイルが空で何も表示する内容が無い場合でも無駄な表示領域が残って不自然な空間が出来てしまう・・・
それはキミCSSの領域だ heightとoverflowあたりを調べなさい
75 :
69 :2011/07/22(金) 06:11:32.27 ID:???
http://www.gmarwaha.com/blog/2007/08/23/lavalamp-for-jquery-lovers/ 上記サイトを参考にlavalampmenuを作成し自身のパソコン2機種(Mac・ブラウザーFirefox、sa
fari、opera、googlechrome現行最新Ver.)で問題なく動作を確認したのですが、Mac版IE5.2、
win版IE6、IE8(別PC2機種で試用、java.script有効)ではカーソルに合わせて移動するシャドウ部
分が全く表示されませんでした。
同Win機で上記サイトを閲覧したところ、lavalampmenuは意図通りに動作したため、私が作成した
ソースに問題ありなのは間違いないようですが、問題解決に向けて何処をチェックすればよいでしょ
う?「reset.css」を読み込んでいるのが問題でしょうか。Mac版IE5.2はともかくwinIEには何とか
対応して欲しいと考えております。宜しくお願いします。
77 :
Name_Not_Found :2011/07/22(金) 09:36:21.74 ID:T8hR4YOl
>>76 まず、関係ないものを全部削って動かしてみ。
それでも動かないなら、設置に問題がある。
動くなら、今度は少しずつ削ってみ。
そのreset.cssとか。
そうやって問題のある箇所を追い込んでいくといいよ
>>77 ありがとうございます。この週末に調べてみたいと思います。
79 :
58 :2011/07/22(金) 21:22:27.27 ID:???
>>63 >>70 >>71 調べて、言われた事の意味がやっとわかりました.
JSではIPアドレスは取得できず、サーバー側で取得するものだと言うことなんですね。
重ねてお尋ねしますが、
漏れ串を通してIP確認サイトの診断くんにアクセスすると、
REMOTE_HOST と REMOTE_ADDR には串のIPアドレスが表示されますが、
HTTP_X_FORWARDED_FOR にはクライアント(自分)のIPが表示されます。
こういう感じに、串のIPと自分のIP両方取得したいんですが、参考になるJSソースはありませんか?
80 :
Name_Not_Found :2011/07/22(金) 21:48:46.16 ID:ikINcXTk
>>79 たぶんJSから離れて考えたほうがいいと思う
サーバサイドスクリプトは難しいって思い込んでるみたいだけど
PHPとかだったら比較的簡単なんで
サーバでは取りづらい、画面の大きさとか
そういうのだけJSで取るって方向性でやったほうがいいよ
簡単な開発だったら、Windows用のApache2とPHP入れたり
VMWareFusionにLinux入れるって手もあるし
マカーだったら、普通にApache2とPHP5.2が動いてる
リモホと串とか考慮するならリモートのサーバが必要だけど
さくらのレンサバの一番安いやつとかでも十分だし
診断君だかで漏れてるって言われるような串は単純に環境変数を拾っているだけなので perlでもphpでも数行で拾える
82 :
Name_Not_Found :2011/07/23(土) 00:22:33.65 ID:KE7Lzkz2
$(function() { $('input').change(function(){ //処理1 }); }); jqueryで以上のような処理があるんですが、処理1をchangeだけでなく ページの読み込み完了のタイミングでも1回実行したいと思っています どうしたら良いでしょうか? $(document).ready(function(){ // 処理1 }); と言う風にもう一個同じことを記述するとか、処理1を独立させてchange,readyそれぞれから 呼び出すという原始的なやり方しか思いつきません 上に書いた処理に何か書き足してスマートに実行する方法があるんでしょうか よろしくお願いします
>>82 $('input').change(function(){
//処理1
}).change();
84 :
Name_Not_Found :2011/07/23(土) 01:18:59.30 ID:KE7Lzkz2
>>83 できました! 早速の回答ありがとうございます
すみません、もう一つ聞いていいですか
jqueryで処理の途中で1秒待つときはどういう関数を使ったら良いんでしょうか?
$('div').html(略).fadeIn(100);
という処理をしていて、.html()が完了しないうちにfadeIn()してしまうようで表示がおかしくて困っています
1)n秒待つ
2)メソッドの完了を捕捉する
二通り教えてもらえると助かります。申し訳ないですがよろしくお願いします
$('div').css('display', 'none').html(略).fadeIn(100); or $('div').hide().html(略).fadeIn(100); 遅延も捕捉も必要なし。fadeIn()にはdisplay: noneが必要。
86 :
84 :2011/07/23(土) 14:32:09.08 ID:???
ありがとうございます >遅延も捕捉も必要なし。 .html(略).fadeIn(100);と言う風にメソッドチェーンする時は 必ず直前のメソッドの完了を待ってから次が実行されるってことですか じゃ、変に見えるのは目の錯覚なのかな ありがとうございました
> 必ず直前のメソッドの完了を待ってから次が実行されるってことですか てか、直前のメソッドがjQueryオブジェクトを返さないことにはfadeInにアクセスできんわな。 メソッドチェーンだかなんだか知らんけど、そんなの関係ない。 関数がなんらかの値を返せば、それは「完了」ってことね。
jquery.rollover.js jquery.easing.min jquery.lavalamp.min.js 上記のjqueryを使用している部分がIE(6.7.8にて確認)で動作しないようです。 コードをいじれば動作するものかも知れませんが、自身で解決は難しそうです。 jqueryとIEの相性に関してはどう向き合うのがよいのでしょう。 IE閲覧を念頭におくなら使わないほうが賢明でしょうか?
>>88 確認するから配布元URLを開示して欲しい
90 :
Name_Not_Found :2011/07/23(土) 20:30:51.83 ID:BLScnPfq
正規表現による置換について。 Aの繰り返しはA+とかA{m,n}でマッチできますが、 繰り返された個数を元にAAAAAをA*5などに置換する「うまい」方法はあるでしょうか。 replace(/A+/g, 'A*'); //←ここから進まない。
>>90 'AAAAA'.replace(/A+/, function (token) {
return 'A*' + token.length;
});
92 :
90 :2011/07/23(土) 20:58:15.32 ID:???
>>91 ありがとうございます。
そのように書けるとは思いつきませんでした。
jquery.lavalamp.min.jsのリンクが違ってました。 配布元を失念してしまったので以下にソースを記します。 (function($){$.fn.lavaLamp=function(o){o=$.extend({fx:"linear",speed:500,click:function(){}},o||{});return this.each (function(){var b=$(this),noop=function(){},$back=$('<li class="back"><div class="left"></div></li>').appendTo(b), $li=$("li",this),curr=$("li.current",this)[0]||$($li[0]).addClass("current")[0];$li.not(".back").hover(function(){move(this)},noop); $(this).hover(noop,function(){move(curr)});$li.click(function(e){setCurr(this);return o.click.apply(this,[e,this])});setCurr(curr); function setCurr(a){$back.css({"left":a.offsetLeft+"px","width":a.offsetWidth+"px"});curr=a};function move(a){$back.each (function(){$(this).dequeue()}).animate({width:a.offsetWidth,left:a.offsetLeft},o.speed,o.fx)}})}})(jQuery);
>>88 ,93
IEで動かない自己満足コードなんてスルーしる
・・・ってデモ動くじゃん by IE8
質問です DOM操作についての質問です <table id="a"> <tr> <td></td> </tr> </table> のtableのbgcolorを変える時は document.getElementById("a").style.backgroundColor = "#FFF"; ですが このaに属する<td>の背景色を変更するにはどうしたらいいんでしょうか? <td>にidを付けるんじゃなくて、指定したtableの<td>要素を選択するのような
>>96 まずHTMLを省略して書かない方がいいよ。tableの直下にtbodyがあることになるのは
知ってるよね。それをふまえると
document.getElementById('a').firstChlid.firstChild.firstChid.style.backgroundColor = 'red';
になるのかな。試してないけど。
>>97 他人の書いたものだからこそ背景色とかJSでいじりたいのでは?
>>96 var tds = document.getElementById("a").getElementsByTagName("td");
あとはfor()でtdsを回していけばいいかと。
>>97 >>98 ありがとうございます!
そこでTagNameとは思いつきませんでした
document.getElementById('a').getElementsByTagName("td")でいいじゃない
>>96 CSSを切り替えるのがスマートなんじゃないでしょうか。
「document.styleSheets で #a td のスタイルを書き換える」か「#a のclass属性値を書き換えてCSSの適用対象を変更する」。後者は下記のように。
/* sample.css */
#a td { background-color: #fff; }
#a.hoge td { background-color: red; }
/* sample.js */
document.getElementById("a").className = 'hoge';
>>97 その切り口なら document.getElementById('a').tBodies[0].rows[0].cells[0] も…。
javascriptでcookieいじるときにセキュリティ的に気をつけることって、どんなことがあるでしょうか? といってもやることはajaxでsessionID入ったcookieそのままサーバ側に投げつけるか、 簡易POST的な感じでページ間でセキュリティ的に重要じゃないデータの受け渡しに使うくらいなんですが・・・ 検索してもあまりヒットしないもので、困っています。 気をつけるべきはクライアント側ではなくサーバ側での処理なんでしょうか?
>>102 セッションID はサーバで発行してもらうので JavaScript で制御しません。
Javascriptで同サーバ内のhtmlファイルやtxtファイルの ファイルサイズを取得したり grepみたいに特定の文字列が含まれるか確認することは可能ですか?
105 :
Name_Not_Found :2011/07/25(月) 07:52:13.41 ID:XyYr9XCo
>>104 「Javascriptで」ってのが気になるけど可能
不可能だとすると何を使うんだろ
106 :
Name_Not_Found :2011/07/25(月) 08:04:05.69 ID:VwFkzos0
>>104 ダウンロードする前に、ってのは無理じゃなかろか
なんたってクライアントサイドスクリプトだから
forのループ条件に以下のようにlengthを指定しない方がいいのでしょうか? for(var i=0; i<array.length; i++)
for(var i=0, len = array.length; i<len; i++) 毎回lengthを確認してしまう。
>>108 var i=0, len = array.length;
この発想はなかったです勉強になりました!
ありがとうございます!
>>109 そんなのでよろこんでんじゃねーよバカかお前は
とっとと消えろ
死ね
わかったか
そんな発想誰でも考えつくんだよヴォケが死ね
消えろ
ありがとうございます?なめとんのかこら
なんでLL界隈は痛い連中が多いんだろうな 使用人口じゃJavaに劣るのに 馬鹿人材排出能力が高すぎる otsune(笑)ssig33()yappo()ono-matope()horygrail()
for eachのほうがいいよ
夏だな
114 :
Name_Not_Found :2011/07/25(月) 16:38:38.94 ID:6ldQTTYr
今日から夏休みだろ 9月までここは閉鎖な
はいはい
でもそんなのボトルネックになってるときだけでいいよ 可読性を優先すべき
可読性優先はもっともだけど、var i=0, len = array.length; 程度なら… まあひとそれぞれだな。
そもそもforの一つ目の式でvarを使うのは可読性に優れているの? 変数宣言は関数の最初にまとめとけとかよく聞くけど そうしてる人もforで使う変数は別にfor文にローカルじゃないのにfor文の一つ目の式で変数宣言してるの? それとも var i=0,len=array.length; for(;i<len;i++;){} みたいに外に出してるの? var i=0はアリなのにいっしょにlengthも変数に入れるのは可読性が云々って意味がわからない コンマ演算子が駄目なの?
$POST_[test] と$testのように変数とpostで受け取る名前って一緒にしない方が良いですか?
変数の宣言はスコープが最小になるようにするでしょ。 可読性的に。
俺だけかもしれないが、リクエストする時のnameは大文字にしてる 他に配列は最後に_arrayつけてる
>>120 forはスコープを作らないからつまり当該forが属する関数の頭で変数iや変数lenを宣言するって主張?
主張なんてないよ。どうでもいいw ちょっと可読性って言ってみただけw
>>118 それするなら
var i,length;
for (i=0,length=array.length;i < length; i++)
とかのほうが分かりやすい気が
二個くらいなら何も問題ないやろ 五個とか十個とかになってから騒ぎなさい
可読性指摘してるひとは i は許せるん? 許せるなら l や len もすぐ慣れると思うな
>>125 騒ぐの早杉wwwww
せめて20個wwwwwwwww
128 :
Name_Not_Found :2011/07/25(月) 20:28:46.93 ID:VwFkzos0
ところでなんで“i”なんでしょね?
簡単じゃんそんなのindexのiに決まってんだろ、なんて思ってた時期が僕にもありました
変数名が2文字しかつかえなかったころの名残だろう
132 :
Name_Not_Found :2011/07/25(月) 21:11:23.48 ID:VwFkzos0
アー、ナルほど
入門用書籍のオススメ教えてください。m(____)m
integerじゃないのか
待てよ・・・じゃあjは・・・ゴクリ
fortranでiを宣言すると整数型になるかららしいぜ
>>136 その i の意味を引けば答えが出てくるんじゃない?
138 :
Name_Not_Found :2011/07/25(月) 22:22:58.13 ID:XyYr9XCo
愛の前にHがある・・・それが男だ
>>139 それ実際に言われたことあるんだがwwまさかなwwwwww
Hの前にGがある・・・それが男だ
143 :
Name_Not_Found :2011/07/26(火) 17:09:44.32 ID:8Y+SXTOT
JSONの扱い方がわかりません。具体的には 1)JSON型文字列の、eval()での処理とjqueryの.parseJSON();の違いがわからない 2)JSONデータの要素数の取り方がわからない という感じです HTMLに <div id="presetTag_json" class="displayNone">{"11":"11","26":"26"}</div> があって、 これをJSONとして処理しようと次のようにしたんですが eval()とparseJSON()のどちらの処理も [object Object] と undefined(.length) を返します これは、やってることは両方とも同じで、Jsonオブジェクト化は成功してて要素数の取得は失敗してるということでしょうか? var presetTag_json = $('div#presetTag_json').text(); /*eval()での処理*/ presetTag_json_eval = eval("("+presetTag_json+")"); alert("presetTag_json_eval:"+presetTag_json_eval); alert("presetTag_json_evalの要素数:"+presetTag_json_eval.length); /*parseJSON()での処理*/ presetTag_json_parseJSON = $.parseJSON(presetTag_json); alert("presetTag_json_parseJSON:"+presetTag_json_parseJSON); alert("presetTag_json_parseJSONの要素数:"+presetTag_json_parseJSON.length); また、最終的には以下のような形でループ処理したいのですが、要素数はどうやれば取れるんでしょうか? for(jn=0; jn<presetTag_json.length; jn++){ alert("セット済みpresetTag_json:"+presetTag_json[jn]); }
144 :
Name_Not_Found :2011/07/26(火) 17:17:13.41 ID:8urteXyE
ArrayとObjectは違うのだよ たとえば ["a","b","c","d"]; は { 0 : "a", 1 : "b", 2 : "c", 3 : "d" } に lengthとかのプロパティとメソッドがついたもの、みたいな感じ Objectオブジェクトの要素の数はループ回して数える
145 :
Name_Not_Found :2011/07/26(火) 18:46:58.50 ID:8Y+SXTOT
>>144 ありがとうございます.each()して処理できました
すみませんが、また疑問が出てきたんですが、$.parseJSON();でjsonオブジェクト化したデータは無理だったのに、
$.post();の結果返ってくるjsonオブジェクトは以下のように.length()で取得できました
これはなぜでしょうか? どちらもtypeofで見るとobjectなのですが
var wt = $('div#wtBox input:checked').val();
var presetTag_json = $('div#presetTag_json').text();
presetTag_json_parseJSON = $.parseJSON(presetTag_json);
alert("typeof presetTag_json_parseJSON:"+typeof presetTag_json_parseJSON); //type of はobjectを返す
alert("presetTag_json_parseJSONのlength"+presetTag_json_parseJSON.length);//undefinedを返す
$.post(
"/ajax/select.tags/",
{"workType":wt},
function(data, status){
alert("typeof .post()で取得したデータ:"+typeof data);//type of はobjectを返す
alert("data:"+data);//data:[object Object],[object Object],[object Object]… と、[object Object]を10個返す
alert("dataのlength:"+data.length);//10を返す
},
"json"
);
//PHPでの処理
$rs = $this->_db->select_tags($params['workType']);//DBからIDとTAGのセットを10件(10行分)もってくる
header('Content-type: application/json');
print json_encode($rs);
>>145 全部は読んでないけど配列もオブジェクトなことは理解してる?
typeof []; // object
【環境】windows XP,IE7 【何をしたのか】- 【エラーメッセージ】- 【期待する結果】<script>内のonclickで関数呼び出し 【サンプルコード】 <html> <head> <script> function test(){ document.write("<button onclick='a()'>a</button>") } function a(){ document.write("a") } </script> </head> <body> <button onclick="test()">test</button> </body> </html> 関数内でイベントハンドラを使用してる時点で 間違いだと思っています...代替手段をご教授願います
149 :
145 :2011/07/26(火) 22:45:31.87 ID:???
>>146 ,147
ありがとうございます
$.isArray()も使って確認したら$.queryの返り値は配列でした。
sqlクエリの返り値が多次元連想配列で戻って来て、それをjson_encode()で
jsonのオブジェクト化したものを$.query();で取得するから配列として処理できる
ってことでしょうか? (元のデータが連想配列だから)
一方で、parseJSON()した結果が配列として扱えなかったのは
parseJSON()が「JSON形式の文字列をオブジェクト化するだけで、連想配列にするわけじゃない」からって
ことですか?
この理解であってるんでしょうか?難しいですね
>>149 いろいろ混乱しているようなので整理しますが…。
- JavaScript に連想配列はありません。{} はオブジェクトリテラル(ObjectLiteral)です。
- {} も [] も Object 型です。
- [] の [[Class]] は "Array" です。
- {} の [[Class]] は "Object" です。
- jQuery.isArray は [[Class]] で判定しているので jQuery.isArray([]) === true です。
疑問を持つのも大切なことだけど「どこをどう理解したか」を説明するのも大切だと思うなー 勘違いから質問が生まれることもあるから
>>148 関数内でイベントハンドラを書いてることよりも、そのタイミングでdocument.writeしたらクリアされない?
いいのかな
153 :
Name_Not_Found :2011/07/26(火) 23:07:04.51 ID:8urteXyE
>>148 何をしたいのかがイマイチわからんのだけど
document.writeをprintやechoだと思ってるなら間違い
documentを全部書き換えちゃうから
一番基本的にやるなら
・createElementで<button>要素を作る
・addEventListenerで<button>要素にイベントリスナを設定する
・appendChildやinsertBeforeを使って、<button>要素をdocument内に配置
の三段階で
154 :
153 :2011/07/26(火) 23:08:12.64 ID:8urteXyE
>>153 >documentを全部書き換えちゃうから
これはちょっと大雑把すぎた気がする
無視してくださいごめんなさい
>>153 その順番は IE7- でクロスページリークするのでご注意を。
document に挿入した後にイベント定義すれば回避可能です。
でなければバブリングさせて document でイベント定義。(バブリングが勧められる理由の一つ)
156 :
153 :2011/07/26(火) 23:17:55.01 ID:8urteXyE
かさねてすまんこ
157 :
145 :2011/07/26(火) 23:31:18.92 ID:???
>>155 そのパターンは、具体的に何のオブジェクトがリークすんの?
>>157 本を買え、本を。
情報量が違うから。
ネット上で数百ページに及ぶ入門サイトなんてないだろ。
本なら 2冊で 1000ページくらいになるから。
もちろん、間違った本を選んではならないが。
それならテンプレサイトの一番下にBooksっていうのがあるから そこに書かれてる奴おすすめだな まぁサイ本やらHeadFirstあたりはGoogleBooksへのリンクもはられてるし
161 :
148 :2011/07/27(水) 00:18:15.58 ID:???
>>153 ,155
ご教授ありがとうございました
アドバイスを参考にして作り直してみます
162 :
145 :2011/07/27(水) 00:19:03.02 ID:???
>>159 ,160
やっぱり本ですか
参考までにどの本が良かったですか?
デラべっぴん
JavaScript: The Good Parts あたりでも読んどけ というか >テンプレサイトの一番下にBooksっていうのがあるから ってあるんだからひと通り見て自分で好きなの選べよ
俺も入門書のオススメ教えて欲しいわ。
forとか見たいに繰り返して 繰り返し(条件式){ if(条件式2){ 実行 } } 条件式2がトゥルーになったらループ終了みたいな感じにしたいのですが、良い関数というかそういうのありませんか?
break
ああ、こういう時にbreakを使うんですねありがとうございます if(){break}ってすればトゥルーにならないかぎりスルーされますね、ありがとうございます
171 :
Name_Not_Found :2011/07/27(水) 12:23:51.87 ID:nXaVW/l6
何がどう違うか説明すべきだろと
何がどう違うか説明すべきだろと
174 :
Name_Not_Found :2011/07/27(水) 20:01:56.28 ID:4loj9kVB
jqueryで、<div id="abc">abc</div> という要素が読み込まれたときに一度実行する関数を書いたつもりなんですがダメみたいです どこがおかしいんでしょうか? 読み込み完了を感知するのはload()じゃないんですか? $.("#abc").load(function(){ alert(); });
175 :
Name_Not_Found :2011/07/27(水) 20:04:48.25 ID:vbSbpnEj
初心者なのですが下記の様な空白のフォームテキストにjavascriptで上から番号を付与するにはどのようにしたらよろしいでしょうか?但し、連番付与ボタンを押してもページ自体の更新はせずに番号を付与したいのです。お願いします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> <title></title> </head> <body> <table border="0" width="200" cellpadding="0" cellspacing="0"> <tr> <td> <form>みかん<input size="10" type="text" name="junban"></form> </td> </tr><tr> <td> <form>なし<input size="10" type="text" name="junban"></form></td> </tr><tr> <td> <form>ぶどう<input size="10" type="text" name="junban"></form></td> </tr><tr> <td> <form>りんご<input size="10" type="text" name="junban"></form></td> </tr><tr> <td> <form><input type="button" name="bangou" value="番号付与"></form> </td> </tr></table> </body> </html>
>>174 onloadはimg, iframe, objectとかURL指定でデータを別のところから持ってくる奴しか機能しない。
177 :
174 :2011/07/27(水) 20:29:53.72 ID:???
>>176 ありがとうございます、では何を使ったらいいんでしょうか?
change()もだめでした
>>177 一般的には window.onload か DOMContentLoaded を使う
179 :
Name_Not_Found :2011/07/27(水) 20:47:29.19 ID:nXaVW/l6
>>177 その要素が読み込まれた直後ってのをちゃんとやろうと思ったら
<div id="abc">abc</div>
<script type="text/javascript">
alert('<div id="abc">ができたよー');
</script>
じゃないかね。
var hoge = "abc"; hoge[0] = 'd'; 的なことをやりたいんだけどJavaScriptだとどうやるの?
hoge=hoge.replace(hoge.charAt(0),'d');
重複してると先のにマッチするね。 hoge=hoge.replace(/^(.{1})./, "$1d")
'd'+('abc'.slice(1))
184 :
Name_Not_Found :2011/07/27(水) 23:43:48.33 ID:KrZbcMri
var str1 = 'にわにはにわにわとりがいる'; document.writeln(str1.lastindexof('わ', 5)); これって結果どうなるんですか?
実行すればわかるお
option1つだけを選択して複数のテキストエリアにvalueとして書き込むことはできる? もちろん書き込むのは別々の文字で
ブラウザの最大サイズ以上の横幅を持つ要素のwidthを取得するにはどうしたらいいでしょうか? webkit系だとoffsetWidth,clientWidthはともにブラウザの最大サイズ以上は取得できないようです。
>>188 computedstyleとっちゃだめ?
<div id="test" style="width:5000px; border:1px solid red;">test</div> <script> alert(document.getElementById('test').offsetWidth); //5002 </script> ブラウザの最大サイズとは?
>>188 その「できないようです」を確認したコードを貼る。それが嘘なだけかと。
192 :
Name_Not_Found :2011/07/28(木) 16:52:22.73 ID:VcqbpckV
http://jsdo.it/namaewokimete/bsWa/edit jQuaryを使っていますが、IE8.7.6で動作不備が出ます。(とりあえずChromeでは問題なし)
ラジオボタンのチェックで、背景画像が変わるようにしたい。
(ここでは1枚の背景画像でbackground-positionを変えています)
ラジオボタンは後でdisplay: none;で不可視化します。
ラジオボタンの反応範囲をボタンアイコン画像と、背景画像全体にしたい。
IEで、背景画像のみの場所をクリックすると大丈夫なのに
ボタンアイコンの上をクリックすると動作しない。
原因がわかったら教えてください。
スレ違いでしたら誘導お願いします。
193 :
Name_Not_Found :2011/07/28(木) 19:36:31.32 ID:TV59v/D5
<body onload="abc()";> function abc(){ var a = document.getElementById("a").innerHTML; var b = document.getElementById("b").innerHTML; var c = document.getElementById("c").innerHTML; a = parseInt(a); b = parseInt(b); c = parseInt(c); if(a >= b){ document.getElementById("c").innerHTML = c + 1; } } aがb以上になった時にcが+1になるようにしたいのですが、htmlのonloadではなくa以上に なったタイミングで実行される様にするにはどうしたら良いのでしょうか?
194 :
192 :2011/07/28(木) 20:32:32.57 ID:VcqbpckV
195 :
Name_Not_Found :2011/07/28(木) 21:35:12.07 ID:53q38CDw
>>193 DOM の MutationEvent を使って見張ればいいんじゃないですかね。
もちろん IE は MutationEvent に対応していませんが。
197 :
193 :2011/07/28(木) 23:03:44.64 ID:???
198 :
193 :2011/07/28(木) 23:34:50.05 ID:???
>>197 なら、そのクリックしたタイミングでabc()も実行しとけばいいんじゃないの?
200 :
193 :2011/07/28(木) 23:49:44.62 ID:???
なんじゃそりゃ
>>192 それ編集用ページじゃないの
ログイン画面になるよ
>>196 それは確か削除予定のイベントじゃなかったっけ?
204 :
192 :2011/07/29(金) 09:48:55.73 ID:B3HlHot0
初心者質問も別にここでかまわんよ しかしJavascriptも今じゃHTMLとCSSと同じぐらい必須なものになってるよなぁ 一昔前なんて「URL踏む時はJavascriptはオフにしとけ」なーんて言われてたのに
グーグル見てるとすげーなと思う 処理が軽くなってCSS3も普及すればもっと遊べそう
開発者はついていくのが大変で困りもんだけどな
HTML5は完全に普及したけど VISTA、7のデフォのIE8で対応してなかったから あと10年はかかるかもしんないけど、VISTAと7のサービスからして
209 :
192 :2011/07/29(金) 15:44:06.99 ID:???
210 :
Name_Not_Found :2011/07/29(金) 16:07:42.43 ID:k2vGJ/Jh
さらっとしか見てないけど 背景画像を入れ替える件は書いてあるか?
殆ど見てないけど「IEのバグを直すjs」をjqueryベースに書きなおす
>>212 ありがとうございます! これで実装してみます。感謝!!
>>210 最初は背景画像入れ替えるつもりで書いていましたが
質問用にもっとシンプルにしようと思って背景色を変えるようにしていました。
innerHTMLで var color="#FF0000"; "<td style=\"background:\"#"+color+";\"></td>"; とやっても背景が変わらないのですが 何が原因なのかよくわからないです
\"background:\" この最後の\"はなんなんだ
>>214 "<td style=\"background:"+color+";></td>";
>>216 それも間違ってるが。為にならないので自分で考えさせろよ
わかりません 教えてください どういう理由かわからないです 回答まってます
> (3) メール欄は空欄を推奨。2回目の投稿時は前回のレス番を名前にすることを強く推奨します。
Perl忍者に絡んでる人初めて見た
あくまで推奨だから、強要する必要はない。 ついでに言えば忍者なんてほっとけ。
誰も強要してないし(この流れは二回目か)
だったら態々 >メール欄は空欄を推奨。2回目の投稿時は前回のレス番を名前にすることを強く推奨します。 これだけのレスを出す必要は無いだろ。
テンプレ下手にいじるからやなw
Perl忍者 というのが何についての回答を待ってるのかさっぱり分からんな
テンプレ引用しただけで強要とかさすがに被害妄想だろ
引用部を読んで欲しいんだろう それぐらい構わないと思うが
>>227 あくまで推奨であって、必ずしもルールに従う必要はないんだから引用するのも筋違いってもんだ
MutationEvent の代わりになるものはありますか?
>>230 「推奨=しなくていい」ではないんだから、そのルールに賛同して他人に推奨するのは自由だろう
推奨しないのも自由だが、推奨する人を制限する理由にはならない
DOMAttrModifiedとかDOMNodeInsertedとか なくなると困る
>>232 推奨=するもしないも自由
だからしなくてもいいもOKだろ?
推奨するのも勝手だけど推奨事項を守らない人に
推奨事項のみを記述スルレスは高圧的に捉えられかねないからよろしくない
そもそも前スレで持ち越しとなっていたものを
テンプレに加えたのが間違いだろ
>>231 ,233
まだ代替手段すらないので
削除されるの自体まだまだ先だろうって見解が多いらしいよ
>>234 明確に違うんだけどなー
1. 〜しても良い(MAY)
2. 〜すべきである(SHOULD)
3. 〜しなくても良い(MAY NOT)
4. 〜すべきではない(SHOULD NOT)
5. 〜してはならない(MUST NOT)
「〜すべき」を「推奨してはならない」に置き換えているように見える
そこまで強い否定に発展する意味がわからないよ
> 推奨事項のみを記述スルレスは高圧的に捉えられかねないからよろしくない そういうことか 確かに高圧的に捉えられかねない、は理解できる
PHPスレみたいな流れになってきたな・・・
>>236 >>220 みたいなやつが挑発じゃなくてなんだというんだよアホか
今まで特に問題なくやってこられたのになぁ 保守的なわけじゃないけど、余計なことはしなくていいんだよ本当に
PHPスレよりは理性的だと思うな
冷静に対処しようぜ
>>236 RFC2119かw
>>234 話がズレてるのでは?
Perl忍者の質問の意図は全く分からないから、
せめて推奨事項レベルぐらいの事はしないと回答は不可能だぞ
という問題なのではないかと。
NG推奨ワード:忍者
>>234 気持ちはわかるが、君も大分高圧的になってるからクールになれ
244 :
231 :2011/07/30(土) 17:09:31.65 ID:???
>>235 当分は MutationEvent でしのぐか、呼び出し側で工夫するしかないようですね。
ありがとうございました。
setIntervalで監視すれ
246 :
231 :2011/07/30(土) 19:13:02.76 ID:???
>>245 アドバイスありがとうございます。
setInterval は負荷がかかりそうなので止めておきます…。
247 :
Name_Not_Found :2011/07/30(土) 19:18:28.95 ID:QOy4u2lY
jqueryのreplaceWithについて質問させてください 特定のdiv#hogeに含まれている<textarea></textarea>を、任意の<textarea>で置き換えたいのですが $('#hoge textarea').replaceWith('<textarea name="hoho"></textarea>'); 以上のようにしたところ <textarea name="hoho"></textarea>が該当箇所に2つ出来てしまいました なぜでしょうか、対処法や原因など良ければ教えてください。よろしくお願いします (2つ目を削除すればいいかと思いましたが、そんな対処法で問題ないのか不安で…) OS:mac10.5.6 ブラウザ:chrome12.0.742.122
Ubuntu11.04+Chrome12.0.742.124でも再現せんな
>>248 ,249
うーん、本当ですか。なんでなんだろう
わからん。もう少しテストしてみます、ありがとうございました
漏れも。テンプレ
>>1 のレス番のとこ(3)、「強く」はよけいだと思う。
高圧的な印象になっちゃう。次は「強く」を削除して欲しいな。他の方のご意見はいかが。
どの質問か分からないのでID出すか名前にレス番入れてください。
質問者や話の流れがわかりにくかったら無理に回答せずスルーすればいい そしたら質問者も回答を得たいがために、騙り防止のために、自ずとid出したり名前欄にレス番入れたりするでしょう そういうことしない質問が気に食わないならスルーすればおk でいいと思うけど
>>254 一理あるけど、テンプレに入れることで守ってくれる人もいるからね…
答えたいんじゃなくて煽りたいんだよ 言わせんな恥ずかしい
俺は回答するために引用だけすることもあるけど煽りと思われてるのか URLだけ貼るのも煽りと思われるのかね
>>251 >メール欄は空欄を推奨。2回目の投稿時は前回のレス番を名前にすることを強く推奨します。
この一文が丸々余分だと思う。
>長い間連続して質問する場合にレス番を名前にしてあれば、質問の流れが回答者に伝わりやすくなります。
これだけで十分だと思う。
>>258 それもいいな。
「メール欄を空欄にすれば騙りを防止できます。」を付け加えるといいかも。
自分の言葉を添えないのは煽りというか自分に自信がないという印象 何か言われると俺の意見じゃねーしとかそういう意味じゃねーしとか返ってくるケースが多い
俺も、回答するために1の引用だけすることはよくある。 わざわざ何回も同じような文章打つのは嫌だし
>>220 に苛立つ気持ちも理解できないわけじゃないが、煽りではない人もいることも理解して欲しいな
263 :
Name_Not_Found :2011/07/31(日) 01:02:29.51 ID:t8xq6zef
コンストラクタをapplyする方法ってある?Dateクラスなどを初期化したい。
265 :
263 :2011/07/31(日) 03:10:16.87 ID:t8xq6zef
>>264 coreJSだけで実装したい。__proto__とかbindとかを使わない方法ではやっぱり出来ないかな。。
>>265 Function#bind は ES5 規定だよ
>>263 ,265
Function#bind の方が汎用性はあると思いますが、Date.apply(new Date, [2011, 7, 31, 12, 5]); とか。
268 :
Name_Not_Found :2011/07/31(日) 13:15:42.71 ID:qZBb03pR
CoreJSってどういう範囲を指すのでしょう? ECMAScriptはCoreJSですか?
270 :
263 :2011/07/31(日) 19:30:30.77 ID:t8xq6zef
すまん。大方のブラウザで実装されているES3で実装したい。 俺も色々試したが、bindがネイティブで実装されてないと無理っぽい。
自己解決しました ありがとうございました できました また次回聞きます
早く死ね 死ねよ?おい ぶっ すぞ 死ね いい加減にしろ バカにしてるのか?名誉毀損だな
この世の中に、墜落したものがいる 努力をしても這い上がれなかった者 彼は本能のままに生き「金くれ」という言葉を残し不気味な笑いを浮かべている それは狂ったように、まとわりつく様 まさに餓鬼状態の人間が食糧を必死に求める無残な様 それがssig33と呼ばれいてる ある者は、人間のクズというが またある者はこの世のものではない、人間でもない存在がない物体という者がいる 彼の恐ろしさはその姿だけではなく、その性格 ネットストーカー的な粘着性 予告も無くRubykaigiなどSNSに現れ、われわれ国民に罵声を浴びせ恐怖のどん底不安の渦に巻きいれるというキチガイ 「あの腐った存在 負け犬の象徴だ」
Ruby関連の変な子とかどうでもいいから。
<div id="wrapper"> <span id="content">すすごく長い文すごく長い文すごく長い文すごく長い文すごく長い文すごく長い文すごく長い文すごく長い文すごく長い文ごく長い 文すごく長い文すごく長い文すごく長い文すごく長い文すごく長い文すごく長い文すごく長い文すごく長い文</span> </div> <script> var wrap=document.getElementById("wrapper"); var cont=document.getElementById("content"); alert(wrap.clientWidth); alert(cont.clientWidth); alert(wrap.offsetWidth); alert(cont.offsetWidth); </script> contentを1行で表示したときのwidthが取得したいのですが、うまくいきません。 ブラウザの幅よりもcontentが大きくて、contentが2行に渡って表示された場合は .clientWidth、offsetWidthはどちらもブラウザの幅の値が取れてしまいます。 ブラウザの幅にかかわらず、contentが1行に収まって表示されている時と同じwidthが取得できるようにするにはどうしたらいいのでしょうか?
Opera で試してみただけ。 <script> var cont=document.getElementById("content"); var style=cont.style; style.whiteSpace="nowrap"; var width=cont.offsetWidth; style.whiteSpace="normal"; alert(width); </script>
>>277 webkit系のブラウザで動いて欲しかったのですが、問題なく動きました!
ありがとうございます
一瞬だけ改行しないようにして、そのときのoffsetWidthの値を取得してるってことは、offsetWidthは値渡しなんですね
offsetWidthは参照渡しかと思っていました。
あるプロパティが、値として渡されるのか、オブジェクトなどのように参照が渡されるのかって見分ける方法ってあるんでしょうか?
console.logとかalertで地道に調べていくしか方法ないですかね?
String、Number、Boolean、Undefined、Null のメンバは値、
それ以外は参照。
>>277 で言えば、cont (null でなければ)、style は参照、
width は値を取得してる。
洩れも
>>258 に賛成だな。
煽りが気に食わないからってあれこれ言おうとすれば向こうの思うつぼ。
華麗にスルーが一番。
281 :
Name_Not_Found :2011/08/01(月) 21:36:32.31 ID:EbE/4LVe
<script type="text/javascript"> function test(){ alert('onmouseover'); } </script> 〜中略〜 <ul onmouseover="test()"> <li>hogehogehoge</li> <li>hogehogehoge</li> <li>hogehogehoge</li> </ul> UL要素にカーソルが入った時のみ、onmouseoverイベントを走らせたいのですが、 上記のように書くと、LI要素間の移動でもonmouseoverイベントが走ってしまいます。 このような場合、どのように記述すればUL要素にカーソル入った時のみイベントが走るようにできるのでしょうか?
>>281 event.targetをみて処理分けかな
283 :
281 :2011/08/01(月) 23:34:19.90 ID:EbE/4LVe
>>282 現在は、event.relatedTarget(event.fromTarget)から関数内で処理分けを行い対応しているのですが、
やはり、関数内で処理分けを行うしかないのでしょうか?
<script type="text/javascript" src="
http://connect.facebook.net/ja_JP/all.js#xfbml=1 "></script>
<script type="text/javascript">
<!--
// 141575369223202 => ローソン(LAWSON)
// 201153059899163 => FamilyMart (ファミリーマート)
window.onload = function(){
document.getElementById("btn").onclick = function(){
koko.innerHTML = '<fb:name uid="201153059899163" />'
};
};
//-->
</script>
<button id="btn">ボタン</button>
<div id="koko"><fb:name uid="141575369223202" /></div>
------------------------
FacebookのFBMLのテストです。
<fb:name uid="141575369223202" />の部分が、all.jsによって展開されて、
「ローソン(LAWSON)」が出現します。
そして、ボタンを押すと「ローソン(LAWSON)」の文字列が
「FamilyMart (ファミリーマート)」に変化してくれることを期待しているのですが、
all.jsは、ロード後に生成された<fb:〜には動いてくれないようです。
解決方法ありましたらご教授いただけませんでしょうか。
innerHTMLの後にall.js内のFBMLをパースする関数を実行させねばいけないのでは でもそれだと無駄が多いから、始めからローソンもファミリーマートも表示させて、ボタンでトグルした方が良いと思うぞ
>>283 li要素の onmouseover でバブリングを止めるのはどう?
ie9のcurrentStyle.colorで:vistedのcolorは取れなくなったの?
288 :
Name_Not_Found :2011/08/02(火) 19:03:42.81 ID:denIp/n7
フォームからXMLHttpRequestを使わずにPOSTして画面遷移なしでレスポンスを受け取れますか? XMLHttpRequestを使わないと無理ですか?IEに対応してなくていいので方法があれば教えてください iframeとかでもなく
koko.innerHTML = '<fb:name uid="201153059899163" />' の後に FB.XFBML.parse(document.getElementById("koko")); でおk。
290 :
Name_Not_Found :2011/08/02(火) 20:30:05.06 ID:1eF5kTug
youtubeを放置していたらjavascriptが無効ですと表示されつつ 本来動画が表示されるところにに!マークみたいなのが出てました。 インターネットオプションで確認しても有効になってるんですが 何が原因なんでしょうか?放置していただけなのでわかりません。
291 :
281 :2011/08/02(火) 20:41:34.14 ID:Qms0lwQG
>>286 その方法ですと、私の記述が誤っているのかもしれませんが、
LI要素間の移動でイベントが走ってしまわないでしょうか?
>>290 フラッシュプレイヤーがクラッシュしただけやろう
javascriptをやっているのですが 例外の探すコツってありますか? いちいち、例外を探すのが大変です この処理だったらこの例外がくると、すぐわかる方法しりませんか? 教えてください
服を脱ぐと感性が鋭くなるyo!
>>291 li要素にmarginがあればul要素に触れるんじゃないかな
>>293 何の例外で困ってるのか知らないけど使用している機能の仕様を読めばいいんじゃない?
>>288 受け取る以上、結果はどこかに出さなければならないから。targetで別窓を指定して
そこに出させるとかもやりたくないわけね?「うんこを出さずに排便したい」みたいな
要求だな。
>>288 よく知らないけど web socket でくぐってみるといいかもね
>>297 お前は朝鮮人か。
読点の位置が間違ってるぞ。
岡崎洋三 『日本語とテンの打ち方』 を読め。
jqueryの「yuga.js」を使ったロールオーバーボタンがカーソルを近づけると、カーソルが(指先カーソルに変わったところで)チラチラと点滅状態になります。 ローカルで動作確認する分には全く問題ないのですが。 直下にもう一つ同じ仕様のロールオーバーを設置してあるのが原因でしょうか? 回避法として試してみるべき事がありましたらご教示願います。
302 :
Name_Not_Found :2011/08/03(水) 09:06:10.22 ID:Ow7JMSNO
配列に格納する文字列の上限とかってあるのでしょうか? hoge[0] = 50KBぐらいの文字列 hoge[1] = 10KBぐらいの文字列 hoge[2] = 30KBぐらいの文字列 とやってるのですがココに何か原因がありそうで
>>302 ECMAScript仕様上は制限はなかったと思うけど、何のブラウザでどんな不具合が起きてるの?
304 :
Name_Not_Found :2011/08/03(水) 09:35:05.83 ID:Ow7JMSNO
IE9です
>>304 不具合の詳細は?エラーメッセージとか描画が崩れるとか何かしらあると思うけど
メモリは足りてるか、も調べるポイントだと思う
306 :
Name_Not_Found :2011/08/03(水) 09:44:48.49 ID:Ow7JMSNO
あっ、メモリ考えてませんでした 調べてきまんす、どうも
新しいウィンドウを開くとき target="_BLANK" でやると、ローカルサーバで実行したときは完全なウィンドウの複製(というか別タブ)が開くのですが、 リモートサーバー上にあげてから実行すると、ポップアップウィンドウ(メニューバーなし、ステータスバーなし)が 開こうとしてGoogle Chrome の警告が出てしまいます。 確実に別タブ(ブラウザによっては別ウィンドウ)で開かせたい時はどうすればいいのでしょう?
310 :
Name_Not_Found :2011/08/03(水) 11:07:11.80 ID:Ow7JMSNO
すみません、どーやらブラウザのメモリの問題だったよーです お騒がせしました&ありがとうございます
無名関数内でのthisはグローバルオブジェクトになったりしますが "use strict"を記述してる時の無名関数内でのthisはundefinedにバインドされますよね? この時確実にグローバルオブジェクトを取得するにはどうすればいいんでしょう・・・ windowという記述以外でお願いします
312 :
Name_Not_Found :2011/08/05(金) 14:58:34.37 ID:9V9fdTxQ
質問です javascriptで外部からタグを引っ張って htmlファイルにhtmlタグを出力することとかってできますか?
>>312 jsから外部サイトは直接読めないのでひと手間必要。
おまいのサイト.com/外部サイトからタグを引っぱってくる.php
おまいのサイト.com/上記PHPを呼んでhtmlに出力する.js
おまいのサイト.com/お望みの.html
マウスの左右ボタン同時押しを検出する方法ってありますか? イベントオブジェクトの一覧見てみてもbuttonとwhichプロパティがマウスっぽいけれど buttonは何も押してない状態と左クリックが0、真ん中が1、右クリックが2 whichは何も押してない状態と左クリックが1、真ん中が2、右クリックが3 両押しすると数字の若い方が優先された値を返すような状態で詰まってます。 アドバイスお願いします。
316 :
Name_Not_Found :2011/08/05(金) 15:33:05.52 ID:9V9fdTxQ
>>313 ありがとうございます。がんばってみます。
>>315 完全な同時押しは人間には無理だし、機械も検知できないんじゃないかな。
左or右が押されたらフラグ立てて、フラグがたってる状態で反対側が押されたら同時押しと判定。
>>318 試してないけどそれ315の仕様なら無理じゃね?
onclickとoncontextmenuでダメなん? 右と左が分かれていて、クリックでイベントが起きるなら問題ないと思うけど。
321 :
Name_Not_Found :2011/08/05(金) 16:32:35.99 ID:9V9fdTxQ
度々すみません312です
> おまいのサイト.com/上記PHPを呼んでhtmlに出力する.js
これやってみたけどhtmlファイルにhtmlタグは表示されませんね。
実は自動相互リンク集を作ろうと思っていて、タグを貼るだけで勝手にリンクが増えるリンク集です。
<script type="text/javascript" src="
http://example.com/hoge.php?id=123 "></script>
でも上記のようなタグを貼っても、一応リンクはできるけど、htmlファイルにhtmlタグが表示されないので
外部リンクとはみなされませんよね?世間に自動リンク集はたくさんあるけど、あれってどうやってるのかな。
何か上手い方法ありませんでしょうか?
>>321 むしろjs使わず全部phpとかでやるべき事案な気がする
>>321 あ、ちょっと勘違いしてたかも。
「いろんなユーザーさんに、それぞれのブログとかに1行のscriptタグを貼り付けてもらうと、
新しいリンクも自動で更新される便利なリンク集がulかなんかで生成される」ってことね。たぶん。
もっと詳しく書けよ。と思ったが、なにを詳しく書けばヒントになるのかもわからんレベルだなきっと。
で、「自分じゃない誰かさんのサイトにscriptタグを貼ってもらうだけで
SEOフレンドリーにhtmlファイルそのものを書き換えてくれる」って仕組みは、ムリだな。
ただ、SEOフレンドリーではないにしろ、
Googleがjs生成によるリンクを完全に無視するとも思えないので、
やらないよりは多少なりとも効果はあるのでは。
>>321 SEOを意識するならJSを使わず、iframe要素を使った方がいいと思うよ。
iframeも結局ぜんぶ同じurlを呼んでるだけなので、 理想的なgoogleにとってはjsと大差ないでしょう。 どっちがマシなのかは判断が難しい。
326 :
Name_Not_Found :2011/08/05(金) 19:00:14.95 ID:9V9fdTxQ
SEO(笑)
カッコ笑い判定厳しいなw
>>318 ,319,320
なんとかそれっぽいこと実装できました。
html側では
<body onSelectStart="return false;" onContextMenu="rightclick();return false;" onMouseDown="leftclick(event);return false;" onMouseUp="mouseup(event);">
<div id="debug1"></div>
としておいて
js側ではグローバル変数にbool値を格納するisLeftPushedとisRightPushedを用意し、
function rightclick(){
if(!isLeftPushed) document.getElementById("debug1").innerHTML="right";
else document.getElementById("debug1").innerHTML="both";
isRightPushed=true;
}
function leftclick(e){
if(e.button==0){
if(!isRightPushed)document.getElementById("debug1").innerHTML="left";
else document.getElementById("debug1").innerHTML="both";
isLeftPushed=true;
}
}
function mouseup(e){
if(e.button==2) isRightPushed=false;
else isLeftPushed=false;
}
でgoogle chrome上で両押ししてる時だけbothと表示するようにできました。
onClickだと左クリック時だけ反応してくれますが放したときにイベントが発生するのでonMouseDownを使いました。
アドバイスありがとうございます。
<!doctype html> <meta charset="utf-8"> <style> #canvas { width: 320px; height: 240px; background: #ccffff; font-size: 64px; } </style> </head> <body> <div id="canvas"></div> </body> <script> (function() { var canvas = document.getElementById('canvas'); var buttons = [false, false, false]; function show() { canvas.textContent = buttons.map(function(b) { return b ? '○' : '×'; }).concat(buttons.filter(Boolean).length).join(' '); } function handler(event) { event.preventDefault(); buttons[event.button] = event.type === 'mousedown'; show(); } canvas.addEventListener('mousedown', handler, true); document.addEventListener('mouseup', handler, true); show(); })(); </script>
どうでもいいけどdoctypeとかmetaとか丁寧に書いてるのに headの開始タグがなかったりstyleとscriptの必須属性がなかったりmetaとscriptが変なところにあったりちぐはぐしてて違和感
>>331 doctype宣言見れば分かるけど、html5だからそれでいいんだよ
styleとscript要素の属性は初期値がそれぞれ text/css, text/javascriptになってるから、
省略して構わないし、head, body要素はおろかhtml要素さえも省略できる
あとXHTMLの /> で終わらせる最小化表記が混在していてもよい
<meta charset=utf-8 />
<title>Untitled</title>
Hello World
つまりこういうのでもおk
</head>は必要?bodyの開始タグがあればそこでheadが終わると判断されるんじゃないっけ
>>330 はtitle要素が抜けているため。</head> はエラーではないようですが無視されるので無意味ですね。
>>332 はDOCTYPE宣言が抜けていて HTML5 と機械的に判定できないため。HTML5はDOCTYPE宣言を省略していいことになっていますが、DOCTYPEスイッチの関係で省略する事は現実的ではないかも。
あと、終了タグを / で閉じていますが属性値をクオートで括ってないのでXMLと互換性がないです。
type属性を指定しなかったら初期値になるって草案だけど 何で「リンク先のContent-Typeに従う」にならなかったんだろう 同じことを2か所で指定するのって保守性が下がると思う
>>338 <script type="text/vbscript"> と Content-Type: text/javascript がある時は Content-Type ヘッダが優先されると思ってた
仕様上は、type属性って包括されるスクリプトコードのみに対する指定なんかな? IEはtype属性優先っぽい? まあIEはMIMEタイプ無視したりするからよくわからんけど
質問です。
http://jsdo.it/umaa/mMon ↑を実行しても動かないのはわかっています。
要は選択肢(option)から複数のtextに選択肢ごとに違う数字を入力させたいのですが、
似たようなスクリプトで書けれるのであればご教授お願いします。
>>340 外部スクリプトを含むかは曖昧だけど優先順位が明確でない気がする
HTTP1.1 と HTML5 で規定が衝突する場合はどうなるんだろう
if以降をt内に入れりゃいいんじゃね 独自拡張だらけで動くか知らんけど
ボタンを押したら、文字などはそのままで背景画像だけ変えるにはどうすればいいですか?
>>345 node.style.backgroundImage
onMouseOver/Outのバブリングで悩んでます、どなたかアドバイスお願いします。
http://www.ps4.jp/up/rec21/src/wwwps4jp11332.jpg この外枠のところでonMouseOverでjsを読み込んで子要素をアニメーションさせているのですが、子要素をポインタが移動する度にルートにバブリングされonMouseOver/Outが呼び出されてしまい何度もFunctionを呼び出してしまいます。
外枠のところだけでonMouseOver/Outを動作させたいんですが私にもわかる簡単な方法はないでしょうか・・・orz
function f() { ... } と f = function() { ... } は、{ ... } の中が完全に一致すれば、挙動も完全に一致しますか?
function f(){} == window.f = function(){} 厳密には多少違うのかもしれないが等価と思っていい
>>348 Function#name と Function#toString の値が異なります。
関数宣言はいわゆる巻き戻しが発生しますが、関数式は巻き戻しが発生しません。(IE8- の名前付き関数式は例外)
>>350 名前付き関数式は IE8- にバグがあるので挙動を理解しているの出なければお勧めはしないです。IE8- では関数宣言と無名関数式が同時に定義されたかのように振る舞います。
巻き戻しを嫌うのでしたら関数式ですが、IE8- を考慮するなら名前付き関数式を使えないので無名関数式一択ですね。
http://d.hatena.ne.jp/think49/20110521/1305959222
> 関数宣言はいわゆる巻き戻しが発生しますが、関数式は巻き戻しが発生しません。(IE8- の名前付き関数式は例外) へー、そうだったのか 早くIE9普及しないかな、windows8からはデフォがIE9になるんだべ
>>351 その文脈における「巻き戻し」というのはスコープに入った時、関数としてアクセスできるかって事?
関数式の場合は「var」で変数宣言すればローカル変数になってるから変数自体にはアクセスできるけど
スコープに入った直後は「undefined」だから、関数が代入されるまで関数としてアクセスできない、ってことかな?
IE8はXPが残る限り残るだろ
IEってIE9からやっと他のに追いついたって感じなんだよなぁ IE8でHTML5とかに対応させなかったのが痛い
>>353 ごめんなさい。「巻き戻し」は紛らわしかったですね…。
> その文脈における「巻き戻し」というのはスコープに入った時、関数としてアクセスできるかって事?
仰る通りです。正確には ES3 の「変数の実体化」の話で実体化されるタイミングが異なることを伝えたかったんです。
# 「変数の実体化」は通りが良くないだろうと思い、あえて「巻き戻し」としましたが、かえって誤解を生む表現でした。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/10_Execution_Contexts.html#section-10.1.3 ・関数宣言では関数呼び出し時に関数オブジェクトを実体化します。
・関数式を VariableStatement とセットで使うと関数呼び出し時に undefined で実体化。VariableStatement のステップで関数オブジェクトに初期化します。
・名前付き関数式の名前はその関数内でのみ使用できる特別な名前になります。(本来は関数宣言の名前とは別ですが、IE8- は関数宣言と同じように振る舞います。)
foo(); // undefined なので TypeError
piyo(); // 変数の実体化されていないので ReferenceError (IE8- は関数宣言と同じように振る舞うので参照できてしまう)
var foo = function piyo () {
alert(piyo); // この関数内では piyo の名前で参照できる (IE8- は関数宣言で実体化されているので参照できる)
};
foo(); // 関数呼び出しできる
>>356 × ・関数宣言では関数呼び出し時に関数オブジェクトを実体化します。
○ ・関数宣言では上位スコープの関数呼び出し時に関数オブジェクトを実体化します。 (グローバルコードならスクリプトコードがパースされた段階で実体化します)
正確に伝えるのって難しい…。
>>357 丁寧に返答してくれてありがとう
この辺りは厳密に理解するのが難しいわ…
>>357 関数宣言は宣言されてる文脈(実行コンテキスト)進入時点で実体化されてるしょ。
呼び出しとかグローバルコードとか関係なく。
>>355 HTML5はまだ草案だからいいけど、XHTMLとかDOM2とかにまともに対応してないのが面倒くさい
>>361 「上位スコープの関数呼び出し時」 = 「宣言されてる文脈(実行コンテキスト)進入時」
てことか。スマソ
「巻き上げ」とちゃうの?
>>364 変数宣言による巻き上げはよく見ますが、関数宣言の巻き上げは見覚えがなかったので
>>353 で指摘されて「間違えちゃったか」と脊髄反射レスしてました。
(ECMAScript 仕様にない造語なので確かめにくくて…って言い訳かな)
『JavaScript パターン』(P63) に「4.1.4 関数の巻き上げ」がありました。どうやらどちらも巻き上げで問題なかったようです。
>>361 に近いコードが 4.1.2 で触れられていますね。
…って、「巻き上げ」と「巻き戻し」か。 ごめんなさい、素で間違えてました。
367 :
Name_Not_Found :2011/08/07(日) 20:15:34.39 ID:m0Q/9/RP
特定のイベントタイプに対応しているかどうかを判断するのってどうすればいいですか? element.addEventListener("foo", func, false); イベントタイプ「foo」に対応しているか知りたいです
>>367 DOMContentLoaded とか一部のイベントタイプは無理だけど 'onfoo' in element
369 :
367 :2011/08/07(日) 20:22:51.70 ID:???
すみません > DOMContentLoaded こういうの判断したいです・・・無理ですか
>>368 Chromeだとtrue返すけどFirefoxだとfalse返す?何か間違えてるかな俺
>>370 コードを書かなければ検証もできない
そのコードが正しいならFirefoxは未対応なんだろう
<body> </body> <script> alert("onload" in window); alert("onclick" in document.documentElement); alert("onclick" in document.body); </script> こんなんだけど
374 :
367 :2011/08/07(日) 21:34:41.63 ID:???
必要になる前に一度イベントを発生させて イベントリスナーが反応するか試す みたいな感じですか ふーちゃーでてくしょんみたいな方法があるのかなと思ってました ありがとうございます
376 :
Name_Not_Found :2011/08/08(月) 09:44:56.08 ID:Dk/vH1PY
質問です JavaScriptにはclassは無いとよう言われますが alert(Document)やalert(Element)とすると[object class]と表示されます これらは使い道を考えても、JAVAやCのようなclassでは無いものの、十分classと言って良いものなのではないでしょうか? つまり、特殊な身分のclassではないものの、JavaScriptにもclassはありますよね?
あるけど、対応してないブラウザとかあって あまり推奨されてない っていうか推奨されてないから対応してないブラウザがあるって感じだったよーな
>>376 何その議論のための議論みたいな質問。それなら「classの定義」を
まず述べてみていただけますか。
JavascriptでClassは使うなって父方の祖父に言われた
JavaScript でも instance という言葉が使われるのに、それと対極を成す言葉がないのはおかしくないか。
>>380 インスタンスがあるからクラスもあるとは限らない
>>381 JavaScript にもクラスの概念はある、ということには賛同なんですね。
"クラス" と呼ぶものが JavaScript の実装に存在しているかどうかは別にして。
ECMAScript仕様読め
対極はコンストラクタでしょ?
>>382 認めてないし、どうしたらそんな解釈になるのかな
認めてるくせに。
自分が思い込んでいることを是正できない頭でっかちなんだろ 何言っても無駄だからスルーしとけ
388 :
381 :2011/08/08(月) 22:42:20.68 ID:???
390 :
376 :2011/08/09(火) 09:17:20.70 ID:???
>377 非推奨で使えないブラウザがあるとは驚きました それならHTMLCollection.prototypeとかはどのように実装したらいいのでしょうか? >378 ClassとはObjectを抽象的に一般化したものと認識しています よって多くの言語で雛型の様な使い方がされていますが、別にどのくらいどのように利用できるかは本質ではないと思います
自分でも「classではないがclassのようなもの」みたいな表現をしているけど (「JAVAやCのようなclassでは無いものの」「特殊な身分のclassではないものの」) それをClassと思いたいんならそう思えばいいんでないの 自分の中で自分ルールの線引きがあるみたいだし他人に意見を求める必要はないんでないの 自分の中で答えが決まっているのになぜ意見を求めるの?求めているのは意見じゃなくて同意? 知り合いと言い争いになって、自分のほうが正しいという後ろ盾がほしいとか? 名無しの後ろ盾でいいのなら、あなたのいうとおり!あなたがただしい!
表現のためのClassならありますってだけだろ
3組の山本がかわいいまで読んだ
おまえらがんばたって海外のデベロッパーに勝てないのになんで無駄なことしてんの? 海外のデベロッパーが作ったライブラリをちまちまいじってるだけだろ?
>>390 仕様にない用語は自己表現なので人に伝える手段としては適切でないことが多いよ
IE6 で URL 末尾のクエリ文を取得する方法について教えてください。 以下の内容は IE6 ですが、IE7 以降では問題なく実行できるようです。 もしスレチだったら誘導をお願いします。 【環境】 WindowsXP + IE6 + HTA + JavaScript 【何をしたのか】 ・mshta.exe を使って、別のウィンドウで HTA の画面を表示する ・その際に、新しく開く側の HTA 内でクエリを受け付けたい ・上記のため、【サンプルコード】を呼び出し側の HTA ファイル内で実行してみた 【期待する結果】 location.search でクエリ文を受け取りたい。 が、 空文字しか取得できない。 【サンプルコード】 var script = new ActiveXObject( "WScript.Shell" ); script.Exec( "mshta.exe ""[HTAファイルのパス]?param=001""" );
>>390 その俺様定義には異論があるね。オブジェクトを抽象化するって
何を取捨選択するわけさ。もっと普通の定義を参照して欲しい。
>>390 > ClassとはObjectを抽象的に一般化したものと認識しています
同意出来ない。そもそも、クラスベースとかJavaとか厳密に定められた定義があるのに何でオレオレ定義にするの?
あなたは「JavaScriptにもオレオレ定義のClassがありますよね」っていってるだけだよ。
そのオレオレ定義でさえ曖昧すぎて同意できない。
ウンコではないもののウンコのようなもの それはじゅうぶんウンコといっていいのではないでしょうか!? つまりカレーは、ウンコではないものの、ウンコですよね!? ウンコとはちゃいろっぽくてやわらかくてどくとくのにおいのするものとにんしきしています!!
jQuery-1.6.2のソースコードで質問させてください (function( window, undefined ) {とありますが、この一番最初の(はどういう意味なのでしょうか? var e = function(a,b){ ... }(1,2);のように関数定義と同時に呼び出しているのだと思うのですが、 左式の変数が無いので良く分かりません。 この場合、戻り値は要らないので左式の変数が記述されていないという事なのでしょうか? しかし、その6行下のvar jQuery=(function(){...も(が関数前に入っていますが何故なのでしょうか?
>>396 俺の XP IE6 ではできる。
呼び出す側
<script>
var shell = new ActiveXObject("WScript.Shell");
shell.Exec("mshta.exe \"E:\\foo.hta?param=001\" arg1=bing arg2=bang");
</script>
受け取り側
<hta:application
id="foo"
/>
<script>
alert(location.search);
var args = foo.commandLine.split(/ /);
alert(args[1]);
</script>
>>400 function() {} //文
(function() {}) //式=実行できる
無名関数 括弧でググると色々出てくる。
無名関数(戻り値が必要ない場合も有る。グローバル領域を汚さない)
(function (window, undefined) {
〜
})(window);
>>400 意味というか、式として評価してもらう必要がある。
宣言ではオブジェクトが返ってこないから呼出せないよね。
例えば
function hoge () {...}
function () {...};
()がなかったとしよう。宣言と式。functionで始まるこのふたつをどうやって区別させる?
functionで始まると宣言文として解釈される。名前がなければテキストレベルで蹴られる。(構文違反)
functionを()で囲む(宣言できない)ことで式になる。関数式にするひとつの手段かな。
var jQuery=(function(){...
なぜ()なのか作者の意図は分からないけど、こんなことで混乱しちゃうのね。
ただの推測だけどjQueryの部分は行数が多いからわかりやすいようにとかじゃないのか
405 :
376 :2011/08/10(水) 06:45:57.47 ID:???
>>398 >397
自分で考えた定義というよりはいろいろ調べた上でまとめた結論です
抽象化は一般化と言ってもいいです
Objectが『(田中さん家の白くて元気で芸ができて…………な)ネコ』としたらClassは『ネコ』を表すものです
型のようなものだと思います
それをどう作成、利用できるかはまた別な話で
Class自体の概念がないと単純に言ってしまうのは、特に初心者の考え方を狭めてしまうと思います
「JAVAのような」Class「では」ないというだけだと思います
そういう定義でいうなら大抵の言語にあるだろ しかし「JavaScriptにもclassはありますよね?」に関しては 表現としてclassは存在するものの言語的にclassと名言されてる物は無い だから無いという答えが多い
gdgd言ってないでclassの使い方教えろや
>>405 クラスって概念でjavascript見ると
基底オブジェクト objectクラス→を継承したクラス ネコ→のインスタンス (田中さん家の白くて元気で芸ができて…………な)ネコ
ではなく
基底オブジェクト Dictionaryクラス→のインスタンス ネコ→のクローン (田中さん家の白くて元気で芸ができて…………な)ネコ
になるだろ?
んでその見方で言うところの基底オブジェクトのインスタンス(のクローン*n)をクラスとして使えば使えないこともないってだけで
わざわざクラスの概念がないところにまでクラスの概念を持ってきて使うかどうかの話
めんどくさいから クラスベース:主記憶上に展開されて<いない>設計図(クラス)から実体(インスタンス)を生成 プロトタイプベース:主記憶上に展開されて<いる>設計図(オブジェクト)をコピーして別の実体(オブジェクト)を生成 とか言っておけばいいんじゃね?
>>405 あなたの定義でいうクラスの無い言語などない。アセンブラに
だってある。だからまったく無意味な質問だよね。
>>407 classはJavaScriptの予約語として定められていて何にも使途がないので、
書いたとたんに構文エラーになってそれでおしまい。
412 :
396 :2011/08/10(水) 13:37:50.40 ID:???
>
>>401 ありがとう。
でも同じことをやってもウチの環境では値をとれませんでした。
ソフトのバージョンの問題ではないのかもしれないので、もうちょっと調べてみます。
413 :
Name_Not_Found :2011/08/10(水) 13:52:35.94 ID:db+6vmjb
>410 ですから初心者に誤解を与えないようにすべきです JavaScriptは自由な書き方ができる言語なので、 「こういうものだ」とあまりにも強く思い込ましてしまうのはよくないと思います
html文書のbodyの中から、タグ付けされていない文字列をまとめて取り出したり、いじったりするには、どんなDOMを書けばいいでしょうか? 例えば、 <body> <b>title</b> <span style="font-size:small">description</span> This is contents. </body> この中の"This is contents"だけを抜き出したり操作したいのですが…。
>>413 言いたいことはなんとなくわかるけど、ECMA標準ドキュメントを書き換えたいのか
2chの誰かのレスを訂正したいのか、なにがしたいんだ?
416 :
414 :2011/08/10(水) 14:42:34.46 ID:???
>>415 自分へのレスだと思っていいですか?
書きたいのは暗記補助用のための俺得スクリプトです。
"hello. my name is jonus." これを
"h----. m- n--- i- j----." こうしたいんです。
で、どこかのキーが押されてる間だけは、ハイフンなしの元の文章に戻るようにしたいんです。
どうしてタグなしの文字列を取り出したいのかというと、
Ubuntuで使ってるメモ帳のhtmlコンバート機能だと、生の文章、つまりハイフンで隠したいところがタグなしで出力されてしまうんですよね。
違うだろw
>>414 ,416
document.body.childNodes をforループで回す
レスアンカー振ってあるのに何で勘違いしたんだろう
419 :
414 :2011/08/10(水) 15:15:43.91 ID:???
すいません。 レスの内容的に、アンカー振り間違えたのかと。 ありがとうございました。
急に初心者の心配をしだしたけど だったらなおさら勝手に言葉を作るのはどうなの 誤解、混乱の元でないかい クラスのようなもの、という表現で止めておくのではなく クラスがある、と言い切らないと気が済まないようだけど そもそもクラスがあるとかないとか、クラスという言葉を聞いて話が通じるような初心者なら 心配しなくてもいいんでないかい 思い込みの固定観念で凝り固まっているような誰かさんのような人には どう言っても誤解というか認識を変えるつもりはないだろうから無意味だし
やだ、誰かと戦い始めたわ。
JavaScript にクラスベースオブジェクト指向言語でいうところのクラスという概念は存在しませんが、 サイ本では便宜的にクラスという言葉を使っています。 JavaScript でクラスを模倣する際に使われるのがプロトタイプ (ペアレント) です。 クラスベースオブジェクト指向を多平面モデルで説明するのなら、プロトタイプベースオブジェクト指向は平面がひとつしかないという感じでしょうか。 オブジェクトとそのプロトタイプは、平面間の垂直関係ではなく、 同一平面内のつながり (プロトタイプチェーン) として表現できます。
何も始まってさえいないよ。
425 :
Name_Not_Found :2011/08/10(水) 20:14:16.67 ID:iHt7W/sK
>>420 同意
クラスの概念がわからないプログラミング初心者にはその通りだし、
他言語でクラスの概念は理解しているがJS初心者の人には
いわゆるクラスディレクティブはないですが
一般の関数をコンストラクタ関数として扱いnewすることで
インスタンスを作ることが出来ます
クラスではないので一般的な継承はありませんが
プロトタイプでつながってます
でいいと思う
プロトタイプでつながってますw
プロトタイプでつながってます JS初心者ならこの言葉で絶対つまづく
そして中級者以上はズッこける
具体的にどういう風につながるのかちゃんと理解できるまでに 相当時間かかりましたわ
430 :
Name_Not_Found :2011/08/10(水) 21:49:05.69 ID:iHt7W/sK
じゃあなんて言えばよかったんだよう
431 :
Name_Not_Found :2011/08/10(水) 22:08:42.62 ID:8JpNup1V
質問です var B = new Array(); B[0] = a; B[1] = b; とすると、出力結果が{a b}のようになります 縦に配列を作りたい場合はどうすればよいでしょうか
>>431 何を求めているのか定かではないので a, b のコードと期待する縦の配列も例示して
JavaScriptにあるのはコンストラクタとプロトタイプチェーン。
>>431 2次元配列の事をいってるのか・・・?
縦の配列ってなんだ
>>431 var B = new Array();
B['a'] = 0;
B['b'] = 1;
表示じゃね?数学的なw
少なくとも
>>435 で無いことは確かだろう。
>>431 の質問の意味がわかったぞ
{a b} ではなく
a
b
みたいに出力したいんだコレ。
18秒負けた
そもそも配列をどうしたら{a b}みたいな表示になるのか。
JavaScript にクラスがあるかどうかなんて、どうでも良くなるなw
配列に縦も横も無い
>>431 ['a', 'b'].join('\n');
>>442 document.write() で出力してるかもしんないよ。
>>376 ,405
> alert(Document)やalert(Element)とすると[object class]と表示されます
それは [[Class]] であって「クラスベースにおけるクラス」とは異なります。
詳しくは
>>389 ,423を読んでいただくとして [[Class]] とはオブジェクトの種類を表しています。
Object.prototype.toString を利用することで対象のオブジェクトが持つ [[Class]] を確認することができます。
Object.prototype.toString.call(new Array()); // [object Array]
Object.prototype.toString.call(new RegExp()); // [object RegExp]
Object.prototype.toString.call(new Function()); // [object Function]
これだけ見るといわゆるクラスのように見えるかもしれません。では次のコードはどうでしょう?
function Sample () { }
Object.prototype.toString.call(new Image()); // [object HTMLImageElement]
Object.prototype.toString.call(new Audio()); // [object HTMLAudioElement]
Object.prototype.toString.call(new Sample()); // [object Object]
これでも [[Class]] をクラスと断言できるでしょうか。
例えるなら、[[Class]] は HTML におけるclass属性のようなもので読み取り専用の内部プロパティです。
個人的には「Object型のデータだけが持つ特別な型」と認識しています。ECMAScript に「Array型」はないですが「Object型かつ [[Class]] が "Array" となるもの」は一つしかありませんから。
# Object.prototype.toString を typeof 演算子の代わりに使うのは間違っているとは思いますが…。内部的にObject型に変換しているので new String とStringリテラルの区別がつきません。
これはさすがにウザい。 ほとんど仕様書に書いてあることだし。
>>445 逆に聞くけど、仕様書に書いてないことってあるの?
仕様にないものは実装依存だから
仕様書を解読できるなら
>>423 で解決してるはず
解決してないってことは…いわずともわかるよな?
450 :
446 :2011/08/11(木) 01:23:56.35 ID:???
obj.style.width = '120px'; obj.style.height = '24px'; これを obj.style = { width : '120px', height : '24px' } と書けないのはなぜ?
知識と認識の不足が生み出した結果の式が後者のものだから、かな。
>>451 styleが新しいObjectになっても構わないのなら。
<input name="text1" type="text" onKeyPress="hoge()" value="入力欄"> エンター押すと処理hoge()をするってしたくて上を書いたけど反応しません どうしたらいいですか?
↑ごめんタイプミスだった スルーして
すみません、質問なのですが、 最近私が管理している掲示板にスクリプトが書き込まれ、それを読み込んだ携帯電話のみが強制リセットしてしまいます このスクリプトはどういう意味なのですか? <script> $=(Object.toString=Object)+1 </script> これだけで携帯を判別してリセットさせることができるのでしょうか?
このスレの vol.86 にも同じ様な質問来てるね。 NetFront のブラウザで落ちるらしい。
>>456 どこの掲示板か、URLを教えてもらえますか?
力になれそうなので
459 :
Name_Not_Found :2011/08/11(木) 17:39:33.29 ID:XFi90rDr
>>456 掲示板に書きこまれたスクリプトが動いちゃうのはどうなのよ
460 :
Name_Not_Found :2011/08/11(木) 19:50:54.79 ID:zJWej4ZF
フォームだとサブミットボタンをクリックしてもエンターを押しても サブミットイベントひとつで両方に反応しますが リンクの場合もクリックでもエンターを押してもひとつで両方に反応するようなイベントタイプはありますか? XULのオンコマンドみたいな感じの
クリックイベントじゃね
>>456 ObjectとObject.toStringで無限に再帰してる・・・のかな?
よくわからん。普通はそうはならない気がする。
判別してるというか、単にそのコードを動かすと暴走する機種が存在し、
攻撃者はそれを知っていたというだけの事でしょう。
そもそも<script>が貼れる掲示板が異常。
Feature Listをカスタマイズしてる人いたら教えてくらはい デフォだとTabが3つまででそれ以上はliを増やしてもダメなんだですけど これをliで自由にTabを追加できるようにしてる人とかいないすか?
obj.style = { width : '120px' } alert( obj.style.width ) 空なのはなぜ?
質問から50分で「なんか言えよ」とはどういうことだ ずっと張り付いてるとでも思ってるのかw
>>451 からノーコメントのまま去りそうな臭いがするので牽制してみました
別にいんじゃない?礼儀を正す必要もないでしょ 知らないところで頭を打てばいい
471 :
Name_Not_Found :2011/08/12(金) 13:33:08.72 ID:ftBY+0Am
論理演算子だと思うんですが "!!" ってどういう動きをするんですか? "=="と"==="の違いと同じですか?
boolean化する為の否定の否定 !!1 !1->false !!1->true
あーboolean化するためなんですね、有り難うございます。
474 :
Name_Not_Found :2011/08/12(金) 15:53:50.43 ID:fumOBeko
jQueryのセレクタで、不等号を使ったりすることってできる? 以下のような要素があるとき、1-2だけ選択するという。 <div id="hoge_1"></div> <div id="hoge_2"></div> <div id="hoge_3"></div> 下のようなfor文を使う方法でなくて。 大量にある場合、処理が止まる可能性があるので。 for (i=1;i<3;i++) { #('hoge_'+i).selecter }
>>474 一部を数値比較するならプログラミングの範疇じゃないかな
カンマで並列化するぐらいか
>>474 答えになってないけど、それやってる時点で何か間違ってる気がする
使いたい要素のみに同じクラス名を指定しておけばいいんじゃないの?
477 :
Name_Not_Found :2011/08/12(金) 21:54:58.96 ID:q/W2HFBJ
ホームページを製作しているのですが、IEブラウザで表示するとJavaScriptのエラーが発生するのですが、原因が分かりません。 jQueryを使用したJavaScriptを2種類、それを1つのページに表示させようとするとエラーがでます。 一つは「cross slide」、もう一方は「smooth navigational menu」というJavaScriptです。 「cross slide」を<body>内の上部に、「smooth navigational menu」を<body>内の下部に設置すると、 「cross slide」のスクリプトエラー(オブジェクトでサポートされていないプロパティメソッドです。コード:0と表示されます)が発生します。 逆に、「smooth navigational menu」を<body>内の上部に、「cross slide」を<body>内の下部に設置すると、エラーは発生しません。 次の書き込みでエラーが発生している部分の例をを記述します。 また、使用しているソフトの関係上、本来<head>〜</head>内に記述するscriptのタグを <body>〜</body>内に記述している点をお伝えしておきます。
上述した「cross slide」のエラー発生部を記述します。 <script type="text/javascript"> $(function() { $('#banner').crossSlide({ ←このラインでエラーが発生 sleep: 5, //sec fade: 1 //sec },[ { src: './image/banner_001.jpg' }, { src: './image/banner_002.jpg' }, { src: './image/banner_003.jpg' } ]); }); </script> よろしくお願いします。
<script src="jquery.js"></script> <script src="jquery.cross-slide.min.js"></script> <script src="jquery.js"></script> <-- いらん <script src="ddsmoothmenu.js">
480 :
477 :2011/08/12(金) 22:44:55.68 ID:???
早々に書き込みすいません。自己解決しました。 原因は<body>内の「cross slide」と「smooth navigational menu」それぞれに、 <script type="text/javascript" src="./jquery.min.js"></script> の記述をしていたためでした。 同じスクリプトを<body>内に2つ記述をしてしまったのでおかしくなったみたいです。 勉強不足でお騒がせしました。失礼します。
481 :
477 :2011/08/12(金) 22:46:18.24 ID:???
>>479 あっ、まさにそのとおりでした。
書き込み遅れて申し訳ございません。
ありがとうございます。
>>465 クリームパンとコーヒー牛乳買ってきて。
>>479 これが本物のエスパーってやつかwwwwワロタwwwwwwww
なんでよ。推測、回答には十分な情報が提示されてるし エスパーでもなんでもないしょ。
486 :
Name_Not_Found :2011/08/13(土) 00:13:38.06 ID:c5dXM+51
google AJAX Feed APIでrssをサイトに表示するのに、教えて下さい。 今現在のソースは、こんな感じです。 //RSS google.load("feeds", "1"); function initialize() { var feed = new google.feeds.Feed(""); feed.setNumEntries(5) feed.load(function(result) { if (!result.error) { var container = document.getElementById("feed"); for (var i = 0; i < result.feed.entries.length; i++) { var entry = result.feed.entries[i]; var div = document.createElement("li"); var a = document.createElement("a"); a.href = entry.link; a.target = "_blank" ; var list = entry.title; var cat = entry.categories; a.appendChild(document.createTextNode(list)); div.appendChild(document.createTextNode(cat)); div.appendChild(a); container.appendChild(div); } } }); } google.setOnLoadCallback(initialize); 当然ですけどカテゴリー名がそのまま表示されています。 それを各カテゴリーに対応したアイコンに置き換えて表示したいと考えています。 宜しく御願いします。
487 :
486 :2011/08/13(土) 00:18:16.40 ID:c5dXM+51
例えば、 iphoneってカテゴリーのエントリーがあれば、iphone.jpgを表示したいとかそんな感じです。 カテゴリーとアイコンはあらかじめ所定のものだけと決めるつもりです。
488 :
Name_Not_Found :2011/08/13(土) 00:26:49.53 ID:F9ewc6mx
>>487 文字列見て要素にクラス名つけるか、画像貼る用の要素作って
あとはスタイルシートで!
489 :
477 :2011/08/13(土) 00:56:10.68 ID:???
またまた、すいません。さきほど質問させていただいたものです。 「smooth navigational menu」について教えていただきたいことがあります。 「smooth navigational menu」をwidth:200;にし、width:200;のcontainerの中に入れたのですが、 左端から約50pxほど離れてしまいます。下位メニューを表示させると、その左側にまた同じくらいの余白ができます。 実際には余白と言うか、background的な色が表示されていて、メニュー本体が離れている感じです。 さらに下位メニューを開くと、その余白が2つ分ぐらいに増えて離れて表示されます。 さらに下位につれて、同じように余白がどんどんと大きくなっていきます。 「smooth navigational menu」はwidthを変えた以外には、jsもcssも公式のままです。 IEでもFireFoxでも同じ症状になります。 なにが原因なんでしょうか?
>>488 出来たら、もう少し詳細に教えていただけると嬉しいです。
それか、ぐぐって幸せになれるワードを・・・
>>490 「CSS 画像」で検索すればいいんじゃないの
492 :
Name_Not_Found :2011/08/13(土) 09:18:25.58 ID:F9ewc6mx
>>490 中途半端ですまんこ
クラス名を、文字列と呼応するようにオブジェクトに格納しておいて
要素が書かれるときに、そのクラス名も一緒に書く
あとはCSSでなんとかなるじゃん?
>>474 nth-child(-n+2)
とか
:not(:last-child)
とか
jQueryでためしてないから、できるかわからんけど
フンガッ!
>>486 > div.appendChild(document.createTextNode(cat));
ここでカテゴリを挿入してるわけだから、img要素ノードを挿入するように変更すればいい
496 :
486 :2011/08/14(日) 04:01:45.77 ID:???
解決できました。 取得したカテゴリー名をcase文でアイコンのurlを割り当てて、 img要素追加で。 かなりゴリゴリですが・・・
すみません。初心者なのでとても基本的な質問かもしれませんがよろしくお願いします。色んな解説サイトを見て試行錯誤したのですが敵いませんでした。 【環境】WindowsVista, Google Chrome(13.0.782.112) 【期待する結果】下記のスクリプトはフォームにパスワードを入力してログインボタンを押し、該当すると他のページ飛ぶというものなのですがログインボタンを押さずともENTERキーを押しただけで入力項目を検証して他のページ飛ばすということは出来ないでしょうか? 【サンプルコード】 <head> <script language="JavaScript"> <!--function myButton(){ myPassWord = document.myFormText.myFormTextPass.value; if ( myPassWord == "pass" )location.href = "hokano.html"; else alert( "パスワードが違います!" ); } // --> </script> </head> <body><form name="myFormText">パスワード: <input type="password"name="myFormTextPass"><input type="button" value="ログイン" onclick="myButton()"> </form></body>
498 :
497 :2011/08/14(日) 13:03:01.86 ID:???
すみません。語弊があったので修正 ログインボタンを押さずともENTERキーを押しただけで入力項目を検証して他のページ飛ばすということは出来ないでしょうか? ↓ ログインボタンを押してもENTERキーを押しても入力項目を検証して他のページ飛ばすということは出来ないでしょうか? こちらの間違いです
type="button"ではなくtype="submit"にして formのonsubmit属性でmyButton関数を呼び出す
>>497 関係ないけど、それソース見るだけでパスワードが分かっちゃうからあんま意味なくね?
location.href = myPassWord + ".html"; という風にした方がいいんじゃないの?
501 :
497 :2011/08/14(日) 13:19:54.84 ID:???
>>499 ありがとうございます!!
それって以下の記述でよいのでしょうか?
<form name="myFormText"onsubmit="myButton()">パスワード:
<input type="password"name="myFormTextPass"><input type="submit" value="ログイン" onclick="myButton()">
</form>
一応これで試したのですが入力内容がクリアされるだけで他のページへ飛ばないのです。。
何か記述が間違っているのでしょうか?
お手数かけてすみません
>>500 簡易的なもので大丈夫みたいです
対外的に「壁」程度のものがあればよいと上の人間から言われたので。。
今のままだと、壁というより風呂敷程度だけど。 onsubmit="myButton(); return false;" 社内利用なら、管理者に BASIC 認証を掛けてもらった方が良い気がする。
504 :
497 :2011/08/14(日) 13:51:59.26 ID:???
>>503 ありがとうございます!!!出来ました!
会社とかではなくて大学のゼミのHPです。
まあ、見られても問題はないけど一応内々でやりますよって感じみたいです。
今度CGIのパスワードとかにも挑戦してみます!
ありがとうございました!!!
md5 を使用して、JavaScript だけで実装するとして、具体的にどうするだろう。 飛ばす先の URL をソースに書いたら、パスを暗号化する意味ないし。 閲覧にパスを掛けたい html 内で認証する様にしても、ソースを直接見られたら意味ないし。
html をパースしながら script タグを見つけたとき、eval()、Function() にコードを渡したとき。 まだあるかもだけど、大体察しれ。
終わってるけど一応
簡易パスワード認証の定番は
>>500 だね、小学生の頃に意味もなくHPにつけてたの思い出した
パスがアドレスに表示されるのが不衛生なら、パスのMD5の値をURLにするとか
運良く見つかってというパターンもあるし、PHPとかにした方がまだ安心
それこそ2,3行で済むしね
英語のhtmlを、一語ごとにタグで修飾したいんですが、どうすればいいですか? 一度splitで配列に格納して、配列ごとに修飾してからDOMに入れ直してみたんですが、うまくいかなくて…
<p>の中身を得てremove、中身をsplitして、 create&appendでいいんじゃない? 1つ1つ解決していけばうまくいく筈。
RangeとかsplitTextとか?splitTextのほうが楽かな
ブラウザのJavaScript有効率とか最近のデータないですか? セキュリティ意識からオフにする人もいるみたいなんですが、 最近の事情はどんなかんじなんでしょう? 98%ぐらい有効であってほしいですね。
質問させていただきます。 test1.htmlの中にあるid="test1" の値が入った状態で そのページのリンク先(test2.html)をクリックすると、test2.htmlのid="test2" に id="test1" と同じ値が入った状態でページを開くことは可能でしょうか? もし可能であるならば、どのように記述すればいいのか、ご教授お願いします。
無理です。 サーバ側でやってください。
>>516 クッキーと動的なページ生成でいけるかも。
>>516 XMLHttpRequest で test1.html を読み込む
サーバ側でやるのが普通だけど、 短い簡単なデータならJavaScriptだけでもいいかもな。 test1.htmlからtest2.htmlのリンクするURLの後ろにtest2.html?データって感じでつけて。 あとはqueryString取得してごにょごにょすればよい。
test1.html と test2.html が同一ホスト上にあるなら簡単にできるでしょ。
>>516 です
すいません、補足ですがtest1,htmlはローカルでtest2.htmlは自分とは全く関係ない人のwebページです
じゃあ無理。
userscript使うのが一番楽だろうな。
Windowだかbodyのonload時にbodyより下位にある<div>タグでくくられたhtmlデータをinnerHTMLで書き換えたいんですが何か良い方法ないですか? writeしか思い付かないので
書き換えればいいじゃん
527 :
525 :2011/08/15(月) 20:14:03.73 ID:???
>>526 どうやって?
要はページ開いた時に日時を文字列として表示させたいだけなんですが
loadの仕方が分からなくて
onloadの時にそのDIVタグ取得してinnerHTMLで書き換えるだけだろ?
>>522 Proxomitron を使ってみる?
getElementById と、window.onload もしくは、addEventListener load とかでくぐってみたら?
var Hoge = { a:'foo', b:function(){return this.a} }; alert(Hoge.a); alert(Hoge.b()); これでHoge.aを呼び出せないように(privateに)したいのですが、 どんな感じに書けばいいでしょうか?
クラスのように可視性をつけたいならあたりまえだけど連想配列じゃダメ。 var Hoge = function() { var a = 'foo'; this.b = function() { return a; } }; var hoge = new Hoge(); hoge.a; // エラー hoge.b(); // 'foo'
534 :
531 :2011/08/15(月) 23:52:44.23 ID:???
以下のように特定のファイルが存在することを レスポンスヘッダを受信した時点で判定して次の処理を行いたいけど var req = new XMLHttpRequest(); req.open('GET', 'aaa.html', true); req.onreadystatechange = function (aEvt) { if (req.readyState == 2) { if (req.getResponseHeader("Content-Type") == "text/html") { なんらかの処理; } } }; req.send(null); 結局aaa.htmlはレスポンス・ボディ受信も行ってしてしまう レスポンスヘッダで判定した時点でaaa.htmlの受信を終わらせる方法はないでしょうか?
サーバー側で全部いっぺんに出力してるんじゃないの
GETでリクエストせずにHEADで受け取ればいい
HEADなんてものがあったのか… やっぱりGETやPOSTだとどうしても全部取得する動きになるみたいですね HEADで試してみます、ありがとう
練習でjQueryとかのライブラリを使わないでサイトを作ろうと思っています オブジェクトがアニメーションでぐりぐり動くサイトにしたいなと思ってCSSをjsから書き換える方法を調べているのですが 今時はどのような方法でcssをいじくるのが普通なのでしょうか 今まではobj.style.left="100px"という風に直接値をいじくったり document.styleSheets[0].addRule("#content .navi li","{display : none}",document.styleSheets[0].rules.length); で新しいルールを追加していたのですがパフォーマンス上の性能が不安です アニメーションはcss3のanimationでやるからミリ秒単位で書き換えるって事はしないにしても 沢山addRuleするとその分重くなる・・といった事があるのかもと不安です
スタイルオブジェクトのプロパティを随時書き込みでいいんじゃないの 負荷が気になるならテストしてみようよ
すみません。また初心者なのでとても基本的な質問かもしれませんがよろしくお願いします。頑張ったのですが挫折しました。 【環境】WindowsVista, Google Chrome(13.0.782.112) 【期待する結果】 スタイルシートをクリックで切り替えることは出来るようになったのですが、 更にひとつ前のページのスタイルシートの設定を最初に読み込んだ時に反映させたいのですがどういう記述にすれば良いのでしょうか? history.backを使うことまでは理解したのでですが具体的な記述がわかりません。 ちなみに前のページのJavascriptも同じものが書かれています。 【サンプルコード】 function replace_css(id,url){ if(!document.getElementById) return false; var element = document.getElementById(id); if(!element || !element.cloneNode) return false; var new_node = element.cloneNode(true); new_node.href = url; element.parentNode.replaceChild(new_node,element); return true; }
detachEventとかremoveEventListenerって、 アクション中に任意のタイミングでイベントを終了させる時ぐらいしか使いみちないですよね? 普通に書いてて自分のスクリプトの書き方だとどうも使う機会がないのですが、 1つのattachEvent、addEventListenerにつき、1つdetachEvent、removeEventListenerが必要 というわけではないですよね?
> アクション中に任意のタイミングでイベントを終了させる イベント捕捉のために取り付けた関数を削除ね。言いたいことがいまいちわからんけど イベントを終了とか、何か違う。 「1つに1つ」はいらないと思うけど、不要が明らかなら削除でいいんじゃね。 各loadイベントとか、呼出しと同時に削除しとかないと気持ち悪くないか。
>>542 window.onunload 時に全てのイベントを削除するのは基本だと思う
なんか、片付けないとメモリ解放してくれなくて、どんどん重くなるとか
546 :
542 :2011/08/16(火) 15:13:34.96 ID:???
いやそれはIE6での話しじゃないのか
もうonunload時にすべてのグローバル変数にもnull代入
FC2ブログとかアメーバーブログとか、 ページ最上部に固定のメニュー(検索窓が設置されている所)がありますけど、 あれってJavaScriptでつくるんですか? この部分をposition:absolute; top:0;にして、 onScroll時に、getBoundingClientRect().topあたりを使って、 合わせるやり方しか思いつきません。 その場合スクロールするたびに、再描画みたいな感じでチカチカするのですが、 ブログのほうではそういった挙動ではないので、なんか別の方法でやってるんでしょうか?
css fixed
551 :
549 :2011/08/16(火) 20:17:40.87 ID:???
>>550 position: fixedっていう意味ですね?
できましたありがとう。
IE8 の互換表示モードでは効かないけどね。
すみません、 Browser: { IE: !!(window.attachEvent && !window.opera), の"!!"はいったいどういう意味なのでしょうか? "!"だけだと否定とか分かるのですが
否定をさらに否定してみろ つーかスレ内ぐらい探すとかしろ
ころころデザインを変えるページ用に、 ある部分だけデザインを使いまわせるようなライブラリを作っています。 <script type="text/javascript" src="header.js"></script> こんな感じの使い方を想定しています。 最初はHTMLを毎回書きなおす感じにして、JavaScriptでHTML出力などの操作はしないようにしてたのですが、 それだと大変なので、スタイルシートと、JavaScriptを取り込んでHTMLはJavaScriptで出力するようにしました。 次にスタイルシート取り込みの工程もついでになくそうと(たいした手間じゃないですが)、 JavaScript単体の取り込みだけで使えるように、スタイルシート部分もJavaScriptにゴリゴリ書きました。 その結果かなりカオスなコードになってしまったのですが、 ファイル1つでOKみたいにする場合は、こんな感じになってしまうものですよね? あまりのカオス具合に自分が間違ってる気がしてなりません。
サーバー側でやるのも有り。PHP jsOFFの閲覧者も考慮すべき。
>>555 そんな同意を求めることに何の意味がある?
他人がどうあろうと、自分が不満に感じるなら、少しでも改善を試みるべき。
「できた!」と思っても決して満足することなく、常に「これで良いのだろうか」と自問自答を繰り返す。
このスレの回答者は皆そういう人たち。
>>558 仕様で実装依存が認められているところは、全てのブラウザのバージョン毎に挙動を確認し、
ベンチマークの結果に 1ms でも有意な結果が現れれば、その原因を突き止める。
次の仕様の策定に向け、常に最新の流行にアンテナを張っておき、自らも新たな潮流の源となる。
ここの回答者は皆実践してる。
どんだけハードルあげたいんだよwww
イベントハンドラとイベントリスナーの違いって何なんでしょうか? イベントに対する関数の登録方法とが違うこと( a.onclick=・・・ or a.addEventListener(・・・) )と イベントハンドラは1つのイベントソースに対して1つしか関数登録できないけど、イベントリスナーはいくつでも登録できるということだけ知っています。 イベントのバブリングなど、内部的な動作にも違いはあるのでしょうか?
他のライブラリ使ってる場合を考えたら、リスナー使う
563 :
Name_Not_Found :2011/08/17(水) 09:55:25.54 ID:d6HS56WA
>>561 ブロードキャスターがキャストする
オブジェクトにおけるイベントの発生通知を
受け取る(聞く、Listenする)のがイベントリスナー
で、イベントリスナーには、受け取ったときにする処理を
関数として複数登録または削除できて
処理系でeventオブジェクトを受け取ることが出来る
564 :
Name_Not_Found :2011/08/17(水) 10:44:06.23 ID:pI1JT145
質問させてください
下記URLのソースの文法がわかりません。
http://webos-goodies.jp/archives/getting_started_with_webgl.html 理解できていない部分は、"$"の使用方法です。
$(function() {
var canvas = $("#screen").get(0);
$.each(["webgl", "experimental-webgl", "webkit-3d", "moz-webgl"], function(i, name) {
:(以下省略)
2ツ目の"$"部分に関しては、HTMLファイルのid="screen"の要素を取得していると思っていますが、
それ以外の、他の2つの部分の文法がよくわかりませんでした。
何か参考になるページを教えていただけないでしょうか?
566 :
564 :2011/08/17(水) 11:03:04.13 ID:pI1JT145
ありがとうございます。 jqueryを調べてみます。
Firefox5から6にアップデートしたら一部Javascriptが使えなくなったのですが、何か変更があったのでしょうか?
「一部」て何?それを書かない意味が分からんのだが。
【環境】Safari(iphone) 【何をしたのか】なし 【エラーメッセージ】なし 【期待する結果】 キーボードのBを1回押した瞬間にB.mp3が再生される。(Bが押し続けられている場合は一度のみ再生) キーボードのNを1回押した瞬間にN.mp3が再生される。(Nが押し続けられている場合は一度のみ再生) iphoneにはキーボードがないのでBLUETOOTHのキーボードが接続されていると仮定。 赤色に塗られた丸円をシングルクリックすると1回押した瞬間にB.mp3が再生される。 (赤い丸円が押し続けられている場合は一度のみ再生) 青色に塗られた丸円をシングルクリックすると1回押した瞬間にN.mp3が再生される。 (赤い丸円が押し続けられている場合は一度のみ再生) です。 意味不明あればすみません。真剣に障害のある方のコミュニケーションを取れる手段として考えています。 ご指導ください。
572 :
570 :2011/08/18(木) 13:04:47.62 ID:???
573 :
Name_Not_Found :2011/08/18(木) 19:15:29.91 ID:SXfEa53T
スクリプトのコーディングに関した質問でなくて恐縮ですが、 フラッシュアップローダってありますがあれはiPhoneだと使えないことになるんでしょうか? それをふまえて、 ・モダンブラウザ以上のブラウザ+PC,android,iPhoneすべてで利用可能 ・アップロードプログレスバーとアップロード後サムネイル表示可能(アップロード失敗の捕捉可能) の条件で、JSを使った非同期型のアップローダは皆さんどれを利用していますか? 自分は jquery-transmitってのを考えているんですがflash利用ということで 上記のiPhoneのことが気になっています すみませんがご意見ください、よろしくお願いします
574 :
Name_Not_Found :2011/08/18(木) 19:23:55.04 ID:IS4RZIGu
そもそもモバイルのwebkitはファイルアップロードできるのかな?
575 :
Name_Not_Found :2011/08/18(木) 19:55:04.81 ID:+XL9L7wb
コンストラクタじゃない普通の関数内で function hoge(){ this.piyo = "fuga"; } みたいにしてるのはどういう効果があるんですか?効果というか目的というか
576 :
573 :2011/08/18(木) 20:09:30.03 ID:SXfEa53T
>>574 え!できないんでしょうか!?
ウソ!…と思って調べたら本当に出来ないみたいですね、信じられない…
念のためandroidのシミュレータで調べたらandroidは大丈夫なんですね
これはどう考えたら良いんでしょうか
webkitはアップロード全面禁止してるってことでしょうか
html5で書いたアップローダなら大丈夫ってわけではないですよね?
titaniumかなにかでアプリ開発するしかないのかなぁ… ショックだ
iOSのsafariからのアップロードは無理、html5だろうがファイル選択自体ができない
createElementって遅いですよね? innerHTMLに書いたら可読性悪いですが早いです。 イベント追加するとなるとcreateElementのほうがやりやすいですけど、 innerHTMLで適当なidやclass名ふってonload時にそれらを探して登録することもできますよね? この辺のDOM追加操作やそれに伴うイベント追加なんかの操作方法は、 好きな方法でやればいいでしょうか? なんかもっと高速で普遍的に使われてるDOM追加方法があれば知りたいですが、 なんかあったりしますか?
580 :
578 :2011/08/18(木) 21:04:05.38 ID:???
>>579 高速化のためのアドバイス大変参考になります。
詳細なURLまで載せていただきありがとうございます。
早速実践してみます。
load後のなにかのイベントで、画面作ったりするときに、innerHTMLだとDOM構造が読み取れるようになるまでに若干タイムラグがあって、直後にgetElementってやると失敗するときあるじゃん ちゃんとcreateElementってやった方が確実安全、速度も悪くないよ そいえば6とか昔のIEは遅かった記憶がありますね。当時のFFやWebKitの数十倍ぐらい差があったような。
582 :
573 :2011/08/18(木) 21:10:03.34 ID:???
>>577 うわ、マジですか
これ以上はスレ違いになるので他のスレに移動します
ありがとうございました
>>581 の「失敗するとき」の例を挙げてもらえませんか?
584 :
Name_Not_Found :2011/08/18(木) 21:26:04.47 ID:IS4RZIGu
>>576 androidのchromeもwebkitだよ
手元ので試してみた
<input type="file">はちゃんと表示されるしファイル選択も出来たけど
PHPにPOSTしてみたら、$_POSTも$_FILESも空だった
>>578 querySelectorなんかのほうがよほど遅い気がする
getElementByIdあたりならまだしも
>>584 うちのドロイド君はアップロードちゃんとできてるよバージョンはAndroid 3.1
メールに画像添付してごにょごにょ
587 :
573 :2011/08/18(木) 22:06:25.58 ID:???
>>584 情報ありがとうございます、chromeもなのかぁ…
>>585 バージョンで違うんですね
>>586 mmsを使う方法を見つけたんですが、それだとiPod touchが解決できないですよね
うーん、titaniumの勉強するしかないぽい
本当にありがとうございました、js関係ないのに長々すみませんでした
>>575 どう利用してるか見ないと目的なんてわからんよ
普通にhoge()と実行してるならthisはグローバルオブジェクト。
>>572 サウンド関連らしきコードしか見当たらないんだが・・・
ゼロから教えれという事ですか?
onkeypressとonclickとかで検索しなさい
>>583 innerHTML直後にgetElementByIdすると取得出来ずにエラー
setTimeoutとかで、1msぐらい遅延させるとうまくいくけど、不確実な解決策だよね
というか、getElementById ってエラーを返したっけ? null が返るのならわかるが
(null).styleとかやってるんだろ。
エラーになるのは腐った実装 仕様ではブラウザのUIとDOM操作もJSにシングルスレッド的同期させないといけない 非同期でいいのはレンダリング部分だけ
曖昧で申し訳ないんだけど1年ぐらい前のSafariでよくあったから、以後経験則的に避けてました。 仕様はちゃんとなってるんですねー、勉強になりました。 エラーってのは594さんの通り、取得出来きないまま続いた結果、ヌルに対するアクセスになって…というものです。
基本的にinnerHTMLのほうが速いんでしょ IEだとうまくいかない要素があるみたいだけど
>>597 どこを読んだらinnerHTMLが速いと読めるのか?
場合にもよるがCREATE作業はinnerHTMLの方が早い APPEND作業はinnerHTMLだと解析が入る分だけ固まるのでcreateElementの方が若干早い 単純なCREATE作業+APPEND作業は仕組み的にはinnerHTMLの方が 余計な処理が要らない分、まとめて処理できる分早くなる しかも実際使用する場面ではCREATE作業時間>>>>>APPEND作業時間になる事が殆どなので innerHTMLの方が早いのは確実だがそもそも用途によって使い分ける物だからな
情報が古い。古すぎる。
createで何十行使うよりinnerHTMLやwrite使って1行で書き出したいって気持ちはとてもよくわかる
今のブラウザでちゃんと比較した情報って知る限りではないな…
いつかの時点までは大量のエレメント書き出すにはinnerHTMLさんが速かった気がする
軽量化以外にinnerHTMLの使い道が無い
だからcreateなんちゃらとinnerHTMLとをゴリゴリ差し替えてるよ。
ある要素に入っている文字数によって、その要素のwidthを設定しているのですが、 同じ1バイトでも、iiiiiとMMMMMではだいぶ横幅が違ってきます。 またマルチバイト文字だと1バイト文字より横幅が広くなる場合が多いです。 ようするに文字数より、実際に表示される横幅によって指定したいのですが、 何か方法はないでしょうか?
フォント決め打ちで、文字種毎の幅データを持つとか。
フォント決め打ちとか能無しすぎるな <span id="hello">foo</span> alert(document.getElementById("hello").offsetWidth);
610 :
607 :2011/08/20(土) 17:15:19.78 ID:???
addEventListenerしたエレメントをremoveChildで削除したんですけど、 削除する前にremoveEventListenerで削除した方がいいでしょうか? それともJavaScriptエンジンが自動で削除してくれますか?
613 :
611 :2011/08/20(土) 18:20:32.67 ID:???
CSSの p { color:black; } を p { color:red; } のように タグ要素に対するstyleをJavaScriptで丸々書き換えたいのですが document.getElementsByTagName('p')をfor文でlength分 1つずつ全てのstyleを変更する方法しか思いつきません。 たとえばdocument.getElementsByTagName('p').style.color = "..."のように 一括してstyleの指定する記述や別の良い方法がありましたら教えてください。
>>614 document.styleSheets を書き換えてください。
bodyにクラスでどうだい。 <body class="black"> .black p { color:black; } .red p { color:red; } document.body.className="red"
>>616 目から鱗・・・
これでやりたいことが簡単に実現できました!ありがとうございます。
>>615 こちらは少し手間がかかりそうですね。
こちらでもできるように勉強してみます。
ありがとうございました。
関連:alternate stylesheet
jQueryを使用したホームページ作りに関して質問があります。 一つのhtml内に複数のjQueryのプラグインを使用しようとしているのですが、 "TinySlideshow"というプラグインのjsファイルを読み込むと、 他のjQueryを使用したjavascriptやプラグインが機能しなくなります。 この原因と解決策について教えていただきたいです。 よろしくお願いします。
jquery.min.jsを2回読んでる みたいなレスが前にどこかであった気がするが同じような事か?w
621 :
619 :2011/08/21(日) 17:57:44.21 ID:???
>>620 いえ、そういう問題ではないです。
TinySlideshowのjsファイルを読み込むと、
他のプラグインが動作しなくなるんです。
他のプラグインは共存できるんですけど、
TinySlideshowを読み込ませるとダメになるという状態です。
jqueryを使ったエフェクトについて質問です。 あるfadeIn()が終了してからこのslideDown()を処理する、というようなのは どう書けばいいんでしょうか?複数のエフェクトを書くと全てが同時に実行されてしまいました。
624 :
619 :2011/08/21(日) 18:31:45.54 ID:???
>>621 それもやったんですが、上手くいかないんです。
ちゃんと動作しなくなってしまって・・・。
>>624 どこかにUPして見てもらうしかないんじゃないか。
問題が発生する最小限のコードがあればいい
627 :
619 :2011/08/21(日) 19:17:33.91 ID:???
とりあえず別のプラグインで代用することにしました。 あまりにもプラグインを増やしすぎて、どこかで思わぬ干渉が起きているのかもしれません。 jQeryについて全然知らない素人なので、勉強を兼ねて色々いじってみようと思います。 お答えくださった方、ありがとうございました。
628 :
Name_Not_Found :2011/08/21(日) 19:38:59.60 ID:2+0X/6ue
<SCRIPT LANGUAGE="JavaScript"> <!-- myTime=(new Date()).getHours(); if(myTime>=5 && myTime<10){ myBack="haikei1.png"; }else if(myTime>=10 && myTime<17){ myBack="haikei2.png"; }else if(myTime>=17 && myTime<23){ myBack="haikei3.png"; }else if(myTime<5 || myTime>=23){ myBack="haikei4.png"; } document.write("<body background='"+myBack+"'>"); //--> </SCRIPT> 初歩的?な質問ですみません… 上のソースを外部jsにして動かしたいのですが、どうすればいいのでしょうか… <!--や</SCRIPT> をとったりしてみたのですが、そうやっても上手くいかないです…。
>>630 まずbodyの開始タグだけをwriteしようとかいう設計を再考する
のがいいんではないだろうか。
632 :
Name_Not_Found :2011/08/22(月) 19:05:23.69 ID:lElaMfbI
関数内で条件にあった場合に処理をするというようなとき function(){ if(true){ //処理内容 } } よりも function(){ if(false){return;} //処理内容 } のほうがいいんですか? 前者だと条件にあわなかった場合もifブロックの終わりを探しに行って無駄だとかそういう・・・ 機械は賢いから機械のことは気にしなくてもいいけど 前者だと入れ子が深くなって人間にとって見難くなるから後者のほうがいいとかですか?
>>632 速度の差なんてない。プログラムを読み書きする人にとって
理解しやすいのが良い。この場合、それだけが基準だね。
> 前者だと入れ子が深くなって人間にとって見難くなるから後者のほうがいいとかですか? その通り。 あと、falseのケースの方が圧倒的に多い場合。
635 :
632 :2011/08/22(月) 22:04:13.34 ID:???
>>630 window.onload = function(){
document.body.style.backgroundImage = 'url(' + myBack + ')';
};
document.body document.documentElement document.getElementsByTagName('body')[0] 質問者じゃないが、このあたりの使い分けがイマイチわからないんだよな
639 :
630 :2011/08/23(火) 04:31:30.91 ID:???
>>636 <input type=file> の change イベントを捕まえて、
方法1
iframeをターゲットにして<input type=file>を含むフォームを送信して、
フォーム送信の結果としてサーバから画像とファイルサイズを含んだペー
ジを返す。
方法2
FileReaderを使って読んでdata URLを生成して<img>やら<canvas>やらに
描画
642 :
Name_Not_Found :2011/08/23(火) 11:49:18.18 ID:7o1Ew6Mc
タグをinputやtextareaに変更して、文字列も変えたいのですが教えていただけないでしょうか?
編集するをクリックでhrefをvalueに 要素をnameに 編集するをsubmitに変換したい。
<p><a href="
http://mixi.jp ">mixi</a><a href="">編集する</a></p><!--タグは変更OK-->
<p><input type="url" value="
http://mixi.jp " name="mixi" /><input type="submit" /></p>
jsはコピペばっかりでよくわかってません・・・よろしくお願い致します。
>>642 ヒント: createElement, replaceChild
a要素はアンカーとして機能しないからspan要素にでも変えた方がいいね
Ext JSとかjavascriptのGUIフレームワークの話ってどこのスレでやればいいの? 専スレは見つからなかった
645 :
Name_Not_Found :2011/08/23(火) 19:14:06.47 ID:TzyUDO0X
windowではなくあえてdocument.defaultViewを使う必要があるのは getComputedStyle()を使うとき以外にはどういうときですか?
スタイルシートのスクロール移動するAPIってありますか? windows.scrollbyみたいな getElementByID("DIV_ID").scrolltop = ○○ こんな感じだと動いてくれるんですが、 この作りだと同期とれてない気がするので
ハア???
自己解決。 @で確実に移動し終わってから処理Aに入りたかったんだが どうやら同期は取れないらしい。 function move(){ var element = document.getElementById('test'); element.scrollTop = 100; //@ //処理A } <input type="button" value="move" onclick="move()"> <div id="test" style="height:100px;overflow-y:scroll">
>>649 もしかして処理AをsetTimeoutで実行すればいいんじゃね
せめて再現可能なコードを書いて欲しい
みなさんレスどうもです。
>>650 現状その手段を用いてます。
>>651 例えば@で移動先が描写の重い処理や回線速度が遅かったら
たぶん完全に表示しきる前にalert出ます。
>>652 勉強中な身うえ無理です><
DOMエレメントに変数を記録しておく事って出来ませんか 例えば addObj= document.createElement('div'); addObj.innerHTML="ほげほげ"; document.body.appendChild(addObj); で、どんどんオブジェクトを作っていく時、addObjに外部から見えない変数、オブジェクト、配列を記録させたいです serializeしてsetAttributeは思いついたのですが、serializeせずに直接データを入れる方法があればそっちを使いたいです
>>653 非同期になるはずはないんだけどね
書いてない他の処理が影響してそうな感じがする
>>654 クロージャに閉じ込めるかsetUserData
>>656 表面の描画は基本的にスクリプトと非同期
要素の位置を変更しても基本的に直ちに描画はされない
スクリプトで非常に重い処理をし続ければそれが終わるまで描画が実行できない
そのためのsetInterval
>>654 質問内容とは関係ないんだけど、
変数名にaddObjってのに違和感がある。
動詞は変数名じゃなく関数名に付けるべきだ。
var fuga = {}; fuga['日本語'] = 'ほげほげ'; fuga['英語'] = 'hogehoge';] シンプルでいいとは思うのですが、ハッシュキーにマルチバイト文字をいれたくないのですが、いい改善方法ないでしょうか?
fuga['ja'] = 'ほげほげ'; fuga['en'] = 'hogehoge'; 何がしたいのかがいまいちわからない。 多言語対応の定義をどうすればいいのかという事?
>>640 FileReaderの存在を知ったらすぐ作れた。thx
663 :
660 :2011/08/24(水) 18:03:37.67 ID:???
>>661 他にうまくデータ型を持てるように出来ればいいのですが、
もっともシンプルなのでできればハッシュがいいのですが、マルチバイトは避けたいので、
例えば多重配列にして、
var fuga = [
['日本語', 'ほげほげ'],
['英語', 'hogehoge']
];
なんかでもいいのですが、何かいい方法がないかと思って聞きました。
すみません。色々説明が下手で日本語も多分おかしいです。
fuga['ja'] = ["日本語", 'ほげほげ'];
fuga['en'] =["英語", 'hogehoge'];
やりたいことがわからんな。
全言語のリスト(selectとか)作るなら
>>663 の配列でいいと思う。
外部htmlファイルを読み込んでその中身を$htmlという変数に格納するところまではできたのですが この$html内の<body>から</body>の中身のみ取得して$textへ格納する正規表現はどう書けばいいのでしょうか?
>>665 正規表現使うよりdocument作ってbody内を取ったほうが良いと思う
var iframe, doc, $text; iframe = document.body.appendChild(document.createElement('iframe')); iframe.style.cssText = 'position: absolute; top: -1000px'; doc = iframe.contentWindow.document; doc.open(); doc.write($html); doc.close(); document.body.removeChild(iframe); $text = doc.body.innerHTML;
<html><body>hello</body></html> <html><body>hello <body>hello</body> <body id="test">hello</body> <body id='test'>hello</body> <body id=test>hello</body> <body id class><body>hello</body></body> 正規表現でやるならこれくらいは網羅してほしいな
>>668 無理矢理って感じだな。
なんか前時代的な書き方だ。
実際問題、iframeを使わずに外部ページを表示するのに
AJAXなどで外部のhtml取得。
でもその外部ファイルの<body>以外の<html>タグ、<head>内などいらない物を削除して埋め込むテキストを生成してページに埋め込むって
需要ありそうだけど情報無いよね。
あるにはあるけどやりたい事によって処理違うし
>>668 の書き方は一番無難だと思うけどな
672 :
665 :2011/08/24(水) 21:22:34.99 ID:???
>>668 ありがとうございます。
つまりは正規表現だけでは無理と言うことですか?
htmlがある程度ちゃんとしてれば正規表現でもできるよ。
>>668 の手もあるってだけ。
正規表現はぐぐればいくらでも出てくる。
674 :
665 :2011/08/24(水) 21:51:15.75 ID:???
>>673 >正規表現はぐぐればいくらでも出てくる。
その調べながらやっているのですがうまく動かないんです。
/<body(.*?)>(.*?)<\/body>/
こんな感じでやったのですがうまく動きませんでした。
正規表現を削ってどこが問題なのか特定すればいいじゃん。 多分改行が問題。
正規表現なんて使うもんじゃないと思うが… <body> <script>'</body>';</script> <!-- </body> --> <! </body> > <![CDATA[ </body> ]]> <p title="</body>">p</p> </body>
(?:<\/body>\s*(?:<\/html>\s*)?)?$ こんなもんでどうよ、 というか、今回のは書き換えるとかじゃないならiframeで直接表示でいいと思う。
>>677 見事にその改行の問題でした。
ありがとうございます。
必要ないかもしれないけど一応改行対策した物です。 /<body(.*?)>([\s\S]*)<\/body>/
素直にDOM使うべきだと思うけど、正規表現で
>>678 にどう対処する?
>>682 でもこれが、JavascriptだからDOMを扱えるから
>>668 の方法を採用できるが
これがPerlやPHP側で処理したいとなると結局、正規表現を使うことになるから
正規表現での抜き出し方法はわかっていた方が、いいとも言える。
PHPでもDOMだしPerlでもDOMだと思うが
>>684 PHPにおいては「DOM 拡張モジュール」が有効になってないと使えない。
だから使えないサーバの事も考慮する必要がある
>>682 >>681 をベースに考えるなら
/<body(.*?)>([\s\S]*)<\/body>[\s\S]*$/
でOK。
結局、ここに書き込んでいる人で正規表現理解しているのは
>>679 と質問をした
>>665 自身と俺だけ?
キリッ
phpのdomはデフォで有効だけどな
>>688 デフォでもそれは、ソースからのmake時の設定に関してのこと。
ソースからではなくてパッケージとしてのインストール(rpmなど)から、
インストールだとパッケージが別になっていることがある(RHEL系は別だね)
そのパッケージ(php-xml)をインストールしてあるかは
>phpのdomはデフォで有効だけどな
とは別問題。
システム構築したことある人間なら常識的なことで
>>688 の発想はないぞ。
>>686 [\s\S]*$ が意味不明だし、
>>678 のパターンを回避できてない(最長一致だからたまたまマッチしてるだけ)
alert(/<body(.*?)>([\s\S]*)<\/body>[\s\S]*$/.exec('<body></body><!-- </body> -->')[0]);
さあどうする?(正規表現で不可能とはいわないが、現実的じゃない)
JavaScriptで正規表現を採用すべき理由はあるんだろうか
>>689 レン鯖でのシステム構築の経験は無いからわからんわ
>>692 少なくとも今回のパターンだと無駄なdomをオブジェクトとして追加するより変数内ですべての処理ができた方が少なからず消費メモリに良いのでは?
実際にphpも話題に出ているから書くとphpだと変数内の文字列に対してdomをいじれる。
javascriptもdocumentオブジェクトではなくて変数内の文字列に対してdom操作ができるようになっていたらいいのにね。
>>686 の[\s\S]*$は俺もわけわからん
何か意味ある?
>>696 ありとなしでトレースしてみれば良いんじゃない?
>>695 誤爆の危険性よりもシンプルなコードを重視してるのか
HTMLパーサを正規表現で書くことがどれだけ面倒かを理解している人は採用しないと思ってた
> javascriptもdocumentオブジェクトではなくて変数内の文字列に対してdom操作ができるようになっていたらいいのにね。
createHTMLDocument では要件満たせない?これを知らないから正規表現を採用するのかな
>>698 >> javascriptもdocumentオブジェクトではなくて変数内の文字列に対してdom操作ができるようになっていたらいいのにね。
>createHTMLDocument では要件満たせない?これを知らないから正規表現を採用するのかな
createHTMLDocumentはDocumentオブジェクトを生成するメソッドであって変数ではないぞ。
おまえこそ
>これを知らないから
な状態。恥ずかしいから知ったかぶりするなよ。
>>698 >誤爆の危険性よりもシンプルなコードを重視してるのか
シンプルと言うより処理的な効率性(メモリ消費やアルゴリズム的)だろ?
あの文書どう読んだらシンプルという結論になるんだ?
>これを知らないから正規表現を採用するのかな
なんて書く前におまえの中の日本語理解力をどうにかしろよ。
妙に攻撃的な人が多いね 怖い怖い
>>701 しかも質問した人間がいなくなってるのに
htmlの仕様を網羅しないといけないからキリがない 最初の"<body>"から最後の"</body>"とか厳密に指定されていれば話は別
</body>が省略されていたら悲惨だな DOMの方が安心
705 :
Name_Not_Found :2011/08/25(木) 01:32:38.65 ID:D4c/zC6i
javascript書くときに関数は関数式で書くべきか、関数宣言でかくべきか 皆さんどちら? ・関数式 var hoge = function(){}; ・関数宣言 function hoge(){}
宣言かな。宣言ならそれより前でも実行できるし。 式で書くのは上書きとか宣言じゃできない時。user.jsとか (function(){ var test_backup = test; window.test = function(){ // 追加 test_backup(); }; })();
707 :
Name_Not_Found :2011/08/25(木) 02:09:29.17 ID:yk6Cdhof
>>705 俺ルールだと
その場限りというか、今書いてるスコープでしか使わないとき→式
そうじゃない場合→宣言
708 :
Name_Not_Found :2011/08/25(木) 02:17:15.12 ID:D4c/zC6i
さっそくのレスありがたい 自分は今関数式で統一しております。 関数式だとスコープ内でも使えるし。 混ぜるのは嫌なので、あえて関数式のみで。
709 :
Name_Not_Found :2011/08/25(木) 02:32:21.78 ID:x7LEiDpP
ん?
スコープはどっちも同じだよ?
変数オブジェクトとして渡す必要があるかどうかで判断するものかと思ってた
>>711 それが理由なら常に渡せる形にしておくべきじゃないの?
普通統一なんてしないよ
firefoxのbrowser.jsとかではvar foo = function bar() {};みたいに両方いっしょに使ってた デバッグに便利とか何とか誰かが言ってたけどよくわからない
715 :
Name_Not_Found :2011/08/25(木) 13:03:43.93 ID:hstFaGoY
ん? 関数宣言だと、渡したりできなかったっけ?
716 :
Name_Not_Found :2011/08/25(木) 13:06:28.84 ID:hstFaGoY
途中で送信してもうた 自分はこんな風に書くのが一番多いようです まあ、文ですね { fn : function(){ } }
アッキー
718 :
Name_Not_Found :2011/08/25(木) 17:03:51.53 ID:mGtSWrMa
ベロベロベロベロベロベロベロベロ
>>705 その書き方って「関数式」って言うの?
無名関数だと思っていた。というかほかのオブジェクト指向言語だと無名関数って言わないか?
>>719 無名関数は関数に名前をつけないこと。
関数式っていう呼び方とは関係ない。
var f = function(){};
は無名関数の式で変数fを初期化している。
var g = function h(){};
は関数の式で変数gを初期化している。
>>720 JavaScriptは仕様が中途半端だよな。
オブジェクト指向ぽいところもあるけど違うところもあるからね。
Javascriptでいう関数式はオブジェクト指向なら「インスタンス化」なんだろうけど
722 :
Name_Not_Found :2011/08/25(木) 19:02:16.88 ID:7KEGuq5E
(function(window){ var document = window.document; })(window); なんでこういうことをしているんですか? windowを渡したりdocumentに代入したり。
>>721 中途半端と思わなかったので新鮮だなー
参考までに聞きたいんだけどどこが中途半端だと思う?
関数式がインスタンス化ってのもよくわからないんだけど、Functionのインスタンスを生成するから?
>>722 普通の関数呼び出しと同じだよ
引数にすれば他のwindowを渡せるから
中途半端じゃなくて、自由度があると言いたまえ
自由度が高すぎてどう書くべきかわからんプロトタイプベースとやら
>>725 あっC++と一緒か。
馬鹿がプログラミングするとせっかくのオブジェクト指向言語で構造化プログラミングしちゃうみたいな。
>>723 >中途半端と思わなかったので新鮮だなー
斬新?えっ嘘?だってjavascriptより前にも中途半端なオブジェクト指向言語としてVBがあったじゃん。
だからまたやらかしたメーカがあるのかって俺は思った。
>参考までに聞きたいんだけどどこが中途半端だと思う?
javascripにある既存の物に関してはオブジェクトとして扱わせようとしているけど
ユーザに対してはオブジェクト指向言語として実装されている機能が少なすぎること。
(過去のPHPもそんな感じだったけどPHPはその後がんばって実装してくれたおかげでとりあえず使える域にはなってきている。)
>>72 77
>javascripにある既存の物に関してはオブジェクトとして扱わせようとしているけど
>ユーザに対してはオブジェクト指向言語として実装されている機能が少なすぎること。
>(過去のPHPもそんな感じだったけどPHPはその後がんばって実装してくれたおかげでとりあえず使える域にはなってきている。)
prototype知らずにjavascript語るなよ
>>728 だから何って感じだね。
>>728 は知っている言葉をとりあえず使っておけばいいと思っているんだよきっと。
オブジェクト指向として実装されている機能が貧相なこととプロトタイプは別物だぞ。
おまえこそ本当にプロトタイプを理解しているのか?
まぁアンカーひとつまともにつけることができない奴には理解なんて無理か。
JavaScriptのデバッグツールで良いのってない? 普段は IE+IEの開発者ツール+テキストエディタ もしくは FireFox+Firebug+テキストエディタ で開発者ツールやFirebugをブラウザと同じウィンドウに表示すると表示が狭くなるから別ウィンドウとして使うと 最低3つのウィンドウを行き来する羽目になって効率的に悪いです。
731 :
730 :2011/08/25(木) 20:05:24.62 ID:???
追加でjqueryやAJAX(http通信しているデータを視覚化してくれたらありがたい)対抗の物で
2画面ですりゃOK
>>727 JavaScriptをオブジェクト指向言語として見ることがそもそもの間違いだと思うな
プロトタイプベース言語とオブジェクト指向言語をごっちゃにしてない?
> ユーザに対してはオブジェクト指向言語として実装されている機能が少なすぎること。
何度もいうけどJavaScriptはオブジェクト指向言語じゃないよ
だからオブジェクト指向言語としての機能はないし、オブジェクト指向言語と同じように実装しようとすることが間違ってる
プロトタイプベースのオブジェクト指向言語だと思ってた・・・
>>731 すでに2画面でウィンドウは並べて作業しています。
問題は画面ではなくてウィンドウの行き来。
2画面で作業しているから時々どのウィンドウがアクティブなのかごっちゃになる。
で、テキストエディタだと思ってCtrl+SをWebブラウザでやっていたり
開発者ツールでソースを書こうとしたり。作業効率が悪いですね。
なんかIDEですべて一つのウィンドウでソースの書き込みとデバッグとプレビュなどを処理できない物かと。
>>733 君もわかってないよね?
JavaScriptはプロトタイプのオブジェクト指向言語だぞ。
だからオブジェクト指向言語に変わりはない。
個人的にはdocumentをnewしたいと思うことも。
>>729 スマホからだったから安価ミスしたわすまんな
まあそこそこの規模での開発になったらパッケージみたいな仕組みがないから面倒だと感じるけど
それ以外はJavaとかPHP比べたら扱いやすいね
>>733 こういう奴がC++は完全なオブジェクト指向言語です(`・ω・´)ゝ キリッ
って言うんだろうね。
>>736 個人的にはjavascriptもPHPもそろそろ変数宣言を強制化できるようにして欲しい。
PHPには一応error_repotingに対してE_NOTICEを指定いれば似たようなことはできるけど)
Perlのuse strict様な機能が欲しいね。
たぶんこれがあれば人為的なソースの書き込みミスでのデバッグはだいぶ楽になると思う。
それとこれもjavascriptもPHPの両方に言えることだけどそろそろ変数の型宣言を・・・
だから現状では比較演算子に「===」まである始末。
プロトタイプと騒いでいた馬鹿、自分の無知が露見して逃亡したのか?
use strictがあるだろ
煽るの止めなよ、みっともない… CoffeeScriptは確かできないけど、ClojureScriptなら型宣言とかできるのかな?できないか
このスレはJavaScriptの質問スレだからね JavaScriptや他言語の定義を議論したいなら他所でどうぞ
昔プログラム板にJavaScriptスレがあった気がするけどないな ECMAScriptスレならあるが・・
>>740 仕様としては実装されたけど
その機能を実装したブラウザってもう出ていたっけ?
調べたのが一年くらい前だから実装したブラウザがすでに出ていたらすまん。
ブラウザしかJavaScriptを扱えないわけではないからね
>>742 質問スレだけど回答者の性格が悪くていつも話が変な方向に行くから仕方がない。
>>745 サーバサイドjavascript。
どっちにしてもjavascriptエンジンが必要でそのエンジンがどこまで実装しているかが問題だね。
そういえばandroidアプリにjavascriptだけの実行ソフトがあったな。
FirefoxとChromeは実装されてるよ
>>735 ごめん、勘違いしてた
ただ、他の言語の常識をJavaScriptに当てはめても仕方ないと思うんだよね
ぶっちゃけ型宣言は必要? 俺は困ってないけどどんな状況で困るのかが気になる
>>750 タイプミス。
まぁ君みたいな打ち間違いがない完璧超人には必要ない機能だね。
え?
よくわからんけど、undefinedが怖いってこと?>タイプミス
タイプミスごときの為に静的な型付けが欲しいとかびっくりだわ
Firebug上で、 hoge = 'hoge'; (function () { "use strict"; hoge = 'hogeeee'; })(); console.log(hoge); を実行するとhogeeeeが返ってくるんだけど、俺何か変な勘違いしてるのかな…
>>754 デバック時の楽さ(手間)が変わってくるだろ。
まぁjavascriptくらいしか触ったことのない奴にはわからないだろうね。
>>755 スコープとuse strictは別問題だろ。
傲慢な回答者だな ご退場願いたい
>>756 タイプミスと型宣言にどんな関係があんのさ。
例えば何の言語の話をしてんの?
変数宣言の強制化について言えば、重複宣言を検知できる様にして欲しいわ。
タイプミスなんか、入力補完使っていればほぼ問題にならない。
それより、for ループの度に var i = 0 とかやっているの見ると気持ち悪い。
>>757 変数宣言の話とごっちゃになってたみたい。ありがとう!
>>756 静的な型付けがタイプミスをおこさない為に有るとでも思ってんの?
磯野ーCoffeeScript勉強しようぜ!
その前にワカメに中出しした責任取れや。
>>759 >タイプミスと型宣言にどんな関係があんのさ。
型宣言?
日本語読めないバカですか?
どこから型宣言の話が出てきた?
use strictが型宣言だってよwww
>例えば何の言語の話をしてんの?
変数宣言が必要な言語すべて。
これのおかげでタイプミス時にコンパイラが教えてくれるんだぜ。
IDEによってもしっかり教えてくれるんだぜ。
デバッグ時の手間が減る。
>タイプミスなんか、入力補完使っていればほぼ問題にならない。
こういう人間がデバッグをおろそかにするんだろうね。
>>761 でもタイプミス時に教えてくれるから便利。
「タイプミス」っていうのは型が合っていないという意味でのタイプミスなのか それともプログラムを打ち間違えたという意味でのタイプミスなのか
>>761 こういう事を
いう奴に限って理由を知らない法則
>>764 アホな煽りはみっともないぞ
>>765 つまりはコンパイラのようなsyntaxチェックしてくれる物があればOKという事だな?
初期化や宣言がされていない時に教えてくれよと
そういう事だな?
やはりタイプミスと静的な型付けは関係なかった
>>751 のレスアンカーがタイプミスということか
「タイプミス」を宣言しながらタイプミスする人を初めて見たw
>>764 は、話の流れも読まずにレスしてんのか?
なぜすぐ意見への批判から人を中傷する流れになるのか…
なんで型宣言の利点がタイプミスなんだと思ってたらアレか 型じゃなくて変数の明示的宣言の話か
>>772 あまりこういうこといいたくないんだけど、「煽らないと気が済まない負けず嫌いな人」が常駐してるみたい
>>774 >>751 の時点の「打ち間違いがない」で普通気づくだろ?
気がつかない奴って相当沸点が低くて頭に血が上って冷静な読解能力が欠如していたの?
>>778 タイプミスのタイプをタイピングの事ではなくて型の方にとらえて変な粘着をしている
人がいるから。
つまり、CoffeeScriptで書けばvarを自動で書いてくれるし==と書けば===に変換されるし class Hogeとか書けばプロトタイプを意識せず他のクラスベースの言語のように オブジェクトを操作できて素敵、ってことで良いのかな?
>>775 use strictとタイプミスの関係性に異論はないと思うよ
静的な型付けに噛みついた人がいたから討論(という名の煽り合い)になったのが事実
>>778 その後の部分読めばわかるけど
タイプエラー(こっちのタイプは型の方)のチェックもしてくれる。
それと入力ミス似る方のタイプエラーもチェックしてくれる。
というわけで結局双方がタイプミスを別々の意味でとらえていたと言うこと。
つまりは
>>750 は簡単なソースしか書いたことなくて
デバッグ作業が必要ない言うことですね。
>>782 少なくとも、
>>751 は「打ち間違い」といってるからTypeErrorの意味で使わなかったはず
ここでuse strictが出てくるのは明らかにおかしい
>>782 >それと入力ミス似る方のタイプエラーもチェックしてくれる。
これこそタイプミスww
タイプミスと聞いて入力ミスと思う人と型宣言ミスを思う人ばどっちが多いのだろうか?
俺は、型宣言ミスなんかの方はタイプエラーって言ってタイプミスはタイピングミスの方を連想する。
打ち間違いで変数宣言をしていない変数を書いてしまったとき、 "use strict";と書いておけばエラーにしてくれるから打ち間違いは解消。めでたしめでたし。 って話なんじゃないの?
タイプミスで型だと思うやつはいないだろ
>>785 ECMAScript を理解している人なら TypeError というと思う
カタカナにするにしても「タイプエラー」で「タイプミス」と呼称するとは思えない
>>784 >ここでuse strictが出てくるのは明らかにおかしい
いやいやuse stricは未定義の変数も検出してくれるから
変数名の入力ミスも結果的にチェックしてくれる。
だから、間違っていない。
×打ち間違いは解消 ○打ち間違いによって予期せぬ動作はしなくなる (訂正が遅くなった…)
>>750 は「型宣言」と言っている訳で。
どう脳内変換したら、「型宣言」の話がタイプミスの話になるんだ。
>>787 でもこのスレに実際いた事実。
だからタイプミスという単語に反射的に型宣言騒いでいたんだろ?
収束しつつあるな。良かった良かった。
単に
>>751 が型宣言と変数宣言を間違えただけじゃね
うん、きっとそうだね。それで良いよ
で型宣言は必要ないと思う?
俺はあれば便利だとは思う。
他の言語と違い比較演算子で「===」使う必要あるから
他の言語やっていてjavascriptに戻ってくるとついつい「==」で比較しちゃう。
>>797 といって
>>797 は
>>797 の書き込みでまた燃料投下してしまった。スレがまたこの話題で荒れたらおまえのせいだぞ。
>>798 「===」を使うべき所を「==」を書くってこれもタイプミスだww
ある意味型宣言とタイプミス関係あったwwwwww
そもそも==の存在意義がわからない…===が==になれば良いんじゃね
801 :
750 :2011/08/25(木) 23:13:59.80 ID:6pG79dRN
質問の仕方が悪かったのかな?
お騒がせして申し訳ない
>>798-799 確かに便利かもしれないけど、静的な型付け必須にすると型変換と両立できなくなってJavaScriptらしさが抜けるのがなーって思ってる
【環境】Windows , chrome:IEの最新 【何をしたのか】関数内で <span id="name"></span>の内容(ソース)を書き変えようとした 【期待する結果】ジャンプしないリンクを押下することでspan内の内容を変えたい、その際サーバ側のファイルを使用したい 【サンプルコード】 function func(){ var ele = document.getElementById('spanname'); ses.src = URL; } ---URL先のjsファイル--- document.write("hoge"); func関数が呼ばれていることはalert関数をfunc関数内で呼び、確認しました。 URLは http から始まる絶対指定(?)で行っています jsファイルは同一サーバにあるものの私の管理ではないため相手側のソースを使用する必要があります よろしくお願いします
>>800 たとえば双方のデータを比較前に文字列から数値型にする処理を書いていたとする。
その場合、===で比較する?
それとある数値と関数の戻り値(戻り値が数値型だとわかっている)状態で===で比較する?
>>802 そういうのはjQuery使うとものすごく楽だぞ
806 :
804 :2011/08/25(木) 23:25:00.43 ID:???
$("ボタンのID名").click(function(){ $("spanのID名").load("ファイル名"); }); たぶんこれだけの処理。
807 :
Name_Not_Found :2011/08/25(木) 23:27:32.28 ID:6pG79dRN
>>804 ,806
それクロスドメイン制限に引っかかる
>>805 まずいとかではなくて型が同じなのが確実にわかっているのに型比較までするか?って事。
実際比較したこと無いけど「==」と「===」とでは比較する部分が多くなるから処理速度も変わってくるんじゃないの?
こういう事書くと定番のソートネタになる気がする。
処理速度より簡単なバブルソートでいいんじゃんって言うような物。
比較データ数が少ない場合はまだ処理速度に差が出ないけどデータサイズがでかくなってくると差が出てくる。
同じように比較処理もちりが積もればなんとやらと同じだと思う。
809 :
806 :2011/08/25(木) 23:34:09.72 ID:???
>>807 >jsファイルは同一サーバにあるものの
ってあるから同じドメイン上だと思っていたけど違うのか?
情報の小出しするな。最初から必要な情報すべて書いておけ。
だったらAJAX使う。
$("ボタンのID名").click(function(){
$.ajax({
url: $url,
cache: false,
success: function(html){
$("spanのID名").html(html)
}
});
});
>>808 処理速度よりまずは安全に比較できることを優先したいから、俺は===だけ使います。
811 :
806 :2011/08/25(木) 23:35:57.49 ID:???
やば寝ぼけてきた。書き間違いがあった。 $("ボタンのID名").click(function(){ $.ajax({ url: ファイルのURL, cache: false, success: function(html){ $("spanのID名").html(html) } }); });
>>810 それこそ安全性を考えるなら型宣言があった方が良いね。
813 :
Name_Not_Found :2011/08/25(木) 23:40:19.04 ID:6pG79dRN
>>812 ===できちんと型まで比較できるならそれで良いんじゃない?
今は==の使い道について話してるので、型宣言の話とか勘弁して下さい
815 :
802 :2011/08/25(木) 23:46:04.62 ID:???
>>809 クロスドメイン制限は引っ掛からないと思います
jQueryについては独断で使用するわけにはいきませんが、便利そうなので使用できるように相談してみます
未熟なこともあり環境も全て把握できているわけではありませんが頑張ってみます、ありがとうございます
>>807 管理というか担当が違うといった感じです、誤解させてすみません
>>813 800だけど、調べてくれてありがとう。
'1'と1が正しいかを調べるために型まで調べる必要があるのか。
言われてみれば==のほうがいろいろ処理が必要になりそう。
818 :
Name_Not_Found :2011/08/25(木) 23:57:07.56 ID:6pG79dRN
>>816 それはサンプルソースが悪いと思うな
型変換が働かないケースで比較してもたいした差が出るとは思えない
>>814 他の宣言が必要な言語では==で比較できるから
>>798 みたいな他の言語を行き来するならありがたいだろうね。
これに加えてvbだと=だけでひかくできるからこわい
822 :
Name_Not_Found :2011/08/26(金) 10:43:42.77 ID:WIWFubYy
2回投降なのは2chの鯖落ちが原因なんだ・・・
827 :
Name_Not_Found :2011/08/26(金) 19:28:16.02 ID:DB9a6OQ2
>>826 今日たったばかりのスレをなぜ推す?
仕様の話はECMAScriptスレだと思うが >2
829 :
Name_Not_Found :2011/08/26(金) 23:49:48.08 ID:YOMV8Pin
>>827 難しくて理解できないのは、複雑だからじゃなくて、知らないからだと思う
雑に考えずに、わからないところを一個ずつ調べていけばいいよ
どうでもいいけど、ECMAScriptがJavaScriptの規格っていうの初めて知ったわ JavaScriptで検索しても出ねえなとか思ったけど、 言語仕様話すレベルだったら知ってて当然なんかな
>>831 昔のテンプレの定番にECMAScriptチュートリアルってのがあった
Javaをかじった人向けでやや不正確な部分もあったが
とほほなんかより、はるかにまともな解説だった
とほほは過去の遺物でしかないからな・・・今となっては無意味な文書も多いし 今はだいたいMozilla Developer Networkを見てる まとまった解説があって、そこそこ定期的に情報が更新されて、仕様へのリンクもあって、それなりに検索がやりやすい もちろん間違った部分もなくはないけど、サッと調べやすくて重宝してる MSDNもマシになってきてるけど、検索がまったく使いものにならないから非常に困る
MDNもMSDNも共通して勘違いしていることがある 技術文書は読めてナンボ お前らの最新技術とやらを披露する場じゃねえよ ねえんだよ……
全然関係ないサイトを私物化してるって話でなく、 自分たちで作ってるサイト上で自分たちの技術を披露してるのをとやかく言うって、どういうことなの
JSのライブラリ配布サイトで JS有効でないとダウンロードできないサイトを どう思うかってのと同じじゃね 緊急にJSの動かない環境でダウンロードしなければならなくなったとき あれはホントにむかついたなあ デモはデモで別にやれ、文書は読めてナンボなのはその通りだと俺も思った
839 :
Name_Not_Found :2011/08/27(土) 11:48:16.50 ID:+u3/5HJT
>>834 MDN は Firefox の仕様書、MSDN は IE の仕様書だから何も間違っていない。
標準化された仕様を読みたいならしかるべき仕様書を読むべき。
842 :
Name_Not_Found :2011/08/27(土) 13:03:52.33 ID:f/HJOiJ4
2つのjqueryを1ページ内に組み込んだところ、前に設置した方が動作しなくなりました。(追加分のコードを削ると復活) 複数のjqueryを単一ページ内で動作させる場合、何か約束事などあるのであようか?
このスレをjQueryで検索するといいよ。すでに2回同じ問題あったから。 あと、jqueryではなく、jqueryプラグインだろ? 本当にjquery.jsなら2つ動作させる意味が分からない。
845 :
Name_Not_Found :2011/08/27(土) 15:10:32.96 ID:f/HJOiJ4
>>843 仰るとおり「jqueryプラグイン」です。
>>844 わざわざありがとうございます。自分の場合とは異なる状況のようですが
これから色々試してみます。
>>840 何か誤解されたようだけど
一時期のMSDNはJS使いまくりで、ブラウザによってはまともに見れなかった
そんなのが技術文書でいいのか、て話だったんだが
>>841 当時はJavaScriptでJavaのように堅牢なコードを書く方法が模索されてた
それをぶち壊して今の流れを作ったのがPrototype.js
>>841 クラスベースとは違ううんたらは聞き飽きてるんだが
現場は今でもクラス的な書き方をしないとチームで共有できない
プロトタイプベースでコード保守する方法論があったか?
>>848 プロトタイプを使ってクラス的なものを作ってるんじゃないの?
それがプロトタイプベースでコード保守する方法論になると思うんだけど。
>>849 結局そうなるよな
仕様書作るときもクラス表現にするわけだろ
だったらプロトタイプベースを強調する実用的なメリットは?と思ったわけ
クラスでいいじゃん
またこの流れか
排他的になったね
じゃあ、何の話がしたいのか整理してください そして、それがJavaScriptの質問でなければ適切なスレにどうぞ
すみません、jQueryの質問なんですが とある要素を最初からhideの状態というか 最初見えない→showで出てくる というようにしたいのですが、この場合CSSのvisibility:hiddenみたいな感じで隠す事はできないんでしょうか? それともonloadした時hideにするしか方法は無いでしょうか?
javascriptつかって定期的にリロードさせてたHTMLにgoogleアナリィティクス入れてみたらリロードしなくなったんですけどなぜですか?
861 :
Name_Not_Found :2011/08/28(日) 15:14:52.57 ID:Ef0tJWBU
JavaScript の質問用スレッドなのに、どうしてjQuery限定なんだろう?
誰が限定しとんねん
TinyMCE+自前の簡易ファイラを実装しているのですが
簡易ファイラからの戻りを
http://www15.atwiki.jp/tinymce/pages/12.html を参考にjqueryと組み合わせて
$('.fileimage').click(function() {
var URL = this.href;
var win = tinyMCEPopup.getWindowArg("window");
win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = URL;
if (win.ImageDialog.getImageData) win.ImageDialog.getImageData();
if (win.ImageDialog.showPreviewImage) win.ImageDialog.showPreviewImage(URL);
tinyMCEPopup.close();
return false;
});
と実装したのですが
戻り値も正常に「画像URL」に画像は入りWYSIWYGエディタ上でも画像が表示されるのですが
いざそのデータをPOSTしてみると画像データが入らないどころかこの簡易ファイラを開いた後の入力関係すべてが破棄された状態になってしまいます。
どうすればいいかわかる方いますか?
865 :
864 :2011/08/28(日) 17:45:43.16 ID:???
事故解決できたっぽいです。 ファイラ側にもTinyMCEを組み込んでファイラ上での簡易エディタ機能を実装していたけど それのためにtiny_mce.jsを読み込んでいたんだけどこれが悪さをしていたみたい。 tiny_mce.jsを外してポップアップ処理のためのtiny_mce_popup.jsだけにしたらなんか動いたみたいです。
>>861 <div style="visibility:hidden">
</div>
にした所を〜.show();しても出てこないのですが、記述ミスなんでしょうか?
>>866 そりゃ当たり前だ
.show() は .css('display', 'block') と同じだから
代わりに .css('visibility', 'visible') とでもすればよい
っていうかvisibility:hiddenは「見えなく」するだけであって「消える」ではないだろ 例えば画像をaとbとc並べてbをhide()で「消し」たらCが左に移動するけど visibility:hiddenで「見えなく」するだけじゃ全部位置はそのまんま visibility:hiddenじゃなくて他ので隠すのがよかろう
visibility:hiddenはTabでの移動もそのままだったような気がした だから見え無いリンクに飛べることも可能だったかな
>>869 Tabによるフォーカス移動はできなくなるよ?
少なくとも手元のFx6ではフォーカスしなくなった
873 :
Name_Not_Found :2011/08/29(月) 02:49:46.92 ID:0hoTMh5W
>>827 ちょい、質問の意図がよくわからんのだが、
ページ眺めて分らないってことはhtml/css理解してないってことでいいのか?
それなら、cssのfont-sizeを追加しる
>>オリジナル
// 表示開始
document.write('更新日時:<strong>' + year + '年' + month + '月' + day + '日(' + week + ')');
document.write(hour + '時' + min + '分' + sec + '秒</strong>');
// 表示終了
>>修正
// 表示開始
document.write('更新日時:<strong style="font-size:200%";>' + year + '年' + month + '月' + day + '日(' + week + ')');
document.write(hour + '時' + min + '分' + sec + '秒</strong>');
// 表示終了
参考:
>
http://www.tagindex.com/stylesheet/text_font/font_size.html 文字サイズの変更とかはhtml/cssの領分だから、問題を切り分けて適切なスレに行ってくれ。
質問の回答として間違えてたらすまん。
CSSを設定
>>876 あっちでも質問スレみたいな流れだしいらねーよ
つーか質問スレと雑談は分けたほうがいいだろ たまにしょうもない議論で質問埋もれてるじゃん
<video>タグを用いて、動画の埋め込みを行いたいのですが、複数の動画を表示するとき(動画でなく画像で言うならボタン式スライドショーのようなもの、画像切り替え?みたいな)どのように書けばいいのでしょうか? 画像の切り替えならばよくネットに載っていますが、videoタグで複数の動画をさらには複数のブラウザに対応(WebMやmp4形式)させる 書き方が分かりません。どなたか教えていただけないでしょうか?
>>873 ありがとうございます。
そういうことを聞きたかったんです。
881 :
Name_Not_Found :2011/08/30(火) 01:30:02.88 ID:CbKdFkDZ
>>879 スライドショーはimgでやっていたのをそのままvideoにすればいいよ
動画ソースの切り替えはサーバ側でやったほうがいいよ
vas x = 1〜10の数字 1〜10のx以外の数字をvar aに入れる ってやりたいんですが、簡潔な方法とかありますか? if(x != 1){ a +=1;} if(x != 2){ a +=2;} if(x != 10){ a +=10;} だと何か非効率的な感じが
そのプログラムでその問題は解決できているの? 問題の意味がよくわからない…
そのコードと等価なのを書くのだったら var a=55-x; だけど、こういうコトなの?
885 :
Name_Not_Found :2011/08/30(火) 08:28:04.97 ID:ciZSHNfU
>>882 効率、非効率以前になにしたいのかさっぱりわからんw
宿題か? var a = 11-x; でいいのかな。
あれ、もうすぐ900か… 次スレのテンプレ論議あれば今どうぞ。 あんまり大規模な変更の議論は無理ぽいけど。
よく見たら
>>1 の5番にタイプエラー(笑)って該当するなw
タイプエラー(笑)の人は型エラーって言うのかな
892 :
Name_Not_Found :2011/08/30(火) 17:08:21.90 ID:CbKdFkDZ
ちょっと何言ってるかわからない
ちゃんとTypeError、SyntaxError、RangeErrorと言えということだな まさかオブジェクトの存在すら知らないわけではないだろう
【環境】Firefox6.3 【期待する結果】 var hash = window.location.hash; hash = hash.split("?"); hash = hash[0].split("#"); if(hash[1] == 'page2') tab.showpage(tab.setup.tabs[1]); if(hash[1] == 'page3') tab.showpage(tab.setup.tabs[2]);} 上記を変更してタブではなく指定の折りたたみを開く内容にしたいです。 【サンプルコード】 (使用している折りたたみ) function showPlagin(idno){ pc = ('PlagClose' + (idno)); po = ('PlagOpen' + (idno)); if( document.getElementById(pc).style.display == "none" ) { document.getElementById(pc).style.display = "block"; document.getElementById(po).style.display = "none"; } else { document.getElementById(pc).style.display = "none"; document.getElementById(po).style.display = "block"; } } BODY部分 <div id="PlagOpen1" style="display: block"><a href="1" title="OPEN" onclick="showPlagin(1);return false;">続き</a></div> <div id="PlagClose1" style="display: none"><a href="2" title="CLOSE" onclick="showPlagin(2);return false;">続き</a> 内容</div> 初心者のためもし内容に不備があったら申し訳ありません。よろしくお願いします。
895 :
Name_Not_Found :2011/08/30(火) 22:07:41.61 ID:ciZSHNfU
>>894 初心者だからって何しても許されると思うなよw
少し前からイミフな質問投げつけてくるのはどこの誰だよw
5W1Hって言葉があってとりあえず、何やりたいか明確に示せよ。
>上記を変更してタブではなく指定の折りたたみを開く内容にしたいです。
わかんねぇよ、お前が何してるか何したいか?
何一つ伝わってこねぇ。
>初心者のためもし内容に不備があったら申し訳ありません。
不備どころの騒ぎじゃねぇよ、怪文投げつけてるだけじゃねぇかw
↓とりあえず、適当に修正して見るが・・・
すまん、ホントに何したいかかまるで見えねぇンだわ。。。
>>895 すみません、補足させてください
location.hashを使い、URLのアンカー部分の取得によってページ内の折りたたみを展開できるようにしたいと考えています
http://archiva.jp/web/javascript/tab-menu2.html こちらの記事を参考にしたのですが、タブ部分の記述を折りたたみ展開に応用するやり方が分からなくて質問した次第でした
質問するのは初めてなので少し前から〜の方ではないですが、分かりにくいというか意味不明な文章で申し訳ないです
また意味のわからないところがあればご指摘いただけると幸いです
hash変えるだけならonhashchangeイベント使えばいいじゃない
>>897 他ページから飛ぶときにもアンカーで動作を実行したいと考えていまして、
対応していないブラウザが多く、onhashchangeだとページ内に効果が限定されるっぽいので避けていました
どういうhashの時にどう動くのかはそっちで調整してくれ。 if(hash[1] == 'page2') showPlagin(1); if(hash[1] == 'page3') showPlagin(2); 関数というものについて理解を深めるといいよ。応用というか変更だな。 ページ開いた時だけならhashでもqueryでもいい気がする。
>>896 そのページのサンプル、ループ内で毎回同じ要素取得するとか最悪。
>>899 ありがとうございます。
if(hash[1] == 'page2') showPlagin(1);での記述は以前に試してみたのですが、動かず、
先ほど再度行ってみたのですが出来ませんでした。
お使いの環境で動いたのであれば、参考までにHEADやBODYでの記述を見せていただけると嬉しいです。
jqueryだと折りたたみが複数ある場合一つしか選ぶことができないと思ったのですが、そうでもないのでしょうか
関数について無知が露呈してますよね。勉強します。
可能性1 if(hash[1] == 'page2') showPlagin(1); が記述されているのが、head内(正確には<div id="PlagClose1"以降で無いといけない。) ※これがよくある間違い。 可能性2 function showPlagin(idno){} が記述されているのが if(hash[1] == 'page2') showPlagin(1); より後 可能性3 hashが正しくない
>>903 ありがとうございます。可能性1がそのまま当てはまりました。
BODY内の一番下にif(hash[1] == 'page2') showPlagin(1);を移しました。
ただ、まだ動きません。
可能性2については現在HEADにfunction showPlagin(idno){}、BODY部分にif(hash[1] == 'page2') showPlagin(1);なので
これではないと思います。
可能性3については、
折りたたみBODY部分
<div id="PlagOpen1" style="display: block"><a href="a" title="OPEN" onclick="showPlagin(1);return false;">続き</a></div>
<div id="PlagClose1" style="display: none"><a href="b" title="CLOSE" onclick="showPlagin(1);return false;">続き</a>
内容
</div>
BODY内展開用部分
<script type="text/javascript">
function(){
var hash = window.location.hash;
hash = hash.split("?");
hash = hash[0].split("#");
if(hash[1] == 'page2') showPlagin(1);
if(hash[1] == 'page3') showPlagin(2);
}
</script>
で、URLは
http://www.xxxxxxxx#2という形なので 、違うと思うのですが
>>905 動作に関係がありそうな箇所だけ突っ込んでおくと…
・URL のハッシュは 2 でなく、page2 なのでは?
・<div id="PlagClose1" style="display: none"><a href="2" title="CLOSE" onclick="showPlagin(2);return false;">続き</a>
ここ、showPlagin(2) -> showPlagin(1)
・BODY内展開用部分
それ構文エラー。
良く見たら、2番目については初出のものから修正されてんのね。
Firefox6.3って何
質問いいですか。 Firefox6.0で動かしてます。 <span onclick="this.innerHTML=\"zzz\"">xxx</span> とするとダブルクオーテーションのエスケープ文字が上手く解釈してもらえません。 今までこう書いてそれで動いてたと思うのですが、Firebugで見ると onclick="this.innerHTML=\" となってます。 <span onclick="this.innerHTML="zzz"">xxx</span> とすると動きました。 エスケープ文字ってこういう時の為にあるもんと思ってたのですが。 なんで最初のは動かないんですか?
910 :
909 :2011/08/31(水) 07:21:43.89 ID:???
最後のは <span onclick="this.innerHTML="zzz"">xxx</span> です。 後テンプレ使ってなくてすみません
DOM操作でCSSのmin_widthを10px調節したいです document.getElementById("hoge").style.min_width="10px"; とカンでやってみたのですが、上手くいきませんでした min_widthの場合はどう記述したらいいのでしょうか? 調べたりたりしてもmin_widthの操作についてはどこも書かれてなかったので
>>912 ありがとうございます、勉強になります。オッス
>>909 HTMLパーサーがJavaScriptのエスケープ文字を認識する必要はない
そのうちXSSやらかすぞ
>>909 HTMLの属性値のエスケープは \ じゃないよ。
916 :
909 :2011/08/31(水) 10:31:45.35 ID:???
917 :
Name_Not_Found :2011/08/31(水) 14:54:52.87 ID:J4vpbc1P
Google+のボタンを設置していて思ったのですが
<script type="text/javascript" src="
https://apis.google.com/js/plusone.js ">{lang: 'ja'}</script>
この {lang: 'ja'} はどうやって扱ってるんですか?
plusone.jsのなかもざっと見たんですが
script要素を探しているようには見えなかったのですが
src 属性を指定した場合、タグ内のテキストは無視される。 サイ本読め。
処理されないってだけでJS側からは文字列としてDOMで取得できるっしょ
あ、そっか。 でも id も振ってないしなぁ。
実行時に末端のノードを辿ると必ず自身のscriptエレメントになる そうだよ。試した事無いけど。
>>922 それ今回の場合でも使われてる?そもそもscript要素を取得するコードが見つけられない
>>924 そうみたい
外部スクリプトを呼んでてそっちだとscript要素の取得と「/js/plusone.js」の有無を見てるっぽい
>>922 なるほど。
使い道は分からないけど、面白い。
これかな? var Hb=l.getElementsByTagName("script");if(Hb[A]>0){for(var Ib="",Jb=0;Jb<Hb[A];Jb++){var Kb=Hb[Jb].getAttribute("src");Kb&&Kb[t]("/js/plusone.js")!=-1&&(Ib=R.b.yb(Hb[Jb]))}Ib=Ib[s](/^\s+|\s+$/g,"");Ib[t]("{")!=0&&(Ib="{"+Ib+"}");
928 :
Name_Not_Found :2011/08/31(水) 18:39:58.99 ID:J4vpbc1P
dankogaiの言うことは真面目に聞くだけ無駄 @deferも@asyncもなければスクリプト先頭でとればいい どっちかの属性があるときだけ考えろ
GoogleChromeの拡張についてなのですが、拡張の作成スレが無いのとjsについてなのでこのスレで失礼します
20MBのテキストをローカルのファイルに書きこむにはどうしたらよいでしょうか
現時点では、backgroundのJavascriptの変数hogeに20MBのテキストが入っていると考えて下さい。それをどうにかしてローカルファイルに書き込みたいです
今まではw1=window.open("","_blank","");して、w1.document.writeでtextareaを作って、そこにテキストを流し込んでいました
手動で選択し、コピーし、エディタに貼りつけて保存する手間はかかりますが、可能でした
しかし20MBのテキストを同じようにw1.document.writeしようとすると、途中でchromeが落ちてしまいます。
>>TM Life
http://tmlife.net/programming/javascript/javascript-text-local-save.html この方法でdata:application/octet-stream〜でやろうとしましたが、同じく拡張自体が落ちてしまいました
もう最悪、localStorageに入れて、バイナリエディタで取り出してね♪でもいいですから、何かアイディアがあれば教えて下さい
(localStorageは容量制限でダメだった)
932 :
Name_Not_Found :2011/09/01(木) 06:18:45.84 ID:3BvzIVQV
アクセスログ収得のため以下の記述をしています。
<script language="JavaScript">
<!--
document.write("<img src='
http://www.XXXX.jp/cgi-bin/access.cgi?toppage& ", parent.document.referrer," ' height=1 width=1>");
// -->
</script>
先日、遅まきながらIE7からIE8へとバージョンアップしました(OSはXPです)
ところが、IE8にしたところ「height=1 width=1」が画像表示されるようになってしまいました。
IE7ではなかったことです。またFirefoxでも表示はされません。
たった1ドットですがゴミがついているかのようで、気持ちが悪いものです。
今までなかったものですから、ぜひ消し去りたい(非表示にしたい)のですがその方法が分かりません。
どなたか回避方法を教えてください。宜しくおねがいします。
Indexed Database APIに入れて、バイナリエディタで取り出してね♪
htmlが <p id="hoge"></p> のようになっていて、テキストが約30秒間隔でランダムな文字列で変化します。 例えば、<p id="hoge">hoge</p> → <p id="hoge">FUGA</p> のように。 この30秒は約なので、25秒のときもあれば35秒のときもあります。 このようなホームページがあるのですが、 このホームページを監視して、変化した文字列のログを取りたいと考えています。 単純にPerlなどでhtmlファイルを取得して、id=hogeのpタグのテキストを切り出しても テキストはJavaScriptで非同期で書き換えられているので、空文字列しか取得できません。 このため、htmlファイルをサーバから取得するのではなく 『現在ブラウザに表示されている動的に書き換えられたhtml』 をJavaScriptを使って取得&解析しなければならないと考えているのですが アプローチ方法が分かりません。 やり方を教えて下さい。 よろしくお願いいたします。
ユーザスクリプトでいいんじゃないか
937 :
Name_Not_Found :2011/09/01(木) 10:49:13.19 ID:rfFPj8fj
ajaxを使った処理で、たとえば「いいねボタン」なんかは クリック>dbのupdate処理>値の取得>1ポイント足した値を表示 という処理だと思いますが、 クリック>画像の投稿>GDでのサムネイル生成>サムネイルの表示 という流れで処理したいとき、 サムネイル生成の完了をどうにかして捕捉する必要があると思います どういうやり方があるんでしょうか
いつからPHPスレになったんだよ
939 :
Name_Not_Found :2011/09/01(木) 15:14:57.59 ID:OpwjBS4p
jqwelyとAjaxの専門的な質問はそれぞれの板に行け 特にコードを書いて欲しいんだったら知恵袋で聞け HTML5が普及してこれからどんどん質問が増えると 裁き切れ無くなる
>>937 生成したサムネイルのURLを返してそれをimgタグで表示するとか
生成したサムネをbase64エンコード化して返してdata uriで表示するとか
通信がタイムアウトするぐらい処理時間が長いなら
setTimeoutとかで定期的に監視するとかでいいんじゃない?
>>939 出直してこい
941 :
937 :2011/09/01(木) 15:55:45.78 ID:???
>>940 >通信がタイムアウトするぐらい処理時間が長いなら
ここの処理がわからなかったです。setTimeoutですか、、
助かりました、ありがとうございました
942 :
932 :2011/09/01(木) 16:19:33.04 ID:3BvzIVQV
>>933 ありがとうございます。ググってみます。
>>934 単に、その記述に置き換えると言う意味でしょうか?
不思議なのは、このまで不具合がなかったのにIE8でのみこの現象が現れるということです。
IE8の仕様なのでしょうか?表示方法がより厳格(記述のミスがそのまま反映?)なのでしょうか?
初心者な質問ですみません。
css style.display
945 :
932 :2011/09/01(木) 17:44:46.28 ID:???
>>944 すみません
>>940 を見落としていました。ありがとうございます。
「生成したサムネイルのURLを返してそれをimgタグで表示」
ちょっと私にはレベルが高いようでよく理解できません。
適当な初心者向けのスレとかありますでしょうか?
>>945 サムネURLでimageデータ取れるんだから、後は表示するだけだろ
何が分からないのか分からない
まさかサーバーサイドの話をする気ではあるまいな
947 :
932 :2011/09/01(木) 18:17:05.86 ID:???
>>946 すみません。サーバーの話ではないです。
別途、透過GIF画像などを用意する必要があるということでしょうか?
何もかも○投げ?ここじゃなくてそのアクセスログのサービス提供者だか配布元だかに聞けば
お前らアンカ先をちゃんと確認しろよwwww
950 :
932 :2011/09/01(木) 18:54:43.04 ID:???
951 :
Name_Not_Found :2011/09/01(木) 19:04:58.94 ID:N+CSsRRp
>>950 何に困ってるのかがイマイチわからん
少なくとも
>>932 はどのブラウザでもアウトだよ
document.writeの引数は一つ
んで、そもそもAPIにGETリクエストが投げらるのが目的で
画像を貼ってるのは、副次的な理由でしょ?
だったら
>>934 で書かれてるように、Imageオブジェクト作って
srcプロパティに有効なURLを与えれば、リクエストは飛ぶよ
あと、そのページはいくら何でも古すぎる、98年て!
952 :
932 :2011/09/01(木) 20:03:58.59 ID:???
953 :
932 :2011/09/01(木) 20:08:12.64 ID:???
>>951 「
>>932 はどのブラウザでもアウトだよ」とのことですが
IE7やFFやクローム(今確認しました)ではきちんと表示されているんです
これは何故なのだろう?かと
954 :
932 :2011/09/01(木) 20:18:37.05 ID:???
>>951 >あと、そのページはいくら何でも古すぎる、98年て!
ここを参考にしているわけではなく
序盤の
>また背景が黒だと目立つという問題もあります。
>壊れたファイルの表示は多くの場合白や灰色の絵になっています。
>そのため、黒地だと見事に目立ちます。
を示した部分が、
現在の不具合と同様なので一例として提示しました。
955 :
Name_Not_Found :2011/09/01(木) 21:36:54.46 ID:N+CSsRRp
>>952 試してみてよ
>>953 ゴメン適当に書いた
でも、基本的にカンマで繋ぐんじゃなくて
+演算子で連結した文字列を渡すのがふつう
956 :
932 :2011/09/01(木) 21:55:51.53 ID:3BvzIVQV
>>952 を実践したら不具合はなくなりました。ログも取れてます。
今までの「height=1 width=1」って一体何だったんだろうか・・・
957 :
932 :2011/09/01(木) 22:02:45.83 ID:3BvzIVQV
表示したくないものをimgタグで表示しようとしてる時点で間違いだな
959 :
Name_Not_Found :2011/09/01(木) 22:12:51.76 ID:N+CSsRRp
前者ふたつは<img>要素を貼りつけてるのはわかるよね? だから、APIが正しく透過GIFを返してくれないと、いわゆる×が表示されるじゃん? 3つ目は、Imageオブジェクトを生成はしているけど どこにも貼りつけてはいないから、目には見えんのですよ
new Imate()〜はgoogleがログとったりするときにも使ってる手法な 豆
961 :
932 :2011/09/01(木) 22:27:06.37 ID:???
>>958-959 理解しました。ありがとうございます。
前者2つでダメということはCGIでしくじってるのかなぁ。
3つ目は、前者2つに比べて明らかにシンプルですよね。並べてみると、わざわざ複雑な前者2つでなければならない理由が分かりません。
しかし、アクセス解析スクリプトがフリーで配布されているのを見ると、大抵前者になっている気がするのですが
前者の利点って何なのでしょう?
962 :
Name_Not_Found :2011/09/01(木) 23:17:27.49 ID:EfUvOGTV
しがらみというか 実際に貼らないとリクエストが飛ばないUAもサポートする為じゃなかろかね googleアナリティクスのガラケー版は 同じようなことをPHPでやって、実際に<img>要素をHTMLに貼る仕様だね
language="javascript" &のエスケープ忘れ どう見ても無知だからです
964 :
932 :2011/09/02(金) 00:11:31.46 ID:???
>>963 それは関係ないようです。
ありがとうございました。
965 :
Name_Not_Found :2011/09/02(金) 00:19:50.97 ID:kj/YRHmB
<html><head> <script type="text/javascript"> function check(box){ var obj=document.getElementById("img"); obj.src=box.options[box.selectedIndex].value;} </script></head><body> <form> <img id="img" src="canada.gif"> <select onChange="check(this)"> <option value="canada.gif">カナダ <option value="korea.gif">韓国 <option value="australia.gif">オーストラリア </select></form></body></html> このサンプルでオーストラリアを選択した状態で更新すると カナダの国旗を表示され、選択ボックスがオーストラリアのまま なのですが、どうしてですか? 選択ボックスが更新を押すとカナダの状態にするにはどうするのですか?
頭の痛くなる日本語だな
Ajax使ってHTTP通信する際にリクエストヘッダーに独自ヘッダーフィールドを追加するこは可能でしょうか?
>>965 カナダにchecked属性付けといて、「checkedがついたオプションを選択する関数」をloadイベントに追加する
Ctrl+F5でもさせとけ
canvas上でちょっとしたアニメーションを作成しているのですが、 canvasのサイズと同じ背景画像を次の背景画像と入れ替える時、 opacityで前の背景画像をだんだん透明にして、 下に重ねた背景画像を少しずつ見せる的なことをしたいのですが、 こういう処理ってcanvasでは出来ませんよね? 下にabsolute指定した違うcanvasをレイヤーのように重ねて、 そっちに新しい背景を置いて、手前のcanvasを透明にして、 透明になりきったところで、下のレイヤーと手前のレイヤーを入れ替えるみたいな方法しかないですか?
972 :
Name_Not_Found :2011/09/02(金) 02:00:51.91 ID:kj/YRHmB
>>969 オプションを選択する関数の作り方が分かりません。
<option value="canada.gif">カナダ
の「カナダ」の文字列部分はどのように操作するのですか?
select要素のvalueプロパティを書き換えればいい
単にcheckを直接実行するだけで正しい画像になるんじゃないの selectを渡さなきゃならんみたいだけど
>>971 canvasのdrawImageとglobalAlphaでcanvasに直接描画するのはどうでしょう
スレ立て人ですが、またまたLvが足りないので誰かおねがい〜
基本的に
>>1 と同じ、ただし、
>>258 のとこだけ直す、ということで〜
978 :
977 :2011/09/02(金) 13:11:53.88 ID:???
かぶった…とかいってスレの浪費をしてるけどまっいいか。
981 :
Name_Not_Found :2011/09/02(金) 13:56:46.85 ID:ync2rois
IEでもFireFoxでもChromeでも崩れない十字カーソルのソース、どこかにありませんか?
983 :
Name_Not_Found :2011/09/02(金) 15:43:34.03 ID:8tJXfoOd
YUI3で開発されている方いますか? YUI3ではシードファイル1つを読み込んだ後、以下のようにサンドボックスを作り、 依存ライブラリの読み込みをローダ(YUILoader)に任せるコードが一般的ですが この場合、読み込まれる各jsファイルは圧縮されたファイルとなり ブレークポイントを挟むなど、コードと照らしながらの開発が困難です。 ※以下の例ではfoo、barそれぞれのライブラリの使用を指示しており、 圧縮されたfoo.min.js/bar.min.js(及び依存ファイル)が読み込まれる YUI().use("foo","bar", function(Y){ /* 実処理 */ }); おそらく開発用に、圧縮されていないファイル(foo.js)や デバッグ用(foo.debug.js)を読み込ませる指定方法といったものがあると思うんですが、わかりません。 ご存知の方いましたらおしえてください。
>>983 YUI Configuratorでdebugを
改行等そのまま表示の場合はrawに
987 :
983 :2011/09/02(金) 17:17:38.64 ID:8tJXfoOd
>>986 ありがとうございます。ひとまずうまくいきました!
生成されるファイルのパスが最新版のものだったので、ついでにバージョンアップもw
YUIはかなり更新のペース早いですね。
あと思い出したのですがYUI()の引数に設定オブジェトを渡す方法もあったかもしれません。
ちょっと公式が模様替えで、詳細見つからないんですが、なんとかなりそうです。
たすかりましたー
988 :
983 :2011/09/02(金) 18:36:11.20 ID:8tJXfoOd
土日ってこんなにレスないもんだっけかw まぁ埋め
992 :
Name_Not_Found :2011/09/04(日) 14:20:53.25 ID:8Me321Kn
うめ
993 :
Name_Not_Found :2011/09/04(日) 21:09:14.18 ID:dsHrqILO
ってか992かよ。 グローバル変数をあまり使うないほうがいいから クロージャを使いましょうって本に書いてありましたが、 クロージャもあまり好ましくないって記述が別の本にもありました。 どうしろっていうのですか?
適材適所という言葉を君に送ろう
995 :
Name_Not_Found :2011/09/04(日) 21:14:52.44 ID:dsHrqILO
>>994 分からねーよ、オッサン
Fラン大のオレにも分かるように説明してください。
>>993 何というステレオ思考
これこれこういう理由で使わない方がいい、という前提があるだろ?
>>993 では「全てのケースで使わない方がいい」と読めるが実際は違うってことだ
若者よ、人生に大事なものそれは 苦労じゃ
ハハッワロス
おあとがよろしいようで
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。