+ JavaScript の質問用スレッド vol.79 +
【質問を書く上で】 1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。 2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!) 長い(1レスに入らない)場合はアップロードしてURIを貼る。 3)初心者という言葉は危険なので使わない方がよい。 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。 4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。 ただ「動きません」「エラーです」は何も情報がないため嫌われる。 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!! OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。 5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度 手間を食わせる可能性大 6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け! 7)質問はまっとうな(他人に理解できる)日本語で。 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
【FAQその1】 Q1. 開いた別窓/フレームの内容にアクセスできないのですが… A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。 Q2. JavaScriptでローカルファイルを読み/書きたいのですが… A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに… Q3. 同じタグの中でonclick="foo()"とonclick="bar()"を同時に使いたいのですが… A3. セミコロンで複数の文を区切れます。onclick="foo();bar();"としましょう。 Q4. document.write(...)でページ内容を追加したいのですが… A4. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。 部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、 (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。 innerHTMLは非標準ですがIE、Opera、Safari、Gecko(N6/N7/Firefox等)で対応済。 Q5. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが… A5. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるか <div><table>...</table></div>とでもしてdivのinnerHTMLを書き換えましょう。 Q6. DOMでtable要素にtr要素を追加しても表示されないのですが… A6. DOMでは(XHTML 1.x除く)tbody要素にtr要素を追加する必要があります。 tbody要素はtbodyタグを書いていなくても自動的に作成されます。 またはtable.insertRow()/tbody.insertRow()を使いましょう。 Q7. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが… A7. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。 Q8. フォーム部品名を変数にした「...myform.変数名.value」が動きません… A8. 「document.forms.myform.elements[変数名].value」でどぞ。 JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。 Q9. Aタグのonclickで動作指定してるのですが時々動きません… A9. 「onclick="...;return false"」としないとページ移動しちゃうから。
【FAQその2】 Q10. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが… A10. 取得には document.defaultView.getComputedStyle() を使う必要あり。 IEでは要素オブジェクトのプロパティcurrentStyleを使う。 Q11. 100*1.15の結果が114.999…998となってしまうのですが… A11. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。 Q12. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが… A12. IE7/Gecko/Opera/Safariのnew XMLHttpRequest()、IEの new ActiveXObject("Msxml2.XMLHTTP.6.0") (または"Msxml2.XMLHTTP.3.0") を使えばできます。古いブラウザだと隠しフレームに読むなどのワザが必要。 Q13. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません… A13. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。 複数の関数を呼びたいときは obj.onclick=function(){foo();bar();}; という風に無名関数を作りましょう。中に書かれたコードが実行されます。 Q14. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが 「"...this..."」とか「function(){...this...}」ではうまく行きません。 A14. それらが実行されるときはthisは別のもの(window等)を指してしまってる。 「function(x){return function(){...x...};}(this)」のようにthisを別の変数に 束縛しその変数を使って。循環参照によるメモリリーク問題あり(この項記述検討中) Q15. 文字列の置き換えをするときにコードを使いたい(Perlのs///e)のですが… A15. string.replace(/.../,function(str,p1,p2,...,offset,s){...})としましょう。 正規表現にマッチした文字列がreturnで返された文字列に置き換えられます。 各引数はstrがマッチした部分文字列、p1,p2,...が1番目、2番目、…の()の中身、 offsetがマッチした位置、sが置き換え前の文字列全体になります。
【FAQその3】 Q16. input type="file"の値を設定(参照)できないのですが… A16. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。 Q17. getElementById('ID名')や$('ID名')で要素が取れないのですが… A17. コード実行時点でHTMLがそこまで読まれてない。onload中でやるとか。 【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】 ・仕様を読む:回答者なら仕様の該当部分は読んでいるべき。質問者でも 仕様を読まずうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。 ・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。 ・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと は無視」は不毛。質問者が分かって選択していれば尊重する。無知か らIE専なのは指摘してあげると親切。 ・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される 可能性大。非標準機能も損得を分かった上で使うならよい。 ・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、 そこだけ見ているとIE専になる。あとは上2件と同様。 ・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当 な理由があることも。尋ねて分かってないようなら煽っても可(w ・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選 択するべき。一概にどちらは駄目、とは言えない。 ・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性 で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。
8 :
Name_Not_Found :2010/06/24(木) 17:45:18 ID:md1cxJO1
1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。
ただの意思表明だな
12 :
Name_Not_Found :2010/06/24(木) 18:54:57 ID:md1cxJO1
>10 どういう風に作ればいいのでしょうか?
setintervalで
14 :
Name_Not_Found :2010/06/24(木) 19:33:47 ID:uXE+3ii/
「マウスストーカー うざい」で検索したらいい
IE(ver8で確認)ではinnerHTMLで取得した値は行頭スペースや改行コードが除去されてしまっているようなのですが IEでelementから改行コードを保持したままソースを取得するにはどうすればいいでしょうか? chrome5やFirefox3.6ではちゃんと行頭スペースや改行コードを含む値が得られました。 取得しようとしているelementの中身はテキストとbrタグだけではなく、色々なタグを含んでいます。
IEを無視
要素に任意の値を持たせたいんだけど何か方法はある? IEなら <span style="hoge1:abc;hoge2:xyz" /> みたいにstyleプロパティに任意のデータを割り当てられたんだけど Firefox,Opera,Chromeは全部ダメだった。
>>18 なんでstyle属性を使おうとしてるのか理解に苦しむが
<span hoge1="abc" hoge2="xyz" />
じゃ駄目なのか?
むしろこれでいいじゃないか <input type="hidden" value="="hoge1:abc;hoge2:xyz" />
21 :
20 :2010/06/24(木) 22:54:19 ID:???
すまんちょっとミスった <input type="hidden" value="hoge1:abc;hoge2:xyz" />
>>16 そもそも、改行付きのコードを取って何に使いたいわけ?
それによっては改行いらんと言えるかもしれん。
>>18 <span data-hoge1="abc" data-hoge2="xyz">
getAttribute で取る。
Firefox、Safari、IE でさっきテストしてみた。
xmlなの?
25 :
Name_Not_Found :2010/06/25(金) 18:49:12 ID:1LAdTfal
既存の属性だけでやる場合だと、 relとかclassが犠牲になることが多いな、俺は。
jQueryのプラグインだとtitleやclass使ってる例が多いね。
27 :
Name_Not_Found :2010/06/25(金) 22:33:19 ID:xvY3awsI
OS:WinXP-Pro,ブラウザ:Firefox3.6.4使用
JSでテキスト(data0.txt)の中身を読み込んで、ブラウザでalert()出力したく思って
いますが何も表示されないので困っています。
テスト段階なのでdata0.txtは1行のみの極単純なものです。
(テキストの中身: 西暦,為替[円/$],名目GDP[兆円],間接税率[%],税収[兆円])
参考にしたサイトは下記です。
ttp://f29.aaa.livedoor.jp/~morg/wiki/index.php?JavaScript%2F%B3%B0%C9%F4%A5%C6%A5%AD%A5%B9%A5%C8%A5%D5%A5%A1%A5%A4%A5%EB%A4%F2%C6%C9%A4%DF%B9%FE%A4%E0%A5%B5%A5%F3%A5%D7%A5%EB <書いた内容> ※すいません全部書きます。
function myReadTextFile(strFileName) {
iomode = 1;
format = 0;//ASCIIフォーマットで読み込む
// ファイルシステムオブジェクト
myobject = new ActiveXObject("Scripting.FileSystemObject");
// OpenTextFile()でファイルを開く
file = myobject.OpenTextFile(strFileName, iomode, true, format);
strFileData = "";
// eofが来るまで 1行ごとに読む
while (!file.AtEndOfStream) {
// ReadLine() で1行読む
strFileData += file.ReadLine()+"\n";
}
// ファイルを閉じる
file.Close();
// データを返す
return strFileData;
}
window.alert(myReadTextFile("data0.txt")+" です");
すいませんが問題点をご指摘願います。
FirefoxでActiveXは使えません
29 :
27 :2010/06/25(金) 23:16:08 ID:???
>>29 使えません。
それはWSHだ。IE上で動くJavaScriptですらない。
webブラウザでファイル読みたいなら今のところajaxじゃないか
CGI使えないサーバにHPがある所では無理ですよねえ...
クライアント側のjavascriptでどうこうしたいというなら、 CGIが使えるかどうかなんて関係ないんじゃないか
できる 自分でブラウザ分岐を書くのが面倒なら、 prototype.jsのAjax.Requestを使えばいい
37 :
27 :2010/06/26(土) 01:56:47 ID:???
XHR使ってもChromeはダメなんだっけか。 まあHTTPを介さず、ローカルのファイルに直接アクセスしようという 発想自体がJavaScriptの(少なくとも現在のJSの)守備範囲から外れているので、 そういう制限がかかってくるのはもう仕方がない。
39 :
27&37 :2010/06/26(土) 04:15:13 ID:???
>>38 う〜ん、そうなんですか。。。
Canvasタグでも画像は簡単に読み込めたので、テキストも簡単に
読み込めると思っていました。
>>39 少し前まではChromeでもXHRでローカルファイルにアクセスできたような記憶がある
Operaの最新版とSafari4.05ではアクセスできた、IE8は無理だった
複数のブラウザでの動作を狙うなら、テキストの中身を直接jsに書き込む方が手っ取り早いかもね
>>39 落ち着け。まず整理しよう。
おまえがやろうとしていることは、
1. htmlが置いてあるサーバ内にあるテキストを読み込みたい
2. htmlが置いてあるサーバではないが、web上のどこかにあるテキストを読み込みたい
3. htmlにアクセスしてきたユーザマシン内にあるテキストを読み込みたい
の、どれだ。
1なら簡単にできる。2ならちょっとトリッキーなことをすれば出来る。
3は無理だ。ただし、まずファイルをアップロードさせれば1か2の手段で読むことは可能だ。
>>40-42 お手数をお掛けします。私がやろうとしているのは、
PC売り上げデータなどのテキスト(CSV)を作成(更新)
→ サーバーにUp
→ リロードなどで最新の情報を参照してHTML5のCanvas(グラフ)を更新
という流れで、気象情報で例えると過去24時間の地区別降水量を
1時間毎に更新グラフで見るというものです。
ですので、
>>41 さんだと1の方法ですが、自己レス
>>37 の
通りブラウザ依存性があったりして困ってます。
引き続きアドバイス願います。
てきとーなライブラリでできんじゃねーのそんくらい
多分やろうとしてることに対してブラウザ依存は関係ないだろう
前スレでGIFアニメについて質問した者ですが、 普通の複数の画像をJavaScriptでアニメーションされることで解決しました。 ありがとうございました。
IE(8) では Canvas 使えない iPhone / iPad では Flash 使えない 悩ましい所だよな exCanvas などあるが文字列描画に難あり……
初歩的な質問失礼します 関数を定義する際に引数の型を厳密に決める事は出来るのでしょうか? また関数を初期化するときに引数がある時とない時と動作を変えたい(要するにコンストラクタ)のですがその場合どうすればいいでしょうか?
コンストラクタでなくオーバーロードでした そちらでググッたらどちらも自己解決しました。失礼しました
>>43 それだとサーバ側のcgiも自分で作るんだよな?
javascriptじゃなくてcgi側でアップロードしたファイルを読んで
その内容を埋め込んだページを戻してやればいいんじゃない?
>>48 自己解決したらその方法も書いとけよ。疑問に思ったことがあって調べたら、
自己解決しましたとだけ書かれてるページに行き着いたら困るだろ。
>関数を定義する際に引数の型を厳密に決める事は出来るのでしょうか?
出来ない。
引数にどんな型の変数が渡されたのかをtypeofで調べれば実行時エラーくらいは出せる
>また関数を初期化するときに引数がある時とない時と動作を変えたい
javascriptでは関数定義と呼び出し引数の数が違ってもエラーは起きない。
typeofしてundefinedだったら引数が省略されてると判断できる。
52 :
27&37&39 :2010/06/26(土) 21:24:26 ID:Dey8sDbd
>>50 さんレス有難うございます。 本を買ってサンプルを改造してました。
OS:WinXP-Pro,ブラウザ:Firefox3.6.4使用
「JavaScriptテクニック・ブック」 古旗 一浩 著 (C&R研究所)のサンプル(p302)
を使ってCSVを読み込んで数値をブラウザ内に表示しようとしてます。
JSはHTMLとは別のmain03.jsとして、この window.onload = function()内に
var msec = (new Date()).getTime();
// ローカルキャッシュさせないために現在のミリ秒とURLを組み合わせる
new Ajax.Request("data01.csv", {// data01.csvを読む
method: "get",
parameters: "cache="+msec,
onSuccess:function(httpObj){
var text = httpObj.responseText;
var LF = String.fromCharCode(10);// 改行コード指定
var tabText = text.split(LF);// 改行で分割
var tbl = "";
for (var i=0; i<tabText.length; i++){
var cText = tabText[i].split(",");
for (var j=0; j<cText.length; j++){
document.write(cText[j]+"\n");
}
}
}
});
これはこれでdata01.csvの数値が表示されたのですが、Firefoxのタブのインジケータで
ドットが円を描きながら延々と回転しています(読み込みの継続を意味しています)。
この読み込み動作を終わらせるにはどうしたら良いでしょうか?
>>19 同一クラスに同一のデータをまとめて設定したかった。
style タグで指定できればスクリプトを弄らなくてすむので
プラグインとして実装するときに扱いやすいかなと。
>>47 FlashCanvasとかuucanvasとかは?
というかcanvasで文字列描画するより普通にabsoluteなdiv内に書いた文字列を重ねればいいんじゃないかと なんせIE以外のブラウザもcanvasの文字描画は実装度合いがまちまちだし
>>47 iPhone、iPadは結局専用のページにしかならないから悩む必要は無いと思うよ
>>53 特にXHTMLじゃ勝手に属性を追加するわけにもいかないし、
そういうことをしたければ既存の属性を使うべき。
<span class="hoge[name1:val1, name2:val2]"></span>
<input type="text" title="hint='IDを入力してください'" />
とか。
ただ、本来スクリプト側に属するべき長ったらしいデータが
HTML側に染み出してくるのはあんまりお勧めできない。
呼び出し側で設定するんじゃダメなの?
たとえばjQueryのプラグインのほとんどは配列でオプションを
渡すように作られてるよ。
配列っつーか、JSONな。
コードの中に書くんだから配列だろ 別にJSONで書いたっていいけど見づらくてかなわん
JSONて連想配列じゃないの?
JSONはシリアル化する汎用フォーマットだろ。 XMLとかも。入出力が用意されていれば中身を知る必要はない。
イベント発生時ではなく単純にある時点で シフトキーが押されているかを確認する方法はあります?
>>63 keydownイベントでフラグをオンにし、keyupでフラグをオフにする
JavaScriptが動き出す前から押され続けてる場合はどうするの? (↑↑とは別人)
これは? window.event.shiftKey
(↑↑) イベント発生時でなければeventプロパティにオブジェクトはセットされないだろうよ
↑↑
↓
←右を見ろ
L←→R
B A
73 :
Name_Not_Found :2010/06/28(月) 13:49:32 ID:tXUL0Gwo
あるブラウザが特定のイベントリスナに対応しているかどうか調べたいのですが、 検索した限りでは直接調べる方法が見つかりませんでした。 ブラウザ(あるいはJSの実行環境)とそのバージョンを取得して、 そこから調べるしかないのでしょうか?
htmlを最初に開いた時に読み込んだstyle(head部分で外部CSSファイルをURL指定)を無効、開放するにはどう書けばよいでしょうか
<!style
>>74 jQuery使うなら
$("[type=text/css]").remove();
レスありがとうございます。jQueryを使うことで無効化は出来たのですが問題点が全く違っていたみたいで解決に至りませんでした 外部参照先のURLを変更して、styleA→styleBとCSSを変更したいのですがjQueryで $("[type=text/css]").attr("href","styleB.css"); とリンク先を変更しただけではCSSが無効になるだけで反映しないんですね。この変更をそのまま有効化するにはどうすればいいのでしょうか? 変更を再度開いた時に維持等は考えない上でお願いします
>>74 <head>
<link id="test" href="/css/test.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" language="javascript">
var head = document.getElementsByTagName('head')[0];
var myCSS = document.getElementById('test');
head.removeChild(myCSS);
</script>
</head>
>>77 styleAのCSSを指しているlink要素を削除して、
その後にstyleBのCSSを指している新しいlink要素を作ればいいんじゃないのか?
>>78-79 レスありがとうございます
DOMの方も色々試していたのですが、たった今単純にCSS元ファイルのリネームミスだったことが発覚しました・・・
たくさんレス頂いたのに本当に失礼しました
こういうアホが多いからな
もう来ないで欲しい
お前がいなくなればいい
なんだと
いっそ世界がなくなって欲しい
>>85 いやいやそれはさすがに困るだろwww
俺としては人類が地球上から消えてくれればそれでいいよ
以前に「JavaScriptプログラミング入門」という本でJavascipt勉強して また勉強しなおそうと思っています。 上記の本は、2002年出版ですので新しく本を買いたいのですが、何か良い本はありますか? やっぱサイ本でしょうか?
>>73 特定のイベントリスナだけ判定したいのなら、"onmouseover" in node のようにinで判定してみるといいかも
判定したいイベント種類を配列にでも突っこんでおいて、ループぶん回せばいいと思う
>>88 javascriptそのものについて学ぶならやっぱサイ本がいいと思う。
ただ、今の時代にjavascriptを活用するというのはjavascriptのライブラリを
活用するってのと同意義なので、それだけってわけには行かないと思うけど。
そこは使いたいライブラリによって変わると思う。
配列要素のチェック方法で質問です。 配列arr0の中身が最初、false, false, false, false, false で、処理が進むと false, true, false, false, false → false true, false, false, true → ・・・ と段々ture の数が増えて(trueになる要素のインデックスは不定) 最終的に全部がtrueになる(falseが一個も無い)を検出する方法にはどんなものが ありますか?
一番素直なアイディア: 配列を最初から最後までスキャンする。 falseが途中で1回でもでてきたらアウト、 全部trueで最後まで到達したらOK 一番手っ取り早いアイディア: true/falseのどっちかしかないことが確実なら、 ソートして最初の要素がtrueだったら全部trueと判断する ひねくれてるアイディア: Array#map()
ああごめん、every() か some() でもいいのか。 本質的には最初のと同じ。 var array1 = [true, true, false, true, true]; var array2 = [true, true, true, true, true]; var test = function(a){return a}; alert( array1.every(test) ); // false alert( array2.every(test) ); // true
94 :
88 :2010/06/30(水) 03:12:41 ID:???
>>90 ありがとうございます。
jQueryやprototype.jsにも興味がありますが、まずは基礎をしっかりやりたいと考えているので
サイ本に手を出してみようと思います。
>>92 ,93
なんで前提も聞かず(書かず)にmapとかeveryとかsomeとか出すの?
初心者への嫌がらせは楽しい?
96 :
73 :2010/06/30(水) 03:59:48 ID:???
>>89 ありがとうございます 次のようなhtmlで実験してみました
<html>
<body>
<div id="kore">test</div>
<script type = "text/javascript">
node = document.getElementById("kore");
if ("onmouseover" in node) alert('対応してるよ');
else alert('対応してないよ');
</script>
</body>
</html>
IE7及びGC5では「対応してるよ」FF3.6では「対応してないよ」と表示され、
この方法で対応しているイベントタイプを調べる事ができるかどうかは
ブラウザ依存のようです
97 :
91 :2010/06/30(水) 08:00:09 ID:???
>>92-93 >>95 おはようございます。JSでもmap,every,someが使えるのですね!
ActionScriptの兄弟だから当たり前か。。。。
試してみます。
IE(6-8)はmapとかeveryとかsomeとか、ECMA-262 5th Editionで追加されたメソッドには対応してない
Array.prototypeを拡張すれば同じことはできるようになるけど、
そうするとfor in使ったときに拡張したプロパティが出てきてしまっていつバグの原因になるかわかったもんじゃない
Array.prototype.hoge=true;for(var k in [])alert(k)// hoge
IEの対応考えなくていいならmapとか使えるけど、対応するなら避けるべき。
これが
>>95 のいう前提
Array に対して for in 使うってアホの子のすることだと思うんだが……
>>91 for(i=0;arr0[i];++i);
alert (arr0[i]===void 0);
hasOwnPropertyつかってないライブラリが無くはないかもしれない
99はArrayに対してって言ってるけど
あんちゃんが配列にfor inはダメって言ってた
なんでだめなの。
こいつを見て欲しい
119行目
jQuery.extend(cfg, o);
http://www.reconstrukt.com/ingrid/src/js/jquery.ingrid.js cfg.url には url:remote.php が設定されてるじゃん。実はこれ消えるんだわ。ファイル名だけ残して。
ingridをダウンロードして自分のローカルサーバーで動かそうとしたわけ。
htmlは<a href="
http://www.reconstrukt.com/ingrid/src/example1.html ">サンプルページ</a>から。
でさーまったく動かんのよ、どうしたもんかなぁと思ったら
サンプルのsrcとダウンロードしたフォルダ構成が違うわけ。
まじうぜぇと思って、まあ直したさ。で、で、今度は
「Error: Could not load Please check the URL and try again.」
とかいっちゃってるの。なんなのこいつって調べたらリクエスト帰ってきてねーじゃん。
なんでurl消えるの?しかたなしにsample.htmlと同じフォルダに置いたさ。jqueryはurlが嫌いなの。sample.htmlと同じ場所が好きなの?
もう!jQueryのextend についてぐぐってくる!
>>106 JavaScriptの配列=全て連想配列だと申すか
配列⊃連想配列だろ。 「配列と連想配列の違い」というタイトルの記事を貼った相手に何言ってんの?
110 :
107 :2010/07/01(木) 03:05:17 ID:???
分かった。
111 :
107 :2010/07/01(木) 03:14:38 ID:???
死にたい。
>>108 Array instanceof Object = true
超短いcokie取得scriptとか無い?
ないよ
数年ぶりにやってきたけどすごくスレのレベル下がってるのな 何があったんだ
117 :
Name_Not_Found :2010/07/01(木) 12:58:00 ID:UzY5ngUY
iframeのonloadイベントって、画像含めた中身が全て読み込まれてから発動って認識であってるかな? chromeだと、たまに要素の高さが取得できないのだけど。
レベルの高い人が特に質問するでもなく質問スレを数年ぶりに覗きに来て さらに「数年ぶりに来てみたらすごくレベルが下がってるよ!下がってるよー!」なんてレスをしたくなる心境にさせる このスレはそんな魅力的なスレ
どっちかというと自分がその間に勉強したりしてレベルが上がってるから そう思うんじゃないの。過去スレ全集見れば分かるんだから、そういうこと 言うのなら「何番のスレの何番付近はこんなちゃんとしたことをやっている」 とか書いて欲しい。そしたらこちらも「でもその当時だってこんなひどい 質問や解答があったでしょ」とか言えるから。何も調べず自分の印象だけ 言いっぱなしとか腹立つね。
コンピューターに表示されてる文字に腹立ててどうするんだよ… あんまりネットに感情移入すると危ないぜ
バカかお前?
つまりこういうことか >116,118-123 スレチ
124 :
Name_Not_Found :2010/07/01(木) 17:31:27 ID:Di0C5DNP
>>117 そうよー、frameに限らず。
高さが取得できないってのは良く解らんが。
DomContentLoadedでやったら早すぎて取得できないから、
あえてonlaodでやる、ってのならわかるんだけど。
例えばこんなふうなHTMLで、
<img src="foo.png" style="float:left;">
<p>文字文字文字…</p>
画像がロードされて幅高さが確定しないと、
ドキュメントの幅高さも決まらない、とか。
125 :
117 :2010/07/01(木) 19:35:20 ID:???
>>124 やっぱりそうだよね。jQuery使ってるんだけど、
$('<iframe/>').attr('src', 'example.html').load(function () {~高さ設定~}).appendTo('body');
で問題ないはずなのだけども。
appendとsrcの順番か。ready内で処理してるからか。appendしなくてもロードしてるのか。
わからんなぁ。もうちと試行錯誤してみる。
126 :
Name_Not_Found :2010/07/01(木) 20:23:41 ID:Di0C5DNP
>>125 ん?jqueryのload()って、onloadなの?
DomContentLoadedじゃないの?
いや、onloadだよ。readyってのがDomContentLoadedかな。
これでエラーが出ます。文書とソースはシフトJISです。 原因はなんでしょうか? m = str.search( "関与" ); if(m==-1) return "err ";
129 :
128 :2010/07/01(木) 23:33:02 ID:???
strにはシフトJISで関与が入っています。
追記 m = str.search( "関" ); これだと、正常位置にヒットします。
エンジンは、SpiderMonkeyなんです。 ソフトウェアに組み込みたくて、このエンジン呼び出して使いたいのですが。
>>131 日本語2文字以上だとどれも検索出来ないんですが。
「ページ」とかもできないです。
javascriptが正常動作すれば検索可能なはずでしょうか。
原因はSpiderMonkeyでしょうか。
>>133 「−」がダメ文字な件
ちゃんと調べてる?
135 :
134 :2010/07/01(木) 23:49:07 ID:???
×「−」がダメ文字 ○「ー」がダメ文字 失礼、重要なところを間違えた
駄目っぽいです。 事件 関連 とかもできないです。 文書もコードもUTF-8にしてもHITしないです。
"関与".search("関与") で0になったが何が問題なの?
returnを関数の外に書いてるからエラーが出てるんじゃないの? これだとエラーならないよ var str = "関与"; var m = str.search( "関与" ); if(m==-1) function(){ return "err "};
>>128 とりあえずさ、単純な例で問題を切り分けなよ
こんな感じで
var str = 'あいうえお関与かきくけこ';
var m = str.search('関与');
alert(m);
var str = 'あいうえお関与かきくけこ'; var m = str.search('関与'); をやったら m==-1 でした。
FirefoxとIEでチェックしたが5になるよ。使ってる環境やブラウザのバージョンはどんな感じ?
ぶっちゃけわけわからん returnとalert勘違いしてるだけちゃうんかと
SpiderMonkey 1.8 rc です。 firefoxに入っているやつの最新版です。 ビルドが失敗している可能性があるので確認してます。
144 :
141 :2010/07/02(金) 01:29:30 ID:???
>>140 っと、すまん、sjisだと-1だな。
日本語のパターンマッチはとりあえずutf8でやっとけ。
ビルド時にまるちらんげっじでsjisのオプションとかないの?
みなさんサンクスです。 原因とくていできました。 エンジンに渡すときに内部形式に変換する部分で失敗しているようです。
146 :
145 :2010/07/02(金) 03:09:11 ID:???
解決しました。 エンコードをUTF16に統一して、UTF16用の関数を呼ぶことで出来ました。
147 :
141 :2010/07/02(金) 19:00:34 ID:???
>>146 FreeBSDでSupiderMonkey 1.70をビルドしてみたけど、
utf8サポートのオプション、普通にあるじゃん。
CFLAGS="-DJS_C_STRINGS_ARE_UTF8"
マウスでクリックした位置を取得して、input textに入れて、取得した値をPHPに渡すプログラムを考えているのですが、マウスをクリックしたら確認のアラートを出してOKを押されたらそのまま別ページに移動と送信をさせたい。 クリック→アラート確認→送信ボタンではなく、クリック→アラート確認→別ページで飛ばしたいんです。簡単に言うとアラートでtrue入ったら値をPHPに飛ばしたいです。inputに入れずに飛ばせるならそれでかまわないんですがね。 ソースは最低限の部分のみ書いてます。 function clickhandler(event) { if (!event) { event = window.event; } var hx, hy; if (document.all) { // for IE hx = event.offsetX; hy = event.offsetY; } else { hx = event.layerX; hy = event.layerY; } document.xy.x.value = hx; document.xy.y.value = hy; if(confirm("この位置でいいですか??")==true){ }else{ } // return [hx,hy]; } function eror(event){ alert("その位置はすでに使用されています。"); } <a href="javascript:void(0);"><div onclick="clickhandler(event)"> <form method="post" action="c.php" name="xy"> <input type="text" name="x"> <input type="text" name="y"> </form>
BASIC認証時のユーザ名って、javascriptで取得できたっけ?
非同期通信でサーバー上のテキストを取得・解析するスクリプトを書いています。 汎用性を高めるため通信部と解析部を別の関数として定義しようと思います(下のスクリプトではalertを呼び出しているだけ)。 しかし、下のスクリプトではコールバック関数が呼び出されていないようです。原因をお教えいただければ幸いなのですが、お願いいたします。 XP SP3、Firefox3.6.6です。 <html> <head> <script> function httpGet(url, func) { var xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = function() { if ((xmlHttp.readyState == 4) && (xmlHttp.status == 200)) { return func(xmlHttp.responseText); } }; xmlHttp.open("GET", url, false); xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlHttp.send(null); } function loadLog() { var callback = function(data) { alert(data); }; httpGet("./test.txt", callback); } </script> </head> <body onload="loadLog()"> Test </body> </html>
REMOTE_USERって、javascriptで取得できたっけ?
試せよカス
どうやって?
155 :
Name_Not_Found :2010/07/03(土) 18:06:15 ID:Gt/8gUgj
下記にカプセル化するコードを書いてみましたが、 一般的な書き方とかなんかあったりしますか?一応下記でもカプセル化されてるっぽいんだが。。 var Sample = function(){ var hoge = ""; // private // public this.getHoge = function() { return hoge }; this.setHoge = function(_hoge) { hoge = _hoge; }; // public this.out = function() { alert(in()); } //private var in = function() { return "test"; } }
>>151 Firefox3〜は、同期通信でonreadystatechangeが動かなかった気が
>>155 長くなりすぎるから書かないけど、
オブジェクト指向したかったらJavaScript: The Good Partsのp59〜がまじおすすめ
本屋で立ち読みするといいよ
158 :
Name_Not_Found :2010/07/03(土) 19:27:20 ID:Gt/8gUgj
>>157 情報有難うございます。
立ち読みします。
>>156 同期通信の場合はonreadystatechangeは使えないと思いますが、
あ、なるほど。openするときにモードを同期モードにしちゃってますね。
すみません。とんだ凡ミスでした
>>155 それだと全部のオブジェクトがそれぞれ(同じ動きをする)別の関数を持つことになるのが
ちょっと気になるが、。
一般的な書き方ってのは無いが有名なライブラリには、大抵クラスを作る手段は用意されてるな。
例えばprototype.jsのClass.create使うとか。少なくともprototype.js使ってる界隈では
統一された書き方になる。
161 :
質問させて下さい :2010/07/05(月) 08:24:38 ID:e6iQa0at
すいませんがこういうスクリプトの呼び方?あるのでしょうか
教えて下さいm(_ _)m
YAHOOなどでつかわれていますが、
ttp://www.fumi23.com/ ニュース 音楽 映画・・・・とニュースメニューがありますが、
このスクリプトの名前とかサンプル紹介している所がありましたら
教えて頂けないでしょうか?
>>161 ここはスクリプト書く人のためのスレであってコピペしたい人のスレじゃない
タブメニューでググレ もう来るな
164 :
Name_Not_Found :2010/07/05(月) 13:21:59 ID:ga6Bd0m6
encodeURIComponentはUTF-8用ですが、S-JISやEUC-JPでエンコードする方法ってありますか? ライブラリでもOKです。
165 :
Name_Not_Found :2010/07/05(月) 19:37:09 ID:LMPH5QQ+
>>164 エンコライブラリはググれば直ぐ見付かる
chromeでjavascriptで要素の中身を設定し、幅・大きさとか位置を変化させても 見た目が変化しない(”要素を検証”すると正常表示に変化)のはどなたか心当たりありませんかね? やっていることは↓のようなこと(fの引数の文字数を変化させて実行)なのですが、このコードでは再現しないんですよね・・・ 「常時画面左右中央表示」 var title = document.createElement('p'); document.body.appendChild(title); title.style.position = 'absolute'; title.style.top = '0px'; title.style.left = '50%'; title.style.margin = '0px'; var text = '+'; function f(t) { title.innerHTML = t; title.style.marginLeft = '-' + (title.offsetWidth / 2) + 'px'; } f(text); 他には画像のwidthなどを大きく(スクロールバーが出るぐらい)設定したりです。 ちなみに同じ条件で二度実行させると正常表示されます。 あと、時々正常にも動作するのでwebkitのjs部分の仕様なんじゃないかと思い始めているところです。 IE/Firefoxでは正常に動くんですが・・・とりあえず、コードが長いので、再現出来る範囲まで短くしてみます。
テキストファイル最後の改行を削除したいのですが…
D&Dして実行しても何の変化もありません。
下記サイトを参考にしました。ご教示下さい。
http://www.atmarkit.co.jp/fwin2k/win2ktips/308strrpl/strrpl.html <?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<package>
<job id="WordReplace">
<?job error="True" debug="True" ?>
<object id="objFs" progid="Scripting.FileSystemObject" />
<script language="JavaScript">
<![CDATA[
var objArg=WScript.Arguments;
for(i=0;i<objArg.length;i++){
strTmp= objFs.BuildPath (objFs.GetParentFolderName (WScript.ScriptFullName), objFs.GetTempName ());
var objTs =objFs.OpenTextFile(objArg(i),1,false);
var objTs2=objFs.OpenTextFile(strTmp,2,true);
do{
strLne=objTs.ReadAll();
strLne=objTs2.Write(strLne.substring(0, strLne.length-2));
objTs2.WriteLine(strLne);
}while(!objTs.AtEndOfStream);
objTs.Close();
objTs2.Close();
}
]]>
</script>
</job>
</package>
スレ違い、それWSH JavaScriptじゃない
JScriptかもしらんが、少なくともWeb製作板に出す質問じゃねえな。
普通にテキストエディタの置換で事足りるよね(´・ω・`)
>>166 再現するコードを示さんとわからないって。
inline要素のサイズを変えようとしているとか?
>>166 昔同じような質問があった気がする。その時の解決策はその
要素をいったんDOMツリーから削除して大きさを変更して挿入
するとかだった気がする。
レスありです pなのでブロック要素です。表示位置が更新されないだけなんですよね(要素を検証で正常表示位置に移動) >DOMツリーから除外 removeChild -> appendChildでいいんですよね?変化は無しです。 最初は要素の中身を書換じゃなくて親要素のinnerHTMLでやっていたのを メモリリーク対策で要素固定にしたのですがChromeだけでおかしく・・・ setTimeout・setIntervalでやっても同じだとどうにも・・・ ソースはHTMLごと全部になってしまいそうです。。
174 :
Name_Not_Found :2010/07/06(火) 11:27:17 ID:pMo0A1Vu
>>166 試してみたけど、かいてある通りに動くなあ。
何に困ってるのかイマイチ把握出来なくてすんません。
titleって変数名から察するに、
何かタイトルバー的なもので、状況によって表示する文字列は変わるけど
常に真ん中表示したい、ってことだよね?
書いてあるコードだとブロックの幅は明示されてないから、
ほっときゃ親要素に追従するじゃん?だから
position:absolute; left:50%; にして、
幅の半分ネガティブマージンで左に戻す、って部分やめて
text-align: center;
ってするのはいかんの?
>>174 レスありです
問題は、Chromeで要素のマージン等を指定したときに見た目の位置が反映されてないことなんです。
(alert(title.offsetWidth);をmargin指定の前後に置いてもちゃんと数値変化している)
(右クリ要素を検証などきっかけを与えれば正常表示)・IE/FIREFOXは正常
>常に真ん中
はい。ですが、ページの一番上に必要で、他の要素に影響を与えない様にする必要があったので、absolute指定です。
根本的解決ではないですが、pの代わりにcenterを使ったら出来ました。なんていうかすみません。
無意味だなぁ
>>166 ほかの人も言ってるけど、そのコードをChromeでテストしてみたら、
あなたの期待通りに動いているように見える
ほかに問題があるんじゃない?
蛇足ながら、pは段落用だから、h2なりdivなりを使ったほうがいいのと、
DOMにinnerHTML使うのは美しくない
178 :
166 :2010/07/06(火) 16:31:46 ID:???
>>177 私もそのコードでは期待通りに動きます。コードが長くなると変化があるようです?
>p
確かに。ほかのはdivにしておきますありがとうございます。
180 :
177 :2010/07/06(火) 17:17:01 ID:???
>>178 あー、再現しないって書いてあったね。すまん。
181 :
Name_Not_Found :2010/07/06(火) 18:34:12 ID:pMo0A1Vu
>>178 もしかして、文字列差し替えると真ん中にならないとか、そんなことだったりしてな。
次からはエラーが再現できるコードをお願いします。
>>179 要塞じゃねーか。そんなとこ怖くていけるか!
182 :
178 :2010/07/06(火) 21:21:12 ID:???
>>181 まさにそのとおりです。文字列を差し替えても、表示文字列は変わるのに、左端の位置が変わらなかったのです。
領海です。
Javascript Graphics Library Pixel graphics in Javascript の内容のネタを書きました。 Javascriptで直接Canvasを使用してグラフが描きたい人はどうぞ
>>185 そんなサイトがあったんですね。
ちょっとのぞいてきます。
ありがとうございます
OperaでJavaScriptでタブの移動って無理なんでしょうか
ブラウザのタブをウェブ上のスクリプトからいじりたいのなら、それはできない できたらセキュリティ上の問題になる
ページ内に「あいうえおかきく」と言うテキストがあったとして、「かきく」を強調すると言う事をやりたいのですが、replaceを使わないでやる方法ありますか?
indexOfとsubstring(substr)
192 :
Name_Not_Found :2010/07/07(水) 21:41:44 ID:IV4llgIO
/(.*)(かきく)/でマッチさせて、後半を消して、 手作した<strong>かきく</strong>を前半の後ろに置く。 と考えてみたけど、どう考えてもreplace使わないと面倒くさすぎる。
>>190 "あいうえおかきく".split("かきく").join("<b>かきく</b>")
もはやただのパズルw
a='あいうえおかきくけこ' b='かきく' re=new RegExp(b, "g"); span=document.createElement('span'); span.appendChild(document.createTextNode(b)); c=c.replace(re, span); これって大丈夫?
196 :
Name_Not_Found :2010/07/08(木) 18:53:30 ID:lrv9IDpX
太字にしろとは言われてないだろ javascript:'<strong>かきく' が正解
いや、それにスタイルとかイベントとかも指定したくてさ
どうやって?
201 :
Name_Not_Found :2010/07/09(金) 18:12:54 ID:I9DaAZbP
javascript:'<strong>かきく' この時点でスタイル決まってるじゃん で、トリガはonLoadにすりゃいいだろ
>201 説明する気あるの? 無知は答えなくていいからw
そういうことやね
javascript:'<strong>かきく' としたらエラーが出ました。
pseudocodeだよ
ピーエスユードと読んでた時期が僕にもありました・・・
207 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 16:06:27 ID:FizqjisK
ECMA-262の正規表現の略記法で\d(1つの数字にマッチ)って正式に使えますよね?
知らんかった… まあサポート切れたFirefoxは無視していいと思うよ
GoogleChromeで選択文字列を取得する方法を教えて下さい。 ぐぐったりしてみて、window.getSelection()+''; のようにすれば取得できるようなことが書いて あったんですが、うまくいきませんでした。 function test() { var selection = window.getSelection()+''; return selection; } もちろん window.getSelection() でも駄目でした。 わかる方教えて下さいまし。
問題ないはずだけど、具体的にどう駄目なの? エラーが出るの?test()の戻り値がおかしいの?
エラーは出ていません。空白で出力されているだけです。 出力部分を <SCRIPT language="JavaScript"> <!-- document.write("<p>" + test() + "</p>"); //--> </script> みたいな形でやっているので、こちらが原因かとも思ったのですが、test()の戻り値に適当な文字列をセットしたら 出力されました。
document.writeの時点で文字列選択されてるわけないよね
チラっとしか見てないが、宣言を付ける前にHTML 4.01 Transitionalにいろいろ違反しているのは直すべき。
Firefoxだと互換モードでは警告付きでdocument.allが使えて、標準モードでは使えないんだな ともかく、language属性使ってるサンプルなんて参考にすべきでないよ
217 :
214 :2010/07/11(日) 00:50:54 ID:???
>>215 >>216 ありがとうございます。
>>214 のサイトのHTMLの書き方は悪いですね。
自分のはHTML Lintに通る位には修正してあります。
>>214 に書き忘れてしまったのですが、私の標準ブラウザはfirefoxです。
document.all["ID"] を document.getElementById("ID") にしたらURL付きでも動くようになりました。
>>214 のサイトにあるスクリプトはグローバル変数があって嫌なので以下のようにしました。
ところが、alertが「あると」うまくフェードインするのですが、alertをコメントアウトするとうまく動きません。
なぜでしょうか?
function strFade2( id, colors, itv )
{
var color_num = colors.length;
var color_pos = 0;
function fade( ){
if( color_pos < color_num ){
// alert( color_pos ); // これがあるとうまく行く
var c = colors.charAt(color_pos);
document.getElementById(id).style.color = "#"+c+c+c+c+c+c;
color_pos++;
setTimeout( fade(), itv );
}
}
fade();
}
setTimeout( fade(), itv ); ↓ setTimeout( fade, itv ); これはsetTimeout( function(){ fade(); }, itv );と同じ。 実行タイミングを考えてみましょう。
というかalertがあるとなんで動くんだろ
alertで一旦OK押すまで処理が中断。 押したら色変化→setTimeout発動 以下ループと思ったけど、どうだろう。 itvを10000とかにしたらアラートあっても動かないと思う。 アラートがないと一瞬ですべてのsetTimeoutが実行される。
カッコをつけるのは「その場でその関数を評価(実行)する」という意味なので、
話としては setTimeout の中の fade() を fade にすれば終わり
setTimeout( fade(), itv );
↓
var result = fade(); // (a) その場でfade()を実行
setTimeout( result, itv ); // (b) result=undefinedに対してsetTimeout
こう書き直すと分かりやすい(本当は違う、正しくは
>>218 の言う通り)
color_num = 3であれば、
1. まず最初にfade()が呼ばれ、
2. (a)が実行されてfade()が呼ばれ、
3. その中の(a)でさらにfade()が呼ばれ、
4. その中の(a)でさらにfade()が呼ばれ、
5. この時点でcolor_pos=3なのでifブロックは実行されずに終了し、
6. 4.に戻るが、4.のfade()の(b)が実行されてエラーが発生
Firefox使っていれば「意味のないsetTimeoutだ」のようなエラーが発生しているはず
>>218 >>220 >>221 ありがとうございます。
理解することができました。
C++(他言語出して申し訳ないですが)で言う所の
イベントハンドラに渡す関数ポインタと考えれば気が付けた(かも知れない)ミスでした。。。
応用力が無くて恥ずかしい。
>>221 >Firefox使っていれば「意味のないsetTimeoutだ」のようなエラーが発生しているはず
これはどこに表示されるのでしょうか?
ツールメニューのエラーコンソール
>>223 ありがとうございます。
この機能全く知りませんでした。
Firefox使ってるんならalertでデバッグとかアホくさいことせずにFirebug導入するといい printfチックなログも出せる、「firebug ログ」とかで検索すればすぐ見つかる
>>255 ずっと前からfirebug入ってはいるんですけど、全然使ってませんでした。
ちゃんと使い方覚えます。
プロファイルを分けて、 firebug用のプロファイル作っておくと吉
>>213 それはどういうことでしょう?
document.writeでhtmlとして出力されると思うのですが。。。
ちなみにボタンをクリックすると選択した文字列がpopupで表示されるchrome extensionsを作成しています。
>>230 getSelection()は、省略せずに書けばwindow.getSelection()
popupのwindow.getSelection()じゃ駄目
文字列選択されているページのwindowを取得して、そのwindowからgetSelection()を呼ぶ
>>230 文字選択って描画し終わってからじゃないと無理だろ?
ん?
正規表現で「同じ数字が2つ以上」という表現はどうしたらよいのでしょうか?
説明不足ですいません。 例えば「2222」「44」「9999999」という数字全てにマッチさせたいのです。
JavaScript完全に関係ねーぞ
>>236 なるほど、後方参照と言う方法があったのですね。
この場合「/^(\d)\1+$/」という後方参照で解決しました。ありがとうございました。
アホすぎて呆れた
いえ、>236のおかげで検索キーワードから「JavaScript」を削除できたので
>>241 他人が本人を装ってレスしてるのかと思ったけど、本人だったってこと?
>>241 ああ、そういうのあるよね。
ググレカス⇒ググればわかるほどのFAQであることが判明し安心する
とか
244 :
Name_Not_Found :2010/07/17(土) 23:58:17 ID:R0s3129K
<style> .accordion_toggle:hover {cursor:pointer;} </style> リンクにマウス載せたときのこれか?js全く関係ないけどな。
246 :
Name_Not_Found :2010/07/18(日) 00:21:57 ID:UwsBxLPo
>>245 うわあああああ
ありがとうございます!!!
マジでありがとうございます
そかjsじゃなく、cssでの制御なんですね・・・・迂闊
本当に助かりました!!!
クライアントサイドの技術は全然わからんわー 誰か助けてくれ base64でエンコードされた画像データを、 AddImage(base64Data); みたいな感じでブラウザ上に表示(というか横流し)したい。 jQueryのscrollableみたいな感じで、スライドショーみたいなのを実現させたい
251 :
249 :2010/07/18(日) 16:12:43 ID:???
>250見たが意味わからん 違う人教えてくれい
253 :
Name_Not_Found :2010/07/18(日) 17:55:40 ID:u1/Hpl4R
JQueryのtablesorterを使っているのですが、 セルの中身を基準にソートするのではなく、<td title="1-2">四角</td> みたいな感じでタグの属性でソートする方法か代替処理ってできないでしょうか?
254 :
249 :2010/07/18(日) 18:05:15 ID:???
いやいやData URI Scheme自体の話じゃなくて、 サーバー側からプッシュされる画像データを、 次々にスライドショーさせたいんだけど、 javascriptで実現する方法がわからんの。 画像データ自体を取得するjavascriptは書けてる。
なんつーか、上目線で質問するなw
>>254 じゃあ、後は適当にjQueryのanimateで流せば良いだろ
257 :
Name_Not_Found :2010/07/18(日) 19:26:52 ID:u1/Hpl4R
自己解決 textExtractionって元々機能に組み込まれてました。
258 :
249 :2010/07/18(日) 20:15:58 ID:???
>256 知ったかぶんなカスが
259 :
256 :2010/07/18(日) 20:33:26 ID:kRO2x713
>>258 ああごめん、スライドショーか
スライドさせるのかと間違えた
scrollable使えばいいだろ。 というか249じゃ説明になってないだろ。 body.appendChild(img)が分かればどうにかなるとおもうが。 あと態度が悪い。
261 :
249 :2010/07/18(日) 21:58:59 ID:???
まさかおまえらがこんなにもいいやつだとは思わなかったぜ…
sigmafridについて、詳しく書かれてるサイト無い?
>>248 いやだって、js切った時に何も無いとこで指アイコンになったりしない?
>>263 するけど、してもいいじゃん。
今時わざわざJS切るなんて意図的なものだろうし。
90点を95点にするより、50点を80点にするほうが楽だし大事だわ。
>265 あなたの価値観なんて聞いてませんよw
>>265 でも、jsで指定する方がcssで指定するより楽だと思うよ
管理もjs一つで済むし
cssでできる所はcssでやるべきだろ…
場合にもよるけど、htmlをjsで生成してるなら、一緒にスタイルも指定してやった方が管理楽じゃない? jsで機能を付加してやった場合に必要になる効果なんかもさ
document.write("abcde".match(/../g)); →ab,ca,bc これを →ab,bc,cd,de となるようにするにはどうすればいいですか?
matchでは「できません」。
>271 何ならできるかはっきり教えて下さい
少しは頭使って工夫しろよ 一文字目を削除してみるとか
>>266 あなたの価値観なんて聞いてませんよ(キリッ
>>270 やりたいことがよくわかんないのですが、
普通に substr を for でまわしちゃダメなの?
>275 よくわからないのでソースを貼って下さい
var s = "abcde"; var str = new String(); for( i = 0; i < s.length - 1; i++) str += s.substr(i,2); document.write(str);
278 :
270 :2010/07/19(月) 16:43:41 ID:???
..(=文字が二つ連続?) なら bc も当てはまるのに なんでマッチしないのが不思議だったので聞きました そういう仕様なのですね……
279 :
270 :2010/07/19(月) 17:07:13 ID:???
lastIndex を使ったら上手くできました ありがとうございました
なんでjavascript関連のページはクオリティが低いの多いの? phpもヤバかったけどjavascriptのがもっと酷い
Ajaxブームに便乗したサイトばっかりを見たんじゃね
>>281 2000年ぐらいのページもひどかったぞ
なんでこんなのが上位にくるの、ってページが大杉
>>280 裾野が広がっただけじゃなね?
クオリティが低いと感じるのは君のリテラシの問題かと。
すみません! 本当に助けてください! アイデアください! もう半年近く考えてます!!! 携帯等Canvasが使えない環境で自由に図形を書きたいのです 画像は縮小拡大でジャギるし重たくなるので使えません div等によるドット絵もビックリするくらい重たいので使えません 『\/|〇』等の文字を使うのもフォントによって違うので使えません せめて斜線/が引きたいのです できれば〇も 本当にお願いします これがこのスレの神の力を持ってしてもだめだとなると 僕は…
>>284 javascript drawingググれ
>>284 ImageMagick でサーバサイドで生成するんだ。
お願い致します。 ・質問 IE8からプロセス間セッション共有が行われるようになってしまい 困っております。 (開いたウィンドウが全て共通セッションになってしまう) どうにかしてJavaScriptから新規セッション情報を持ったウィンドウを 開くことはできませんでしょうか? よろしくお願い致します。
>285 今までで一番良さそうなものを見つけることができました! ありがとうございます ただ重たすぎでブラウザがフリーズしてしまうものでした… 注文多くてすみません… こちらのスペックとしてはWikipediaが読み込み30秒で結構重たいです やはり厳しいですかね… >286 いろいろ試したのですが無料のところで使えそうなところがなかったです
wikipediaはもともと鯖貧弱だからスペックと関係ない
>289 そうだったんですか… GIGAZINEも30秒でした 低スペックのマシンで動くJavaScriptを書くときの心得みたいのはあるのでしょうか?
>>290 長いループ処理をなるべく作らないでやってくれ。
>291 ありがとうございます あとDOMをいじることに関してはやはりマシン事に得意不得意があるのでしょうか 例えばinnerHTMLとノード挿入とか そういう場合少しでも軽くしようと思ったら書き分けですかね? iモードのような一見どの機種も環境が同じに見えるけど 搭載チップの差によって得意不得意がかなり異なるなんてことはありえるのでしょうか
>>288 >いろいろ試したのですが無料のところで使えそうなところがなかったです
今時PHP使える無料サーバなんて星の数ほどあるんじゃない?
ImageMagick が無ければ GD でもいけるかと。
携帯は端末環境に幅がありすぎるので、サーバサイドで何とかするのが基本だと思う。
なぜPHP限定なんだ
>>294 誰も限定とは言ってねーだろ
PHPでImagickを使える鯖を探したほうが手っ取り早いだろ
そんなことも分からないなんて一体どういう教育受けてきたんだ?
296 :
Name_Not_Found :2010/07/21(水) 08:50:52 ID:6C4sWYTY
クロージャを学びました。 関数の中で無名関数を書くと、その一つ外のスコープに存在する変数が スコープから外れても消滅することなく残存する。 この場合そのスコープ内の変数はどこに存在するのでしょうか? 具体的には、どうすればデバッガで確認できるのでしょうか?
>>296 どこってその無名関数の環境からたどれるところに。
デバッガで確認って、デバッガの機能にもよるだろうけど、
その無名関数内にブレークポイントを設定して止めれば
そこで普通に変数名を指定して参照できるのでは。
298 :
Name_Not_Found :2010/07/21(水) 09:16:21 ID:6C4sWYTY
>>297 Firebugでは見られませんでしたが、IEでは見られました。
ずっとFirebug使ってたので気づきませんでした。
>295 自分はperl派です もちろんどうしようも無くなったらPHPも勉強します 本当の事をいうと使えるところは2、3あったのですがFTP専用とか、こちらの環境ではまともに使えるものではありませんでした それで今はiswebに落ち着いています
場違いかもしれないけど質問です 4x4(x,y,z)のアフィン変換行列 【例】 m11 m21 m31 dx m12 m22 m32 dy m13 m23 m33 dz 0 0 0 1 ↑ をcanvasのtransformに使える3x3(x,y)行列 ↓ 【例】 m11 m21 dx m12 m22 dy 0 0 1 にするにはどうすればいいですか? 上手く説明できないのでエスパーで答えていただけると助かります
宿題スレでやれ
表示したページの内容を全て書き換える事は出来るでしょうか 開いたページを<html><body>test</body></html>だけに書き換えたいです。 document.writeを使って試してみたのですが内容によって書き換わるときと書き換わらないときがあるので・・・
なんか悪用しそうな書き方だな。 何に使うのよ?
>>302 document.write('<html><body>test<\/body><\/html>');
のようにして「1発で」全部書けば大丈夫だと思うけどなあ。
分けたりしたらタイミングの問題で失敗することがあるだろうけど。
javaとjavascriptを取得したいんだが、正規表現で書くとどうなるんだ? エロイ人教えて xx="java,javascript,vbscript,perl,vb,ruby"; yy=xx.match(/java/g); alert(yy);
yy=xx.match(/(java|javascript)/g);
307 :
305 :2010/07/21(水) 23:06:59 ID:???
java*の文字列で、javaとjavascriptをマッチさせたいんだが...。 なんとかならね?
いわゆる(正規表現とは別の)「ワイルドカード」を正規表現にしたいの? "*" を ".*" とか "[a-z]*" とかに置換してから new RegExp(str, str) 使えばいいよ
309 :
305 :2010/07/21(水) 23:18:38 ID:???
>>308 簡単過ぎてワロタ
2時間も悩んでいたよ(´゚'ω゚`)ショボーン
txt = "a@@@@@@ba****ba-----b"; result = txt.match(/a(.*?)b/g); こんな感じで文字の抽出を行っているのですが(.*?)の部分だけ抽出したいのに前後のabまで結果に含まれてしまいます gオプションを外すと該当部分だけしっかりマッチしますが複数のマッチが行われないので駄目でした 何か良い方法はあるでしょうか
>>312 ありがとうございます
試してみたのですが1度しかマッチしませんでした
>>312 ループさせれば良かったんですね
出来ましたお騒がせしました
315 :
Name_Not_Found :2010/07/22(木) 09:26:04 ID:556xTC8i
最近javascript勉強始めたんだけど javascript内で別のjsファイルを参照したい innerHTMLで変数testを呼び出して var test = "<script type="text/javascript" src="test.js"></script>"; って感じでjs越しに別のjsを出力したいけど 何か仕様があるか知らないけどこれが表示されないのね。 別のタグなら表示できるからソースは間違ってないと思う っでぐぐったら var xhr=null; if (window.XMLHttpRequest)xhr=new XMLHttpRequest(); else if(window.ActiveXObject) try {xhr=new ActiveXObject("Msxml2.XMLHTTP");} catch(e){xhr=new ActiveXObject("Microsoft.XMLHTTP");} xhr.open("GET","bbb.js",false);xhr.send("");eval(xhr.responseText); alert(xxx); と var s=document.createElement('script'); s.charset='Shift_JIS'; s.src='hoge.js'; document.body.appendChild(s); がでてきた。XMLがわかんないし どっちが綺麗かとか xhr.open("GET","bbb.js",false);xhr.send("");eval(xhr.responseText); 部分とか説明してくれたら幸せになれる。
誰もお前の幸せなんか望んでない
>>315 過去にさんざん出て来たんで、過去ログ全集を読めばいいのでは。
each = function(ary, func) { for ( var i = 0; i < ary.length; i++) { func(ary[i]); } }; こんな感じのeach関数を作りたいんだけど 呼び出し側で任意のパラメータを追加で渡したい場合何か良い方法ありますか? each(ary,function(data,a){ return data + a},3) こんな感じで使うときに3をaに渡したいんです・・・ 3とか3つ目の引数はある程度動的にもしたいんです・・・ やっぱりオブジェクトとか渡したほうが無難ですかねー? それともargumentsをいじくれば何とかなりますか? よろしくお願いします
each = function(ary, func, a) { var len = ary.length; for ( var i = 0; i < len; i++) { func(ary[i], a); } }; each(ary,function(data,a){ return data + a},3) 一個だけならこれでいいじゃん。 3つ目の引数の種類がいくつもあって条件分岐させたいならオブジェクトとか配列で、 説明と数値を一緒に渡さないと分岐できないでしょ。
javascriptって関数呼び出しあほみたいに遅すぎね クラス化関数化するのがバカらしくなる
321 :
Name_Not_Found :2010/07/22(木) 12:34:52 ID:556xTC8i
>>317 せ、せめて
検索する単語を教えてくれ!
322 :
Name_Not_Found :2010/07/22(木) 12:35:52 ID:mgmkiRb1
>>318 argumentsとapply()使えばどうにかなる。
__, --──−、_ /::_, -‐─ ‐-、_::::`‐-、 . /::/ `‐i:::::::ヽ |:./ ',ミ::::::} }:l lミ::::::l' _!,'_ ,..-- ..、 __ !::::::::| lヽ! `i ィェッ、.i'゙"i';;;ィェッ;,`i===,、 ',.l ゙、゙゙゙゙゙,ノ ヽ_"゙゙ ゙/ r;;;;;;/ i|  ̄,' ::::ヽ `''" .,{;;;;;;/ ',. ゙`-"゛'' ,};;;;;;' ! ,_、,___, /;;;/" _,` 、 /;;r' _,, -─ '';;;;;;;;;| 、ヽ,,____,,-‐';;;;;;;;;;;\_ ;;;;;;;;;;;;;;;;;;;;;;;;;;| \ _//;;;;;;;;;;;;;;;`ヽ、 ;;;;;;;;;;;;;;;;;;;;;;;;;;| r‐ィェ- '" /;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;| /,彡彡} ,!;;;;;;;;;;;;;;;;;;;;;;;;;;;; ツレマスカ [Vladimir Tzlemazka] (1915-1997 ロシア)
>>318 3だろうがxだろうが、関数リテラル(関数式)本体の中から普通に
参照すればいいのでは。そのためのクロージャじゃないの?
argumentsがあるだろが
applyあたりで頑張ってみます。 ありがとうございました。
インラインフレームの中に表示されたものに対して操作 (例えば、マウスオーバーで全選択とか)するには そのフレーム内に読み込まれるほうにスクリプトを入れないとダメですか? 読み込むほうからできたら、その手段を教えてください
>>327 同一鯖なら別に制約はない。別鯖ならフレームの中身には
手が出せないので読み込まれる方に入れる必要があるね。
>>327 自己レスですが、しばらく調べてたら
全選択はテキストボックス内のみでしたね
でついでに中にアクセスするには、getElementByIdとか+contentWindowで可能だとか
失礼しました
330 :
Name_Not_Found :2010/07/22(木) 16:10:09 ID:Ifk50ZIY
>>321 夏すなぁ。
一番目のは、クォートのエスケープと、「</」を書いちゃ駄目的な間違い。
二番目のは、AjaxでJSのソースコードをお取り寄せしてる。
三番目のは、DOM操作してscript要素を追加してる。
どれが良いとか悪いとかないから、全部知って、
自分のやりたいことにマッチしたのを選べばいいです。
>>315 > xhr.open("GET","bbb.js",false);xhr.send("");eval(xhr.responseText);
こんな感じに、具体的にわかんないことが出てきたら、また聞いてください。
ちなみにこれは、bbb.jsを読んで、ソースコードをまるっとevalで評価しようと
してるんだろうけど、動くのか?これ。
?を正規表現でマッチさせたいのですが\?と書いてもマッチしてくれません ほかに書き方があるのでしょうか str="aa?aaaa?aa"; if(str.match(/\?.*?\?/))
いや、マッチしてるでしょ。
javascriptでHTTPヘッダって出力出来ますか?
出力するだけならなんとか出来ます。
onLoadって body frame img のほかに、何で使えるんですか? divではダメですが
336 :
Name_Not_Found :2010/07/22(木) 19:02:20 ID:Ifk50ZIY
>>335 input[type=image]と、scriptもあるんじゃないかな。
試して報告しよう!
337 :
Name_Not_Found :2010/07/22(木) 19:07:58 ID:BUgl0BrM
>>335 なんで使えるかって、使えるように作ったからだよ
342 :
Name_Not_Found :2010/07/22(木) 21:16:03 ID:1EiptBLq
言語はむずかしい しかるに生きることはさらにむずかしい
ま、育毛より難しいことはないけどね。 毛の生えるスクリプト書けないかなぁ。
うるせぇ、ハゲ
そんなの、 if (抜け毛量 > 発毛量) { リーブ21; }で洗脳すりゃいいだけだろ
東京今夜も暑すぎっす。清涼感のあるスクリプトきぼん。
>>330 高校生で悪いか!
ありがとう。
返答内容から検索をして理解してくる。
javascriptでjavascriptを書く方法を教えて下さい
画像を3D空間上に並べて、自由にカメラを動かせるような動作をさたいです。 便利な3D座標変換のライブラリがあったら教えていただけないでしょうか。
>>351 え、送信時のリクエストヘッダをいじりたいって事じゃないの?
>>353 387 名前:Name_Not_Found[sage] 投稿日:2010/05/31(月) 12:59:58 ID:???
駐車場を写した写真上をクリックすると駐車場上の座標が返ってくるというものが作りたいのですが、
難しすぎて分かりません・・・。
引数に駐車場の広さ、写真上の座標、そして3D空間上のカメラ位置の情報が必要な事は想像できるのですが、
具体的にどのようにしてカメラ位置の情報を取り、どのような計算式が必要なのでしょうか・・・?
これと同じ人かい?だとしたら何一つ成長してないんだな。
3次元の座標計算は自分で勉強してやるしかないんじゃないかな。 原理さえ理解すれば単なる4x4の行列の掛け算だけでしょ。
357 :
Name_Not_Found :2010/07/23(金) 08:14:42 ID:c7gVgi1T
>>353 結局分からずにライブラリ頼みかよ
そんなライブラリはない
数学板で空間図形勉強してこい。
>353 悪いことは言わんから それこそまともなライブラリが多数あるFlashでやれ そして必要に応じてJavaScriptと連携させろ
360 :
Name_Not_Found :2010/07/23(金) 20:25:06 ID:xrw6MaLB
>>360 IE7は非対応です。
IE6かIE8を使ってください。マジで。
>>361 majisuka?
でもIE8にしたらエラーで図に表示されてわらたw
でもガン無視するわけにもいかないので、対策かなんかあります?
363 :
Name_Not_Found :2010/07/23(金) 22:46:34 ID:7UglMDdg
>>362 デバッグして公開しろよ。
フリーを使うもんの礼儀だ。
>>363 もうIE8にしちゃったんでデバッグ無理です。
JavaScriptで生成したテキスト文字列を ファイルメニューからテキストファイル(.TXTや.SVGファイルなど)として保存することはできませんか? IE限定ならActiveXを使えばできるのですが、それ以外のブラウザで使える方法がもしあれば教えて下さい。
サーバに投げてファイル生成してダウンロードさせればおkじゃね
>>366 (1) ウチはサーバが使えない所と契約しているのですが、
100KBほどのテキストを別の広告付きの別のフリーサーバへ投げるって出来ます?
(2) 何の制限もかけずにファイル生成してもセキュリティー面で大丈夫ですか?
>>359 サーバーサイドだったらPHP使うから意味なーいよ!
>>364 Web開発者ならIETesterみたいなの入れとけよ・・・
>>367 (1) たいていの所はおそらく規約違反
(2) セキュリティー的には不特定のファイルにアクセスするのと同リスク
>>367 IE以外なら、データURIに飛ばすってのは?
var time = setTimeout(function() {alert("test");},500); このプログラムでalertを500ミリ秒ごとに表示させることは出来ないでしょうか
setInterval
>>375 ありがとうありがとう!やっと出来た!!
>>377 実際はalertじゃない処理なのでご安心を
DOMでhead中にmetaを挿入するにはどうしたらいいですか? また、例えば↓の☆のところにもノードを挿入することは可能でしょうか ☆<html>☆<head></head>☆<body></body>☆</html>☆
ValidなHTMLとは何か分かっているのかな。DOMでValidでない ものを作ることはできないし、Validでないものを無理に作った効果は ブラウザによってどう動作するか分からないから使うべきでない。
>>379 まさにDOMで普通にやればいいんじゃないの。document.documentElement
のchildNodes[0]にはHtmlHeadElementが入っているはずだから、
document.createElement('META')でmetaを生成してappendChlidで挿入する。
ただし、そうやって後から挿入したmetaが効果を持つかどうかは疑問だけど。
>380 >381 わかりました ありがとうございました
HTMLに存在しないタグをつくったり、 そのタグには無いはずの属性をつくったりってのは HTML的に許される行為なの?
HTML的には許されないんじゃない?
HTML的には許されないよねぇ、やっぱ。ありがと。
でも、HTMLで使う訳じゃないからいいんじゃない?
htmlに本来ないタグを認識することはできないでしょうか? innerTextとかを使いたいんです idをつけてもだめです 何かいい方法はないでしょうか?
何をやろうとしてるのか分からんけど、HTMLではなく全部 XMLとして扱うとか。innerTextはそもそもIE専だし捨てた方が。
innerText無いのってFirefoxだけじゃね
>388 今はもう標準になったんじゃないですか? docomoやSoftBankのブラウザでも対応してますし 実質標準って感じですかね? そういえばDOMも本当は純JavaScriptじゃないんですよね? だったらDOMもinnerHTMLも使えないって場合手詰まりですか?
DOMはW3Cが標準化していて、いわゆるWeb標準。 innerHTMLは非標準。 代わりにDOMのnodeValueを使えばいい。
>>386 HTMLで使いたいんですよ。
<unko>うんこ</unko>とか、<span unko='hard'>うんこ</span>とか。
とりあえず思ったとおりに動作してしまうんだけど、まずいよねぇ。
動作するなら問題出るまで運用しようぜ 問題出たらここに報告してくれ
>>392 それはHTMLとしては使われてないよね?
>>393 とりあえず問題出るまで放置してみるわ。
>>394 まあね。でもスタイル振れるから便利だぜ。
>>395 スタイル振るだけなら、動作保証されて無いことはせずに
<span class="unko">うんこ</span>
とでもすべき。
spanでいいならなぜ普通にspan class=とかspan id=とか にしないのか分からん。なんにも勉強してないとか?
CSSってプログラミングができる人からすると見栄えのための設定 みたいに思えるかもしれません。でも、CSSの方がはるかに軽負担 で合理的っていうこともあります。プログラミングだけではなくて CSSもお考えになってはいかがでしょうか。
スタイルシートでなくてもJavaScript側から群として要素を処理したいときはclassを使って識別するのが推奨ですか?
document.getElementsByClassNameが使えるブラウザを使う限りではそう
>400 使えませんでした 自分はfor-ifループで回そうと思ったのですが それよりも効率のいい方法ありますか? classを使う以外でもよろしかったら教えてください
getElementsByClassNameはprototype.jsに効率がいいのがあるよ。それでもIEはfor ifだけど。 getElementsByNameってIEでもうごかなかったっけ。
404 :
Name_Not_Found :2010/07/26(月) 11:28:56 ID:HDaE7geS
>>402 よう知らんのだけど、IE以外は純正のQuerySelectorを使うってオチ?
>402 無難にfor ifでいこうと思います
>>404 document.evaluateってのを使ってるみたい。
>>405 一応→IE以外はByclassでサポートしてるからね。
ちなみにIEは9でも無い限り要素数が増えるとfor loopがひどい。
body onLoadでアラート出したあと、window.openで新規ウィンドウ開かせてるのですが、 ポップアップブロッカーに引っかかってしまいます。 ページを開いたときアラート出してOK押して新規ウィンドウが開くフローは崩さずに、 どうにかブロッカーに引っかからないやり方ってないですかねえ・・・。
408 :
Name_Not_Found :2010/07/26(月) 12:54:37 ID:HDaE7geS
>>406 あー、xpathか。
勉強になりました。
よく分からないんだが、ヘンな独自タグ作ったりしなくても span class=とかでxpathで取れる、という理解じゃ違ってるの?
jQueryじゃダメなの?
<html> <head> <script type="text/javascript"> document.getElementById("test").addEventListener("click",aaa, false); function aaa(){ alert("test"); } </script> </head> <body> <a href="#" id="test">aaa</a> </body> </html> これでプログラムが動かないのですがどこが間違っているかご教授願えないでしょうか
>>411 script要素の中を実行してる時点ではまだa要素が読み込まれていない。
そのscript要素全体をa要素の後ろに置くのでは。ちなみに「ご教授」は
このスレでは頻繁にもめる言葉なので使わない方が…
>>412 無事動きました!有り難うございます
”ご教授”の件了解しました。以後気をつけます
あるいはonloadで包むとかな
a href="#" ってナニ?
関数呼び出しを<a href="javascript:hogehoge();void(0);">とハイパーリンクに記述すると ステータスバーに載ってしまい見っとも無いため 呼び出しはonClickに書いてリンクは害の無い空欄ハッシュ"#"にしたらいいんじゃね?と誰かが考えた古のテク
へー
なら
>>411 も、関数定義にすればよかったのにね
同一IDって振っちゃ駄目という割には振りまくれるんだけど どうしてなの? というかむしろ正式に複数の同一IDに対応しているみたいだし
>>418 ページによっては一番上までスクロールされて果てしなくウザイから
preventDefault();もちゃんとやってね
赤信号って渡っちゃ駄目という割に渡れるんだけど どうしてなの?
駄菓子屋って盗んじゃ駄目という割には盗りまくれるんだけど どうしてなの? というかむしろ正式に万引き推奨してるみたいだし
423 :
Name_Not_Found :2010/07/27(火) 14:10:42 ID:6pTa3FJg
>>422 あー、このばあちゃん一人でやってる店で盗むのは
やっちゃいけないことだな、人として。
って子供ながらに思えない奴は、早めに死んだほうが良い。
オレオレ詐欺に振り込んじゃ駄目という割には普通に振り込めるんだけど どうしてなの? というかむしろ正式に複数の銀行口座を持っているみたいだし
法と倫理の違い
427 :
Name_Not_Found :2010/07/27(火) 20:23:08 ID:YE0qxHQp
例えば、 var ary = [a, b, c, d, e]; って配列から、 [0]〜[2]は40%の確率で、[3]〜[4]は60%の確率で1つ取り出す、という場合どうしたらいいんだろう。 これぐらいの例だったら、 var indxSet = [0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4]; var indx = Math.floor( Math.random() * indxSet.length ); alert( ary[indxSet[indx]] ); みたいな超ゴリ押しでもいいだろうが、規模が大きくなっても対応できるコーディングが思い浮かばない。
428 :
Name_Not_Found :2010/07/27(火) 20:26:32 ID:IgQwfRKL
JavaScript大先生がHTML5で大活躍されると聞いて跳んできました!! 御活躍を期待しています!!
>[0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4] これだったら 1.0-2のどれかが選ばれる確率は50% 2.0-2の特定なものが選ばれる確率は17% であんたが1、2どちらの意味で聞いてるのか分からん
430 :
Name_Not_Found :2010/07/27(火) 20:35:26 ID:YE0qxHQp
訂正 ×: var ary = [a, b, c, d, e]; ○: var ary = ["a", "b", "c", "d", "e"]; ×: [0]〜[2]は40%の確率で、[3]〜[4]は60%の確率で1つ取り出す ○: [0]〜[2]は50%の確率で、[3]〜[4]は50%の確率で1つ取り出す
>>430 if (Math.random() < 0.5) { [0]〜[2]から乱数で選択 } else { [3]〜[4]から乱数で選択 }
>>430 >>431 もっと複雑になってきたら何個ずつ増やせばいいか計算して増やした方がいいかもな
俺ならそうする
(15 - Math.floor(Math.random() * 12)) % 5 これ2:2:2:3:3になってるかな? あれ、こっちかな。頭が混乱する・・・ Math.floor(15 - Math.random() * 12) % 5
>>430 どんくらいスケーラビリティもたせればいいのかわかんないけど、
融通効かすなら、重み付けかな。
var data = [ {data:"A",weight:1}, {data:"B",weight:2}, {data:"C",weight:3} ];
var i, v, w = 0, wTotal = 0;
for( i in data ) wTotal += data[i].weight;
v = Math.random()*wTotal;
for( i in data ) if( (w += data[i].weight) > v ) break;
alert( data[i].data );
>>435 遠慮せずに的外れでないレスをしてみてくれ
指摘された奴らが顔真っ赤にしてるな
そもそも419の「正式に複数の同一IDに対応」って何のことだ getElementByIdは最初の1つしか返さないし CSSの話?
たぶんそうだろ
企業に任せたサイトで<!--[if lt IE 8.0]><div id="LTIE8"><![endif]-->が複数箇所にあって、idでcss指定しているところもあったぞ。
まあautopagerizeとかでid重複してしまうこともあるしな
例え話するとどうでもいい方に脱線するいい例だな
まあ、
>>421 が悪いってことで
で、IDの重複はHTMLの仕様には違反するけど、
実装側(ブラウザ)はその程度でエラー出してたらキリがないから普通に動く
それだけでしょ
444 :
Name_Not_Found :2010/07/28(水) 08:21:36 ID:6g6zvW4p
<script><!--
//
>>432 で作ってみた
//TORIDASU(配列1,配列1開始位置,配列1終了位置,配列1確率(比率か%),配列2,配列2開始位置,配列2終了位置,配列2確率(比率か%),配列3,………)
//とすると指定した割合になった配列が返ってくる
//
>>427 なら
var ary = ["a", "b", "c", "d", "e"];
R=TORIDASU(ary, 0, 2, 50, ary, 3, 4, 50)
alert(R[Math.floor(Math.random()*R.length)])
//それから、
A=["a","b","c","d","e"]
B=["f","g","h","i"]
C=["j","k","l"]
D=["m","n"]
//のとき、『A[0]〜A[2]から20%、Bから30%、Cから50%で出る』と『A[3]〜A[4]から5%、Cから15%、Dから80%で出る』の割合が7:2の場合みたいなのも↓でできると思う
//ちなみに「-1」で終了位置の「配列.length-1」を短縮表記できる
//つまり配列全部を表すときは『[配列,0,-1,割合]』
t1=TORIDASU(A,0,2, 20, B,0,-1, 30, C,0,-1, 50)
t2=TORIDASU(A,3,4, 5, C,0,-1, 15, D,0,-1, 80)
R=TORIDASU(t1,0,-1, 7, t2,0,-1, 2)
alert(R[Math.floor(Math.random()*R.length)])
445 :
Name_Not_Found :2010/07/28(水) 08:22:25 ID:6g6zvW4p
function TORIDASU(){ var A=arguments var D=new Array() var E=new Array() for(var i=4;i<=A.length;i+=4){ if(A[i-2]==-1){A[i-2]=A[i-4].length-1} D[i/4-1]=A[i-2]-A[i-3]+1 E[i/4-1]=A[i-1]} for(var g=0;g<E.length;g++){ for(var f=0;f<D.length;f++){ if(g!=f){A[g*4+3]*=D[f]}}} E.sort(function(a,b){return b-a}) for(var h=E[0];h>=2;h--){f=true for(var i=4;i<=A.length;i+=4){ if(A[i-1]%h!=0){f=false;break}} if(f){for(var i=4;i<=A.length;i+=4){A[i-1]/=h}}} var D=new Array() for(var i=4;i<=A.length;i+=4){var C=new Array() for(var j=A[i-3];j<=A[i-2];j++){C[j-A[i-3]]=A[i-4][j]} for(var k=1;k<=A[i-1];k++){ for(var l=0;l<C.length;l++){ D.push(C[l])}}} return D //return D[Math.floor(Math.random()*D.length)] } //下手くそだし携帯で作ってるからソースが見にくいと思うけどごめんね //--></script>
>>443 それもあるけど、
IDはユニークだという前提でコード書いてたら痛い目にあう
ので、同一IDが複数ある前提で書かざるをえないのが面倒。
>>446 よく分からないんだけど、getElementsById()とか使わないわけ?
HTML validatorすれば違反はすぐ見つけられるわけだけど…
そもそもvalidでないHTMLでDOMとか労力の無駄だと思うわけだが…
>>447 上記の理由でgetElementsById()は「使えない」
本当はこれで済ませたいところでしゅが
どんだけクソなコード書いてんだよ
「一意的な識別子」というものが「無い」標準という方が(あったとすれば) よっぽとあやしいと思う。HTMLのデザインはその部分については現状で 正しいと思う。それが気に食わないからデザイナが悪いとか笑止。 勝手にやればいいと思うけど俺様が正しいみたいな偉そうなこと言う資格 はないと思うよ。おお、2ちゃんねるらしい香ばしさだなあ。
誰が悪いとか関係なく IDが重複する可能性を考慮する必要がある。 曰く、「受け入れは寛容に、送信は厳格に」ってやつだな。重要だぜ。
んなのは前提条件によりけりだろ
HTMLも自分で書いてるなら重複しないように気をつければいいし、
他人が書いてても口出せるなら注文付ければいい
ライブラリの作者とかその利用者とか立場によっても意見が違うし
あと、下手に間違いを許容すると、それが間違いを助長するから質が悪い
>>419 の疑問がまさにね
>453 全く筋が通ってないよ…
タグの一切ないページを公開しても 文章は表示できる
知ってた
>>457 んなのは前提条件によりけりだろうがっ!
HTMLも自分で書いてるなら重複しないように気をつければいいし、
他人が書いてても口出せるなら注文付ければいいんだよっ!
ライブラリの作者とかその利用者とか立場によっても意見が違うし
あと、下手に間違いを許容すると、それが間違いを助長するから質が悪いっつーの
>>419 の疑問がまさにねちくしょーっっ
こうですかわかりませn><
460 :
Name_Not_Found :2010/07/28(水) 19:47:04 ID:p1fcb4Qx
461 :
419 :2010/07/28(水) 20:19:42 ID:???
>>458 ありがとう。
自分のプロジェクトではIDがユニークになるように啓蒙するよ。
適切な接頭辞を付けるなり何なり、複数人で書いているのだとしても 重複しないようにする方法はあると思うんだけどね。 IDが信用できないとなると、たとえば getElementById() 使う場合も 意図通りにIDで要素を取得できているかどうか確認するために その要素と親要素のクラスをチェックするとか、 IDではなくクラスで(あるいは親ノードをたどって)要素を取得するように コード規約を決めるとかしてるんだろうか。 非生産的すぎて泣けてくるなw そしてほんのちょっとした知識と想像力があれば 自分の怠慢がそういった結果を招くってことは容易に理解できるわけで、 IDを重複させるようなデザイナは糞としか言いようがないなあ。 デザイナの仕事にどんどんJavaScriptが食い込んでる昨今ならなおさらのこと。
ID重複なんてチェックがどうとかっていう以前の全然別次元の問題じゃないの そんな状況で書いてる人がいるなんてかわいそうだな
HTML書く上でIDをユニークにするのは常識だと思ってたんだが、そうじゃない人もいるんだな…
>>464 そうなんです。基本を押さえてないのに、裏技ばかり覚えてくるので困ります。
466 :
Name_Not_Found :2010/07/28(水) 22:06:04 ID:THyqdejU
IDだけにかかわらず、凡ミスチェックって 機械でやらない人多いのかね。htmlLintとか、その手のvalidator。 使ってれば、ID重複も引っかかるだろうし、 使ってないなら、めんどくさそう。
467 :
Name_Not_Found :2010/07/28(水) 22:58:46 ID:QM+yh+6h
質問なんですが、JavaScript(実行jsファイル)でローカルにあるExcelファイルを開く事はできたのですが、 Excelファイルにパスが掛かってる場合、パスを指定して開く方法が分かりません スレ違いだったらすいません
validator通らなかったら完成品として受け付けない、 差し戻すとか、そうしなくちゃいけないんじゃないの。 プロで金取るんだから。
>>467 JavaScript ≠ JScript
現在、ボタンがクリックされたらJavaScriptより
iFrameのコードを出力し、指定したブロックの中に要素を入れたいと思っているのですが、
どうすれば良いでしょうか?
(ここでは、 id_insert ブロックの中にiFrameコードを挿入したい)
また、出来ればjQueryを使用した $hoge 的なコードでご教示願います。
■JavaScript
function id_create_iframe_onclick()
{
document.write("<iframe class=\"iframe_css\" src=\"
http://google.co.jp\ "
style=\"\" scrolling=\"no\" frameborder=\"no\" >この部分は iframe 対応のブラウザで見てください。</iframe>");
}
■HTML
<input id="id_create_iframe" style="" type="button" value="実行"
language="javascript" onclick="return id_create_iframe_onclick()" />
<!-- 実際にiFrameを挿入したいブロック-->
<div id="id_insert">
</div>
もっとスマートに書けると思う
>>470 どうすればいいって、できてんじゃないの?
styleの前の改行をはずせば
cssでdisiplay: none; にしておいて ボタン押したら見えるようにするのはどう?
477 :
Name_Not_Found :2010/07/29(木) 10:22:24 ID:DQm/ubL2
>>468 いや、そんなんいちいち指定されるまでもなく、
いらんエラーはない状態で納品せんと。
478 :
Name_Not_Found :2010/07/29(木) 10:43:36 ID:pGklmHHY
YouTubeを貼り付ける時の <埋め込みコード>をJavaScriptに書き直したいのですが どのようにすれば良いのでしょうか? JavaScriptの全くの初心者で この質問じたいが的を得ているのかも判りませんが よろしくお願いします。
>>477 だからその中に「IDの重複がない」は当然入るものではないの?
ID重複してたらいきなり死ぬブラウザがあるかも知れませんよ?
なにしろvalidなHTMLじゃないんだから。(今なくてもそれが現れて
顧客が文句言ったらvalidでないHTML納品した方が悪いことに…)
>>478 なぜJavaScriptに書き直したいの。その意図を説明しないと
見当違いな回答が来るだけでしょ。
>>468 まともな仕事だったら、ターゲットブラウザの話するでしょ。
それに、95%の人間が問題無く見られれば、
validかどうかなんて正直どうでもいい。
>>479 >ID重複してたらいきなり死ぬブラウザ
それは無いわ。
それがIEなら納得
グラフを書く目的のコードなのですが以下のようなjavascriptの分で変数aを代入するにはどうしたら良いでしょうか? 「var a=1;」等の記載を行ってもグラフは 2,3,4・・・とならず、a+1,a+2,a+3・・・と表示されます。 var params = { x: ["test", "a+1", "a+1", "a+2", "a+3", "a+4", "a+5", "a+6"], y: ["注文数(個)", 0, 20, 40, 60, 80, 100], yMax: 100, yMin: 0, lineWidth: [1,2], dotRadius: [3,4], dotType: ["disc", "square"] };
>>484 "でくくらない
質問
jsでstyle.〜に!importantを付加しても効果はでてないのですが、これはどう仕様も無い仕様なのでしょうか?
runtimeStyleはIE専&CSSの!importantが優先されるので役立たずです。
""でくくった部分はStringとして扱われるから 変数とNumberとして扱われるようにすればいい
>>485-486 ご返答ありがとう御座います。
>>486 ↓のように訂正してみたのですが、今度はグラフが表示されなくなってしまいました。
>var a=1;
>x: ["test", a, a+1, a+2, a+3, a+4, a+5, a+6],
JavaScriptではvar型にintやchar等の区別がないようなのですが、""内で変数aをint型で認識させる方法はないでしょうか?
var a=1をparamsの内側に書いたりしてないか? ""内で変数使うのは基本的に無理
グラフが出ないのはその先の関数が問題。 parseInt(a)とか? charをintにしたいのか?
そもそもaを使わなければちゃんとグラフ出るの?
>>488 paramsの内側に書いた場合グラフが表示されなかったので外側に書いてました。
>>489-490 短いソースですが、全てで以下です。
この場合、横軸が、a,a+1,a+2〜a6となってしまいます。
目的はPHPで受けた値を引数としてグラフを書くことなのですが、x:["",""]の内側に変数を使うことはjavascriptでは難しいのでしょうか?
window.onload = function() {
var lg = new html5jp.graph.line("graph_oresen");
if( ! lg ) { return; }
var items = [
["商品A", 80, 38, 40, 14, 38, 20, 40],
["商品B", 20, 14, 58, 80, 70, 90, 20]
];
var a=1;
var params = {
x: ["test", "a", "a+1", "a+2", "a+3", "a+4", "a+5", "a+6"],
y: ["注文数(個)", 0, 20, 40, 60, 80, 100],
yMax: 100,
yMin: 0,
lineWidth: [1,2],
dotRadius: [3,4],
dotType: ["disc", "square"]
};
lg.draw(items, params);
};
jQueryで質問させてください。 以下のようなテストスクリプトを作ってみました <script type="text/javascript"> $(function(){ $("#ADD:button").click(function(){ ht = $("#ADDITEM").html(); $("li:last").after(ht); }) $("li").click(function(){ index = $("li").index(this); alert(index); }) }) </script> <body> <div> <div id="ADDITEM"> <li>□□□□□</li> </div> <li>△△△△△</li> <li>○○○○○</li> </div> <input id="ADD" type="button" value="追加" > </body> liをクリックすると何行目のliなのかが表示されるのですが、 追加を押して増やした分については反応しないのです。 スクリプトで追記した分については無視されてしまうのでしょうか? 何か解決方法はあるのでしょうか? よろしくお願いします。
>>493 validなHTMLじゃないけど、機嫌がいいから教えてやる
$("li").click(function(){
↓
$("li").live('click', function(){
>494 できました!超感謝です!! liveを使わないと、追加した要素では反応しないんですね ありがとうございました
>>491 ふうん。すごいね(棒)。ネット知識(笑)?
なにこいつ
誤爆じゃね?
W3Cを参照するのはネット知識に含まれるんだろーか
誰も彼もが英語読めるわけじゃないが読む努力ぐらいはして欲しい 誰かが日本語訳を作ってるものもあるし
日本語訳作って売ったら金になりそうだけど 売るためには原本側の許可が必要だしなぁ
許可なんているのか?
許可が必要だしなぁ(笑) ライセンス嫁よ、RFCはGFDLな
504 :
Name_Not_Found :2010/08/03(火) 23:21:08 ID:yuDEMvmf
dd = new Date(); date = dd.getDate(); として、dateに日を入れるようにしました。 次に、 <script language="JavaScript" src="./sub.pl"></script> <script language="JavaScript"> <!-- document.write(date); ##### // --> </script> 上の#####のwrite( ) の中に変数(date)を入れたいのですが、 どうすれば変数扱いになるでしょうか。
よくわからんけどそのままで変数扱いされるはずですよ
506 :
Name_Not_Found :2010/08/03(火) 23:40:43 ID:yuDEMvmf
>>506 なんと説明すればいいのか、難しいんですが、
例えば、date = 1 のときなら、
sub.plの1の内容(=なんとか)をwriteしたいのです。
(sub.plに 1="なんとか"; と書いています)
504のままですと、「1」と表示されてしまいます。
1は数値だから変数として扱えないよ 変数名のルールにあるじゃん、数字で始まる名前は変数に使えませんとか
document.write(sub.pl[date]); これでできないなら、sub.plがいけない。 って1=""ってそのまま書いてあるの? sub.pl = {1:"~",2:"~"}とか sub.pl = ["~", "~", "~"]ならOK 違うならjavascriptを根本から勉強したほうがいい。
509 :
Name_Not_Found :2010/08/04(水) 00:16:45 ID:sxEKfLZj
>>508 sub.plは別ファイルなんですが、
{1:"あ",2:"い",3:"う"} というような書き方はマズいですか?
変数に入れろ。話はそれからだ。
511 :
Name_Not_Found :2010/08/04(水) 00:22:07 ID:sxEKfLZj
{A1:"あ",A2:"い",A3:"う"} こういう感じでしょうか?
タグをわからないバカがいるから、こんなとこで聞いてもだめですよ
getElementByIDを $という関数名に定義するのが流行なんですか?
$=取得==G=(`・ω・´)=gEBI=getElementById どれでもすきなのでどうぞ
そこまで詳しくないけど、 ------------------------ // sub.plの中身 var daySet = { 0:"市場に出かけ糸と麻を買う", 1:"風呂をたく", 2:"風呂に入る", 3:"友達が来る", 4:"友達を送る", 5:"糸巻きしない", 6:"おしゃべり" }; // end sub.plの中身 var dd = new Date(); var day = dd.getDay(); document.write(daySet[day]); ------------------------ sub.plが↓みたいのだったら、 ------------------------ // sub.plの中身 var d0 = "市場に出かけ糸と麻を買う", d1 = "風呂をたく", d2 = "風呂に入る", d3 = "友達が来る", d4 = "友達を送る", d5 = "糸巻きしない", d6 = "おしゃべり"; // end sub.plの中身 var dd = new Date(); var day = dd.getDay(); document.write(eval("d"+day)); ------------------------ まぁ下は素人目に見ても全然スマートじゃないよね。
現在開かれているページがフレームで開かれているかを検査するjavascriptは組めないでしょうか 解答よろしくお願いします。
ググったらすぐ出てくるが
>>517 出てくるのですがparentを使った物ばかりで・・・
クロスドメインなのでparentだとエラーが出てしまうんです
parentを使わずに検査することは出来ないでしょうか
自己解決しました window.topで行けました
520 :
Name_Not_Found :2010/08/04(水) 23:03:37 ID:xjlqU88i
>>515 やっとできました!
本当に、本当にありがとうございました!
>519 try{aleart()}catch(err){alert(err)}
GIFアニメを再スタートする方法でいい方法はありませんか? 読み込み(ネットから)直してると非常に重たくなっていきます
>>522 次の方法はどうかな。当該img要素をimg1だとして。
var img2 = img1.src;
img1.src = null;
img1.src = img2.src;
試してないけど。
>523 いろいろ弄って動くようになった頃には再読み込みするコードになってしまいました… img2=img1.src+"?=" function (){img1.src=img2+="a"}
>>524 そうやってurlを変化させたら再読み込みになる。そうじゃなく、
いちどそのurlを別の画像にそのまま持たせ、元の画像はいちど
クリアさせてから再度設定する。というのでどうかな。
>525 それは様々な形でやりましたがダメでした
できたよ? 自前でつくるのはメンドくさかったから、mixiのコミミュ画像でテストしたけど。
>527 オフラインに保存すると通信しませんでしたが オンラインで見ると通信してしまいます どちらにせよ、リトライが100回を超えてくるとかなり重たくなります
いやキャッシュ使われてるよ。オミトロンで検知できる通信の範囲内では通信してない。 img.src=""を実行すると通信しちゃうけど。 その他の方法ではjsでgifのリピートをコントロールはできないんじゃないかな。flashにしちゃえばできるけど。
>529 アクセスをカウントするCGIを挟んだところ私が書いたものでは通信してました 通信しないソースを教えて貰えませんか? というか本当は通信はどうでもいいのです 重たくならなければいいのですが……… わがまま言ってすみません
キャッシュ使わないのはブラウザの設定じゃねーの?
>531 キャッシュを使ってると思われるやり方でも重たくなってしまいます キャッシュのキャッシュ(?)からキャッシュに毎回コピーされている的な感じに見えます
オブジェクト何個も作ってるとかじゃねーの
new imageみたいに要素を作るんじゃなくて、imgsrc="〜"で入れなおすやり方だよ? キャッシュが使われるのに重いのはどうしようもないんじゃね?flashでやればいいと思うよ。
>533 すみません 何のことか良くわかりません とりあえず今までにリトライが成功したのは全て結局のところURLを変える方法です それ以外の方法は失敗してしまいました
>534 それだとリトライされませんでした Flashが使えれば1番いいのですが様々な理由から使えない状態です…
>>532 読み込んだときのHTTPステータスコードどうなってる?
ちゃんと304になってる?
dataスキーム使ってみた?
>ステータスコード 正常に画像が表示されるのでそうなってると思います >dataスキーム どのようなものか完全に理解していませんが対応してないと思います いろいろ試してみたところ一度画面からなくなると次表示するときは再読み込みするみたいです new Image()で取得した画面はそうなりませんがリトライはされません
jqueryで複数のdiv要素を同時に表示・非表示したいと考えています toggleを使って表示・非表示の動作は出来たのですが <div id="opcl" > 内容1 </div> <div id="opcl" > 内容2 </div> <div id="opcl" > 内容3 </div> 上記のような場合一番上のdiv要素しか表示・非表示してくれません すべて同時に動作させるにはどうすればよいでしょうか?
コードだせよ。 まぁ原因はid使っているからだろうけどな。
すみません。コードはこれです。 <button onclick="func();">表示・非表示</button> <script type="text/javascript"> function func(){ $("#opcl").toggle("slow"); } </script> <div id="opcl"> 内容1 </div> <div id="opcl"> 内容2 </div> <div id="opcl"> 内容3 </div>
連レス重ねてすみません…
>>541 さんの指摘からidをclassに変更したら上手くいきました
ありがとうございました
>>535 「リトライ」→再試行→失敗があった時に再度実行して実行継続すること
「リスタート」→再開始→先頭に戻って再度はじめからやること
>544 すみません リスタートです
javascriptを使って、ボタンを押すことで <div> <p> 文章 </p> </div> を <div> <!-- <p> --> 文章 <!-- </p> --> </div> にする方法を教えてください <!-- -->でなくても<p>を消せればOKです 色々考えてみたのですが、<p>タグだけじゃなく中身の文章も同時に消してしまう方法しか思いつきませんでした
s.replace(/(<\/p>)/g, function() { return '<!-- ' + RegExp.$1 + ' -->'; });
少し調べれば判ることだろ
replaceと正規表現ですね。まったく別の方向から調べてました… ありがとうございます
>>514 2バイトコードはJavaScript標準ではサポートされて無いんじゃないの?
>>550 ECMA262違反ではない。でも実装次第
552 :
Name_Not_Found :2010/08/08(日) 06:09:02 ID:iRduHBGo
>550 いまんところ使えないという話は聞かない
テキストエリアに入力された改行の数をカウントしたいのですが、どんなに改行を入れても、2としか出てこないので、困っています。。。 var res = document.C1.A_1.value.match(/[\s\S]*/g); var k = res.length;
>>553 何故、改行だけをカウントさせたいのに条件を [\s\S]* としたの?
同じ内容をどこかのスレに誤爆したっぽいけど、どのスレか解らない。。。死にたい。。。∧||∧
>>554 うわぁ・・・すみません、有難うございました
557 :
Name_Not_Found :2010/08/08(日) 16:01:54 ID:iRduHBGo
>553 /\n{1}?/g
\n{1]?の?って無いのとあるのとジャ違いあるの?
{1}? これがいらんだろ
無知を曝け出すのが趣味なのだろうか
いやいらんだろう
textarea.value.match(/\n/g).length textarea.value.split('\n').length - 1 しかしこれだと長い行の折り返しをカウントしないけどいいのか
>>546 var df = document.createDocumentFragment();
var children = p.childNodes;
for (var i = 0, node; node = children[i]; ++i) {
df.appendChild(node);
}
div.replaceChild(df, p);
for(){ var hoge; } でループした回数だけ function huga(){ var piyo; } で関数が呼ばれた回数だけ 変数が作られてしまうんですか? 変数がメモリを消費してしまうんですか?
567 :
宮城たった :2010/08/09(月) 21:05:18 ID:???
>>566 どうもありがとうございます
なんて言うと思ったかこの糞野郎!ウソツキサイコパス25回
お前京都舐めおだなバレバレですよ早く謝罪しなさいよ!
568 :
Name_Not_Found :2010/08/09(月) 21:28:07 ID:Tuj1jpI3
parseInt関数について質問です 今日、こんな意味不明の動作を見つけました。 最初はIE8だけかと思っていたのですが、FxやSafariでも同じ症状が出ています。 動作ってこれで正しいのでしょうか? alert(parseInt('07')); // '7'を表示 alert(parseInt('08')); // '0'を表示
0で始まるやつは8進数として認識されてるからじゃね。 07=7 08は存在しない。0になるのは俺にはわからん。 parseInt('08'.replace(/^0*/, ''))
>>568 parseInt('08',10)
parseInt('09',10)
>>568 数値でほしいなら
>>> Number("8");
8
>>> Number("08");
8
>>> Number("0x8");
8
ここで質問すべきなのか迷ったのですが…… JSPファイルを使える月額500円程度のHPスペースレンタルサービスはないでしょうか?
誤爆しました……すみません……o/rz
そういえばJavaが入ってるサーバーって見たこと無いな
575 :
Name_Not_Found :2010/08/09(月) 21:56:58 ID:Tuj1jpI3
僕はGoogle App Engineちゃん!
他人のサイトに埋め込まれているJavaScriptを改造することって可能ですか? 可能の場合、違法ではないですよね。 具体的には検索サイトでJavaScript使っているのですが、一度に出来る検索数が 少ないので値変えて増やそうと思ってます。
>>577 スクリプトは一応著作権があるが、そんなこまけぇ改造は別にどうでもいい
579 :
577 :2010/08/10(火) 03:51:59 ID:???
>>578 著作権の問題もあったんですね。
自分としては数十件単位でしか検索出来ないサイトに
100-10000件単位で検索かけたいので相手の意図しない負荷かけるので
問題ないか気になったんですがそっちも細かい問題ですかね。
>579 相手が携帯とかの可能性があるから 例えば10秒たっても処理が終わらなかったら継続するか確認をだすとか ここで大事なのは「中断しますか?」―YESorNoではなく「継続しますか」―YESorNoなところと 処理の外にsetInterval等で継続確認処理埋め込まないこと 本当に負荷がかかったときはタイマーがかなり(10倍くらい)遅れることも珍しくない だから正しい書き方は T=(new Date()).getTime() for(){ if((new Date()).getTime()-T>10000)if(!confirm("継続しますか?"))break 【処理】 } または T=(new Date()).getTime() S=setInterval(F,1) function F(){ if((new Date()).getTime()-T>10000)if(!confirm("継続しますか?")){clearInterval(S);return} 【処理】 } まあよっぽど負荷がかかる処理ならの話ね
577はユーザースクリプトのことじゃないの? 負荷ってのもサーバの負荷のことだと思うんだけど
582 :
☆忍者Perl☆ ◆M5ZWRnXOj6 :2010/08/10(火) 11:38:00 ID:gP6ha/RX
var GET_eq = '_%%eq%%_'; var GET_amp = '_%%amp%%_'; これってどういういみ? _%%eq%%_ _%%amp%%_ってのが分からないで素教えてください
583 :
Name_Not_Found :2010/08/10(火) 14:17:11 ID:QHCEGLYq
>>582 特に意味はないよ。
多分、おれおれエスケープシーケンスとして
_%%%%_を使ってるんでしょう。
584 :
☆忍者Perl☆ ◆M5ZWRnXOj6 :2010/08/10(火) 15:08:54 ID:gP6ha/RX
ありがとうおざいましまじた
585 :
Name_Not_Found :2010/08/10(火) 23:15:03 ID:B3QmPikL
JavaScriptでXMLを扱う場合の上限サイズってあるんでしょうか? 例えばブラウザ毎に上限があるとか。DOM1とDOM3それぞれで。 今は、IEのDOM1、chromeのDOM3、safariのDOM3で 200MB越えのXMLデータを扱おうとしてハマっています。
>>585 ふつうはメモリ空間がある限り扱えると思う。
HTMLやXMLをDOMにすると、元の10倍前後のサイズのメモリが消費される。
200MBの10倍で2GB。32bit環境では扱えないだろうね。
えっ
588 :
Name_Not_Found :2010/08/11(水) 13:39:03 ID:K0qHCqd+
質問です。 あるオブジェクトが何であるかを確認するために、 toStringを使ってみたんですが、 nullやundefinedがwindwとなるのはなぜなんでしょうか。 やってみたことはこうです。 Object.prototype.toString.call(null); Object.prototype.toString.call(undefined); よろしくお願いします。
答えを知りたいなら自分のレスをみなしゃい
お詳しい方教えてください。 「ある変数の変化を監視するイベント」のようなものを実現することはできるの でしょうか。 具体的には、 var a = false; と変数 a を定義したとして、aの値が変化したらfunction handle()を実行させる、 というようなことをしたいのです。 もし無理でしたら、なにか代替案等お聞かせいただけたらうれしいです。
タイマー使ってaを参照するとか?
setter/getter作って独自に判断するしかないんでね?
593 :
588 :2010/08/11(水) 18:30:32 ID:K0qHCqd+
>>589 いろいろ調べてみたんだけど、
Function.prototype.callとFunction.prototype.applyの引数に
nullかundefinedコンテキストを渡すと、
window(グローバル)オブジェクトを参照するようになるのは
仕様ですかね?
595 :
588 :2010/08/11(水) 19:30:38 ID:K0qHCqd+
>>594 まさにそれです。
> If thisArg is null or undefined, this will be the global object.
ってとこ。
以前、型判定関数を作った時は、typeof→toString.call→その他(null、node、nodelist)で作ったな
すみません
このような書き方でも3大ブラウザはキャッシュしてくれますかね?
<script type="text/javascript">
document.write(unescape("%3Cscript src='
http://xxxx/test.cgi?args=1 ' type='text/javascript'%3E%3C/script%3E"));
</script>
598 :
Name_Not_Found :2010/08/12(木) 08:07:28 ID:cB66FZOH
DOMに自前のプロパティを設定するのって許されてますか? <div myproperty="hoge"> みたいな感じです。 値が動的に変わる変数を、DOMに埋め込みたいのですが・・
特に問題なかったはず… elements.getAttributeで取得もできる
>598 ブラウザによる Gecko系はその点に厳しいことがある 俺のはダメだった
>>603 マジか。
いつも適当にunkoとかの属性追加してたわ・・・
ねーよwww
606 :
Name_Not_Found :2010/08/12(木) 17:53:51 ID:PSDwjv+/
<div hoge="fuga"> は、HTML的にアウトってことでしょ? -- var div = document.createElement("div"); div.hoge = "fuga"; ここまではJS的にもHTML的にもセーフで、 document.body.appendChild(div); こうすると、HTMLはvalidでなくなる、と。 ちがうかな?
DOMにデータ保持したくてvalidを維持したいときは div.example = {data:"エアコミケ",day:"8月13-15日"}; のようにオブジェクト作って入れてる、こうすると属性として追加されずに単なるプロパティになる
>607 何故DOMに保存したいのかがわからん 配列でいいだろ
ObjectにObject入れるのがわからない? 配列関係ないし
>609 JavaScriptとDOMは本来別々のものだろう よほどの理由がないのにDOMに入れるのは納得できませんなぁ
ヒント:専門学校のアホな課題
612 :
Name_Not_Found :2010/08/13(金) 18:27:10 ID:STewOpyh
自分はよく追加するけどなあ。 div.isHogehoge = true; みたいなのとか。
普通のコードでそういうことやりたくなるのは設計が悪いから jQuery は別
ブッ
615 :
Name_Not_Found :2010/08/13(金) 19:15:03 ID:STewOpyh
>>613 だってわざわざ
{
isHogehoge : true,
element : div
}
ってするの面倒なんだもん。
オリジナルのプロパティは、ページのimgのsrcを全部書き換えて 自由に元に戻すって処理をさせたい時に、元のsrcを退避させておくために使ったな 未だに良い代替方法が思いつかないんだが、ここの皆はどう実装しているんだろうか。
Youtubeは動画のサムネイル用のimg要素に直接thumbって属性が
>>616 普通に、JavaScriptの変数に退避
>>616 昔検索したらそーゆーバカなサンプル垂れ流すページ多くてさww
>>616 imgタグごとinvisibleにするとかやったことあるな。保守してる人ごめんよ。
replaceChildで置換かな
622 :
Name_Not_Found :2010/08/15(日) 02:11:17 ID:U7ukK0zy
良く解らんのですが、 DOMに独自のプロパティを追加するのは 具体的に何がいかんのですか? フレームワークの場合…みたいなレアケースを除くと、 あまりデメリットは感じられないのですが。 あと、その問題点を抱えながらも、DOMにプロパティを追加することが 容認される仕様なのはなんでなんですか?
JavaScriptにおいてDOMエレメントはオブジェクトだから、 プロパティを追加しても問題ない。 でもそれをHTMLにappendChildするとinvalidなHTMLになる。 車は法定速度を超えられるけど、 違反になるから法定速度は守ろうねってこと。
624 :
Name_Not_Found :2010/08/15(日) 05:01:34 ID:9c92wB4n
ほうほう、なるほど。 つまり、事故を起こさず周りの迷惑にならないように 安全に配慮して空気読んでやれよ、ってこと、なのかな?
625 :
Name_Not_Found :2010/08/15(日) 05:38:39 ID:PQl2Ry5W
IEでonclickが反応悪いのは仕様? フォームのボタン(<a>でも)を押すと数字が1ずつ増えるっていう超簡素なプログラムでさえ、 IEはボタンの連打についてこれない。火狐だと結構な連打でもついてくるのに・・・。 何か別にいい方法があるんだろうか
onmouseup
>>625 うちだと主要ブラウザの中じゃChromeがダントツに早くて時点でIE、Firefoxだな
>>618 色々調べてやってみたが、思いっきりメモリーリークパターンに・・・
もう少し簡単に同様の事をする方法はないでしょうか(貼り付けたソースはIE以外用です)
var backup = new Array();
window.addEventListener('load',function() {
var len = document.getElementsByTagName('img').length;
for(i=0;i<len;i++) {
var image = document.getElementsByTagName('img')[i];
backup.push(image.src);
image.src = "0.jpg";
image.addEventListener('click',(function(n){ return function(event){
event.target.src = backup[n];
};})(i),false);
image = null;
}
var btn = document.createElement('input');
document.getElementsByTagName('body')[0].appendChild(btn);
btn.setAttribute('type','button');
btn.setAttribute('value','Show all Images');
btn.addEventListener('click',function(){
var len = document.getElementsByTagName('img').length;
for(i=0;i<len;i++) {
document.getElementsByTagName('img')[i].src = backup[i];
}
},false);
btn = null;
},false);
Webページの太文字(<b></b> or class or id)のオンオフを切り替えるボタンを付けたいのですが どういう方法が一番高速でしょうか?1ページ当たりの太字の数は数百個です
jsの部分だけで一番早いのはbodyにclassひとつ追加することじゃないかな。 cssはbody.b span.b { 太字 } cssのほうのスピードは気にしたことがない。
>>630 なるほどーそっちを変更すれば一箇所だけで済みますね
盲点でした。ありがとうございます!
632 :
625 :2010/08/15(日) 13:28:04 ID:???
>>626 なるほど。ggったら、あまりに連打が速いとダブルクリック判定が出てonclickでは拾えないようだ
>>627 環境に依存する部分もあるみたいだな
>>627 ダブルクリックしたとき
IEだと click dblclick
Firefoxだと click click dblclick
の順で発生するからFirefoxが遅いのはおかしいな
たんにゲイツのおせっかいでウェイトいれてるだけかもわからんな。
サクラの糞つまらないネタ毎回御苦労
DOMについては、属性を追加すればいいことがわかりました。 HTML5からそれが推奨されるようなので、今後はそうします。
ヒント:HTML5準拠のブラウザはまだ存在しません
準拠はないなw
どの段階で動かないのかが解らないと……
ちょっとは自分で試行錯誤しろや
643 :
640 :2010/08/16(月) 20:56:31 ID:???
ああ、ごめんなさい。 スレ違いでした。
お前らがいじめるから
http://tawashi.ula.cc/?guid=ON このゲームを自動でクリアするスクリプトを作りたいのですが
ルールは
・クリックでめくれる3*3マスの神経衰弱
・パターンは6種
・そのうち4種は1手めくっただけでわかる
・残りの2種は3手目でわかる(2手目までは同じ)
どういう風に組めばいいのでしょうか?
そこは、スクリプト使うとルール違反らしいです。
647 :
Name_Not_Found :2010/08/17(火) 07:57:42 ID:TrDUb+Ry
>>645 6パターンしかなくてスクリプト禁止ならUser Scriptで1パターンを只管ループさせれば?
パターン出現が全て均等なら600回ループさせれば100回勝つる!
648 :
Name_Not_Found :2010/08/17(火) 18:22:33 ID:TrDUb+Ry
Html内の<Title>タグを1秒置きに変更したいのですが window.title = 今日.getSecond(); で、変更されません(titleは最初のデフォルトのまま) BodyのonLoadから呼び出して更にsetTimeOut(1000);時に再帰的に自分を呼び出して処理しています
document.title?
ああ、あと setTimeout(func1,1000); だけど大丈夫?
1秒置きにタイトル変えるってどんな用途?
つsetInterval
>>650 あ、functionは指定してます。カキコ時の記入漏れです。
正に時計です。htaファイルで日時を表示するだけですが
Windowを最小化した時にタスクバー上にリアルタイム時間を表示させたくて
タイトル変えればいいのかな、と
その用途ならタスクバーに時計を表示するフリーソフト使えばよくね?とか言うのは野暮かw
>>649 ありがとうございました
一発解決でした。
ウィンドウのタイトルだからWindow.titleだとばかり思ってました…
>>655 車輪の再発明は承知の上です。フリーツールを入れられない環境だったので
じゃあ作るかと
それをHTMLで作ろうという発想はなかなかだな。いい意味で。
$("#txtdata").keydown(function(e){ if(e.keycode == 13) //処理 }); テキストボックス(id="txtdata")でEnterキーを押す、という部分でエラーが出てしまいます。 keycodeの上にマウスカーソルを合わせるとundefinedと出ます。 Enterキーを押したとき・・・という分岐を使いたいのですが、どうすればいいですか? 以下、エラー文章です。 keydown イベントでは charCode プロパティの値には意味がないため使用すべきではありません。
keyCode
eventのkeyCodeってブラウザによっては無かったりするよね? jQueryのソース見てみたんだけど、〜.keyCode = 〜っていう式が見つからなかったんだけど、どうなっているの? 唯一見つかった式 a = event if (!a.which && (a.charCode || a.charCode === 0 ? a.charCode : a.keyCode)) a.which = a.charCode || a.keyCode;
keyCodeは主要ブラウザ全部がサポートしてるはず
firefoxでwindow.eventが無かったからkeyCodeがないって思ってたらしい。orz 今確かめたら確かに(引数のe).keyCodeで取得できました。 てことはjQueryとしてはevent.whichがメインで使われるということを想定して作られているんですかね。
664 :
658 :2010/08/18(水) 15:45:04 ID:???
ああぁ、大文字小文字の区別だったんですね。 数時間躓いた状態でした。 ありがとうございました。
Workerについて質問ですが 通常スクリプトからさせたい処理をしていすることはどうしてもできないのですよね? その場その場で処理させたい内容が異なる場合や大量に処理のパターンがある場合、 通常スクリプトからサーバーにデータを送って、サーバー側で外部スクリプトファイルを保存し Workerに指定するといったやり方が一番ましでしょうか?
666 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/19(木) 16:15:18 ID:LsA4z/6P
jqueryのloadを使うと
なぜかjavascriptが反応なくなります
アップロードの部分が
ソース
http://codepad.org/Qeeb3MXF なぜ? \$("#field2").load("list.cgi");でリスト表示させてアップロードできるようにしたんですが
\$("#field2").load("list.cgi");を書かなければちゃんとアップロードできます
誰か教えてください アップロードが無反応になります
667 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/19(木) 16:19:42 ID:LsA4z/6P
他のhtml書いてないファイルで テキストファイルでやったらアップロードできたんですが やっぱりhtmlをよみこんだときタグ読みこむからだめなんですか? なんか読み込んじゃまずいのとかありますか?
668 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/19(木) 16:32:29 ID:LsA4z/6P
そのloadで読みんだファイルのほうにはjavascriptがかいてあります javascript消したらできたんですが javascirptを消さないと↑のコードのjavascriptのアップロードが無反応になります 教えてください
jqueryみたいなライブラリを訳も分からないやつがむやみやたらに使うな 特に複雑なことをしようと思ったらそう 自分で書けよ
なんで?
671 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/19(木) 17:04:27 ID:LsA4z/6P
>>669 クソガリは鉛筆でカールしてろよクソガリ
どなたか教えてください
思わぬ挙動をして逆に調整がめんどくさくなったりするからだよ
納得した
674 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/19(木) 17:10:30 ID:LsA4z/6P
>>670 クソガリは脳味噌も終ってるなww答えられねえバカwww
ノウタリン+クソガリチビ クソノッポのチンパンジーあいちゃんの進化系かな?www
てえめみたいなクソはやく死んじまえよ!!!!!!クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)
クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)
クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)
クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)
クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)
クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)クソ!!w(笑)
クソ!!w(笑)wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
クソ!!w(笑)
クソ!!w(笑)クソ!!w(笑)
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
暑くなるから落ち着けよ
676 :
Name_Not_Found :2010/08/19(木) 17:37:26 ID:SJZVHYtf
とりあえずむかつく言い方でもそれが自分のために言ってくれてる言葉なら素直に聞くべきだと思う そうしないと誰からもアドバイス貰えなくなると思うよ ましてや今は自分が質問してる立場なんだから キレるのはおかしいことじゃない? 最悪自分が必要なところだけ聞いてあとは流せばいいと思うよ 確かに言われた言葉はぶっきらぼうだったかもしれないけど やっぱり言われた言葉そのものよりその人が何を思って何を自分に伝えたくて言ったかったことを見極めるべきだと思う やっぱり素直が一番だよね と思う16の夏
や、まあ素直になった結果キレたんだろうけど。 やっぱり精神的に大人にならないとね と思う19の夏
おいおい素直ってのは素直に聞くこry
679 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/19(木) 18:09:04 ID:LsA4z/6P
jquery.jsとjquery.uplaodの順番かえたらできたんだけどwwwwwwwwwwwwwwwwwwwwwwww
各エレメントにイベントリスナーが付かないのでおかしと思ってたら 最後にdocument.getElementsByTagName("body").innerHTML += 〜 ってしてるところで全てリセットされてた事に気づかなくて無駄な時間を費やしたのは俺だけか・・・
そもそもdocument.getElementsByTagName("body").innerHTML += 〜がおかしい
ID:LsA4z/6Pの崩れ方が暑さのせいだと信じたい。 ウソ。
683 :
Name_Not_Found :2010/08/19(木) 22:38:51 ID:ZSCpDILw
XMLHttpRequestに対してJavaScript側である程度連続(8多重ぐらい)で sendを要求した場合、その多重度は、各ブラウザの HTTP1.1の最大接続数の設定に影響されるのでしょうか? FireFoxとIEとOperaの上記、接続数の設定箇所はわかるのですが ChromeとSafariがわかりません。 ChromeとSafariにも最大接続数などの設定は可能ですか?
>>680 あるあるww
>>683 できたとしても、webページ側からはなんにもできないから、自分以外に公開するなら、
接続数2とかでもちゃんと動くようにするべきじゃね。
685 :
Name_Not_Found :2010/08/19(木) 23:25:20 ID:xx33bvg8
キューを貯めておいて、順番にsendする仕組みを作ったことがあるけど、 そんなにじゃんじゃんsendしなきゃならない様なら、 長ーく繋がったままにしたほうがいい気がしてきた。
686 :
Name_Not_Found :2010/08/19(木) 23:49:18 ID:ovAqrro1
YAHOO UI (やその他の)JavaScriptライブラリーの中身を、HTMLのSCRIPTタグ内に展開するのはライセンス違反でしょうか? もちろん著作権表示は削除しない場合です。
687 :
Name_Not_Found :2010/08/20(金) 00:11:13 ID:POi/e94c
>>686 YUIはBSDライセンスだから、
著作権表記とライセンス条文と無保証を明記すればOK。
GPLでもJSは、ほぼコードがそのまま公開されるから問題なかんべ。
そんかわり、自分のもGPLになるけど。
>>687 ありがとう
そういえばYUIのライセンスってってゆるいほうですね
GNUは注意ってことね
日本語問題で修正せにゃならんこともあるし他人事じゃないですね
まあwebアプリの場合はGPLでもそこまで困ることはなさげだが (仕事でも納入先にはソースコードごと納品するのが普通だし)
690 :
Name_Not_Found :2010/08/20(金) 14:11:45 ID:gjWcg7Jh
aletr(それ)
692 :
Name_Not_Found :2010/08/20(金) 15:18:00 ID:gjWcg7Jh
>>691 やってみた
$(function(){
$("#hoge").click(function(){
var get_encURL="
http://twitter.com/share?url= "+encodeURIComponent(location.href);
alert(get_encURL);
});
});
<div id="hoge">hoge</div>
結果は短縮URLになる前のモノだった・・・
短縮されたURLを取得したいのです。
694 :
Name_Not_Found :2010/08/20(金) 16:00:43 ID:gjWcg7Jh
>>693 APIないのか・・・
var get_encURL="
http://twitter.com/share?url= "+encodeURIComponent(location.href);
$.ajax({
type : "get",
url : get_encURL,
cache: false,
success : function(html){
alert(html);
return false;
},
error : function(){
alert("false");
}
});
return false;
テキトーjqueryで試してみている。htmlが取得できればなんとか出来ると思う。
週明けに再挑戦してみます。
指定したURL先のhtmlソースを表示せずに変数に取り込むことはできますか? (取り込み後に特定の文字列を抜き出し、後続処理に使いたいため) IE8です。
>>694 Same origin policy
つか文字数が制限されていないところでわざわざURLを短縮する理由って何だ
アフィURLを隠蔽して嫌儲対策?
>>696 同じドメインのページならXMLHttpRequestでできる
違うドメインのページなら、そのページがレスポンスヘッダで
XDomainRequestAllowed: 1を返すのであれば、XDomainRequestを使ってできる
698 :
696 :2010/08/20(金) 17:19:56 ID:???
699 :
Name_Not_Found :2010/08/20(金) 21:39:47 ID:4dsfOcXZ
<input type="text">に入力された値を 非同期で別のページに送りたいのですが イベントリスナの時点で躓いてしまいました jQueryのchange()でいけるかと思いましたが (jsなど自動で)フォーカスをあてる→値入力→フォーカスを外す の3段階を経なければ動作させられず (jsなど自動で)フォーカスをあてる→値入力→関数発動 のようなイメージで動くイベントリスナ、 又は代替方法がありましたら教えてください 値の入力はバーコードリーダからの入力なので 一瞬、かつkeydownなどは使えなさそうです
>>699 下策だけどsetIntervalで入力値チェック
バーコードリーダーがよく分からないけど、 フォーカスを外すをjsでやればいいんじゃないの? あるいは、バーコードリーダからの入力のあとに送信実行の関数を書けばいいんじゃないだろうか。
702 :
699 :2010/08/20(金) 21:56:46 ID:???
>>700 現状ではsetIntervalしかなさ気ですね(´・ω・`)
>>701 "フォーカスを外すをjs"をどのトリガで走らせていいのかが…
レスありがとうございます
もうちょっと探して見つからなければsetIntervalでいってみます。
>>699 ブラウザは限られるが、inputイベントがある
ちなみにGoogleのトップページはsetInterval
バーコードリーダーにもよるけど 設定で最後Enter送信されなかったっけ? たいてい初期設定が最後Enter設定だったと思うけど それを監視してみるというのはどう ただバーコードリーダー自体の入力が早いから どうなのかはわからんが・・・
radioボタンの選択によって指定id要素のclassを書き換える為に以下のようなプログラムを書いてみましたが上手く動きません。 というかさっきまで動いてたのですが、いつの間にか動かなくなっていました… どこかおかしいところが有ったら教えてください <script type="text/javascript" ><!-- function ex1() { var elem = $('sample'); elem.className = 'size1'; } function ex2() { var elem = $('sample'); elem.className = 'size2'; } //--></script> <style type="text/css"> .size1 {font-size:80%;} .size2 {font-size:120%;} </style> <form><input type="radio" name="group" onClick="ex1()" checked>小<input type="radio" name="group" onClick="ex2()">大</form> <div id="sample" class="size1" >文字サイズ変更</div>
>いつの間にか動かなくなっていました ブラウザのエラーコンソール確認した?
>>706 ありがとうございます
エラー名でググったら同じような症状が見つかりました
原因はprototypeとjqueryプラグインのコンフリクトだったようです
jQueryとprototype.jsは競合するよな。テンプレ入り級の豆知識だと思う。
jQueryとprototype.jsを両方使うのってどういう時なんだろ どっちかで十分じゃないのかな
710 :
Perl忍者仙人モード ◆M5ZWRnXOj6 :2010/08/22(日) 22:35:53 ID:CHAL9TQc
websocketつかってるやついない?
ノーコンフリクトは基本JARO
ニコ動で両方使ってるページがあったような
両方使用は自己責任にて、ノークレーム、ノークエスチョンでお願いします
715 :
Name_Not_Found :2010/08/23(月) 03:27:13 ID:vKZcIChu
ちゃんとわかってて両方使ってる場合は問題起きづらいだろうけど、 面倒なのは制作会社たらい回しにされてる企業サイト。
716 :
694 :2010/08/23(月) 12:44:56 ID:9V2lU8KI
>>697 管理しているサイトについて
Twitter公式の短縮URLでつぶやいているリストを取得したかった・・・
HTML取得はできなかったので諦めるしかなさそう。ざんねん
JavaScriptで携帯用オンラインゲームを作りたいと思うのですが あまりJavaScriptでオンラインって聞かないですよね どうしてなのでしょうか? ちなみにperlを使ったルーム式にしようと思います
jsって重すぎじゃね。 そもそも携帯でオンラインってどの程度のだっけ?携帯でゲームやらんからわからん。
719 :
Name_Not_Found :2010/08/23(月) 16:30:17 ID:zfkLU5Jw
>>717 JSがまともに動くクライアントが少ないからじゃないかね。
iPhoneとAndroidは別として。
>718 とりあえず今までに作ったチャットやオセロ将棋トランプ等のラグとかあまり気にしなくていいものをまず作っていこうと思いますが 最終的にはラグが問題になるようなアクションも作りたいです もちろん携帯JSなのでCanvasも使えませんしショボいものになります ちなみに擬似P2Pを行う通信部は各ゲーム、アプリに対してフレームワーク的な共通のものにするのが目標です
通信部分とかはFlashの方がよくないか
722 :
Name_Not_Found :2010/08/23(月) 17:19:01 ID:BLqtDX/m
>721 ケータイではJavaScriptとFlashの連携方法は用意されていません もしかしたらhash指定等でできるかもしれませんがあまり現実的じゃない気がします
723 :
Name_Not_Found :2010/08/23(月) 17:19:35 ID:zfkLU5Jw
モバイルのJSよく知らんのだけど、 xdomainでajax出来るもの?
725 :
Name_Not_Found :2010/08/23(月) 18:12:47 ID:zfkLU5Jw
なるほど。厳しいね。ありがとう。 だとすっと、やっぱJSONPとかに頼ることになるのかな。
727 :
Name_Not_Found :2010/08/23(月) 18:37:59 ID:zfkLU5Jw
>>726 JSONPはライブラリ関係ないよ。
大雑把に超言うと
http://ABC.jp/1.htmlに var dat = null;
function getData(d){ dat = d; }
って作っておいて、
<script type="text/javascript" src="
http://DEF.jp/2.cgi " />
ってすると、2.cgiが
getData({
qwer : 1234,
asdf : 2345,
zxcv : 3456
});
を返す、って仕組みのことです。
>727 なるほど しかし広告自動挿入の無料スペースを使っているためちょっと面倒です サーバーへは送信だけにして(受信は中断して) サーバーからファイルに書き込み そのファイルを読みにいくというのが一番レスポンスが良さそうです MAXで100ms毎くらいに通信できればいいのですが… ちょっと試してみます
だいたい10KBで250msでした いろいろ処理を行うと保障されるのは1000msくらいですね これならレースゲームとかでも作り用によってはギリギリ実現可能かもしれません
クッキーの有効期限を送信で、 有効期限を次の日の0時に設定しようとしているのですが、現在時刻の+9時間後になってしまいます。 どの辺がいけないのかお教え願えないでしょうか? toD = new Date(); toH = toD.getHours(); toM = toD.getMinutes(); toS = toD.getSeconds(); limit = (86400 - (toH * 3600 + toM * 60 + toS)) * 1000; toD.setTime(toD.getTime() + limit); cookie_limit = toD.toGMTString(); document.cookie = "test_label=" + test_msg + ";expires=" + cookie_limit;
ヤバい、私日本語でおk orz クッキーの送信で、 有効期限を送った日の次の日の0時に設定しようと〜
ヒント:時差 大ヒント:GMT
>>727 そんな技があるんだ。能動的なXSSか。
なんか、いろいろと危なっかしそう。
蛇足だけどgetDataはsetDataだよね。
少し頭が混乱したので。
getDataの場合は、getData() { return dat; }だと思う。
chromeではcookieは有効期限指定しないと食べないんだね 動かなくて焦った
736 :
Name_Not_Found :2010/08/23(月) 23:59:23 ID:obRZfTTY
>>733 あー。JSがサーバからデータをゲットする、って意味でいつもgetって書いてたもんで。
すまんです。
JSONP自体はそんなに変なモノじゃないので、詳しくはおググりください。
JSONをパースするわけじゃいないので危ないことはないと思います。
つか、JS2.0でドメインまたぐ手段もできるし、過去の遺物になりそうだけど。
737 :
730 :2010/08/24(火) 00:12:32 ID:???
>>730 のlimitの値をいじっていたのですが、やはり現在時刻にプラス9時間になってしまいます。
cookieの有効期限を良く見ると現在時刻にプラス1年と9時間になっている事に気がつき……
一番最初の設定に戻したところ、有効期限が、現在時刻にプラス1年と9時間……
これって、スクリプトが間違っているせいでいいんですよね?
はいそうです
1年ずれるってのは何かおかしい。どっかで値をいじるのミスってる。 9時間ずれるのは問題ない。自分で書いたスクリプトによって設定される時刻と、 (new Date()).toGMTString() で取得できる現在時刻(GMT)とを比較してみればいい。
ロンドンの人なら間違ってません
new Date().toUTCString() を使用してください
742 :
Name_Not_Found :2010/08/24(火) 05:26:39 ID:vGNzcUxZ
>>737 1年ずれるの俺もやったことある。
冷静に計算して原因に気づいて身悶えしたw
コーディングしてる間に1年過ぎ去ってたとかそんなのか
744 :
Name_Not_Found :2010/08/24(火) 09:22:15 ID:LmB27viy
1ヶ月ずれるのは割りと多いな
>745 久しぶりにやると忘れてるんだよな あとgetHoursのsとか
747 :
Name_Not_Found :2010/08/24(火) 17:39:31 ID:ZsCg5ruM
location.hrefでページ移動する時に 404エラー時には○○の処理をして 404エラーが出ない時はページに移動する どうやれば出来まふ?
749 :
Name_Not_Found :2010/08/24(火) 18:11:32 ID:LmB27viy
>>748 ドメインまたがないならxhrでhead、かなあ。
質問です。 アホな事を聞きますが、Dateが参照する時刻は、各々のブラウザーを動かしているマシンの時刻でよろしいのでしょうか?
>>750 素早い回答ありがとうございます
自PCのアパッチ上だときちんと動作するのに、レンタルサーバーにあげると時刻がずれて困っていたのですが、関係なさそうですね……
頑張っていじってきます
ImageMagickも動かないサーバーとCanvasも動かないようなブラウザで、 どうしても投稿したGIF画像をブラウザ側で編集して表示したいです 初めはXHRでやればいいだろうと思っていたのですが、画像の中身は取得できないんですね 最終手段として 送信された画像をサーバー側で中身をplaintextに置き換えて保存し、それを取得して編集してサーバーに送信し、サーバー側で画像にし保存しそれを表示する ということを考えているのですがもっと単純な方法はありませんでしょうか? どうかアドレスをお願いします(>人<)
755 :
Name_Not_Found :2010/08/24(火) 19:55:41 ID:NWe5Imb+
>>754 ActionScriptでjpgならできるけど・・・
>755 ありがとうございます しかし基本的なJavaScript以外は使えません
758 :
Name_Not_Found :2010/08/24(火) 20:24:11 ID:NWe5Imb+
>>756 環境上つかえないということ?
初心者でも割と簡単にできるけど?
>>756 ImageMagickを使えるサーバを用意してそこでしょり
>758 環境的な問題です >759 どうしてもブラウザ側で処理をしたいのです
761 :
Name_Not_Found :2010/08/24(火) 21:18:56 ID:NWe5Imb+
>761 ありがとうございます Examplesを試してみたのですが残念ながら全く動きませんでした
教えてもらっておいて残念ながら動きませんでしたって・・努力しろ
764 :
Name_Not_Found :2010/08/24(火) 21:49:06 ID:LmB27viy
>763 一応ブラウザ2+1(NOJS)で見ました >764 1.GIFを0から作成する カラーパレットのようなものからマウスなどでブラウザ上でドットを作り、それをGIFとして保存できる形で表示する 2.投稿GIFを編集する 投稿したGIFを1の初期値とする 3.アニメーションGIFをつくる 4.JPEGも作る を考えており、1と2ができればいいと思います
IEでだけ動かねええええええええええ どういうことなの…
もうFlashでいいだろそんなの Flashでできるかは知らんがw
>>766 FlashうごかねぇからDLしろってリンクをよく出されるよねぇ。
それと同じでFirefoxやCromeのDLへのガイドだせばいいんじゃね?
今の回線なら新ブラウザの導入もすぐだし、IEが消えてくれればなんとなくうれしい。
>767 Flashでかいても結局似たようなコードになると思いますし 計算速度ではJavaScriptの方が速くできるので…
771 :
Name_Not_Found :2010/08/25(水) 06:16:47 ID:Tgr127Ho
その条件なら、あなたの言うようにサーバーと文字列でやりとりして、サーバーで画像保存でいいんじゃね? 写真みたいのだとキツイが、ファビコンみたいな小さいアイコンエディタつくるなら現実的だし。 サーバーでなに使えるか分からんけど、文字列ビットマップから、GIF画像つくるとかできるだろうし。 クライアントでエンコードまでしなくてもよいかと。
>772 ありがとうございます できるだけサーバーは使わない挑戦のつもりだったのですがそれも考えてみます
>IE乗換
まさに
>>761 だなww
>>770 flashよりjavascriotのほうが速いってまじ?
コンパイルするし、型指定まであるからflashのASのほうが速いと思っていたんだけど。
オブジェクトのプロパティ名を動的に生成する事ってできます?? var a = "hoge"; var b = function(){alert("a")}; var obj = {a,b} obj.hoge(); 期待としてはここでalertでaと出るような動作なのですが・・・ 上記のコードや obj = eval("{"+a+":"+b.toString()+"}"); obj = eval("{"+a+":eval("+b.toString()+")}"); じゃ出来ませんでした
できます
obj[a]って書くと普通に変数展開されるんですねー {a:b}って書いた時にaの方は展開されなかったので てっきりされない物だと・・・
evalでも出来るよ。 eval("obj = {"+a+":b}");
>774 ブラウザによると思いますけど JavaScriptはフリーズするほど負荷をかけられるのに対してFlashは結構制限されます
DOMでできた様々な色の1ドットを沢山表示して長方形の擬似画像として表示したいのですが、 一番軽く表示できる方法は何だと思いますでしょうか span:styleだとせいぜい1万ドット、 tableだとせいぜい10万ドットだったのですが、その10倍は表示したい(軽くしたい)と思っています 少々スレチかとは思いますが、JavaScriptでたくさんのDOMを出力することはよくあると思いますのでよろしくお願いします
色って毎回ランダム?決まった周期性有り? 後者ならcssの画像とかで行けるかなと思った。 100万てことは1000*1000か。背景とかに使うの?
>781 ほぼランダムです 1000万も表示させることはそうそうないと思いますが 50万とかがサクサク表示できるには1分以内に1000万くらいは表示させたいです tableがいいかとも思うのですが、どうしても2px単位になってしまいまうので困ってます
多分もうやってると思うけど、ランダムはclassにして他は全部CSSぐらいしか思いつかないな。 なんでtableのほうが軽いのか疑問だが。
display: block; float: left; なり display: inline-block; なりでできる
excanvas使うかPHPのGDでやれよ、非効率的すぎる
>786 ありがとうございます floatは上手く行かなくて諦めていたのですがinline-blockで最良のものができそうです
ここで聞くことじゃないかも知れませんが、 JavaScriptで等幅フォント文字を重ねてプロポーショナルフォントのように表示する AAビューアを作ろうと思っています そこでプロポーショナルと等幅フォントの幅の差まとめが知りたいのですがなかなか見つかりません ご存知の方がいられたらどうか教えてください
AA板いけ
jQuery + RubyでIRCのログの閲覧・検索システムを作っています。 --HTML (抜粋)------------------------------------------------------------------ <div id="menu"><p>検索 : <input type="text" id="q" value="" /><input type="submit" /></p></div> <div id="main"><p>ここに検索結果が表示されます。</p></div> --JavaScript (抜粋)------------------------------------------------------------ $(document).ready(function(){ $("input[type='submit']").click(function() { $("#main").load("../cgi-bin/logsearch.cgi?q=" + $("#q").val()); }); }); --logsearch.cgi例 (q=Hello)---------------------------------------------------- <ul> <li>100826 - 00:00:00 (User_A) <mark>Hello</mark>, World!</li> <li>100826 - 00:00:30 (User_B) <mark>Hello</mark>, User_A!</li> </ul> ------------------------------------------------------------------------------- 現在このようなコードでdiv#mainにlogsearch.cgiを流し込み、検索結果の表示を行えるようにしているのですが、 検索結果から直接当日のログ表示を行いたいと思い、以下のコードを$(document).ready下に追記しました。 $("li").click(function() { ("#main").load("../cgi-bin/logformat.cgi?n=" + $(this).text().slice(4, 10)); }); ですが、これでは期待した通りに動作しませんでした。恐らく<li>が$(document).readyの時点で 存在しない要素なのでうまくいかないとだとは思うのですが、なにか解決方法は無いでしょうか?
すいません、AjaxでXMLを読み込んでるんですが、XMLのある値を読み込もうとすると
スクリプトが停止してしまいます…
イージーミスだと思うのですがわからなかったので、どなたかチェックしていただけますか?
myAjax = new Ajax.Request (url,
{method:'get',onComplete:function(httpObj){
XML = httpObj.responseXML;
XMLTag = XML.getElementsByTagName("MAP");
itemTag = XMLTag[0].getElementsByTagName("item");
title= itemTag[i].getElementsByTagName("title")[0].firstChild.nodeValue;//これは問題なく読み込めてる
url= itemTag[i].getElementsByTagName("url1")[0].firstChild.nodeValue;//これがあるとスクリプトが停止する
<?xml version="1.0" encoding="UTF-8" ?>
<MAP>
<position areaID="1">
<item id="1" date="9/11">
<title>プロ野球○VS×</title>
<url1>
http://google.com</url1 >
<url2></url2>
</item>
<item id="2" date="10/18">
<title>プロ野球○VS×</title>
<url1>
http://google.com</url1 >
<url2></url2>
</item>
20個ほど続く…
</position>
</MAP>
794 :
Name_Not_Found :2010/08/26(木) 20:26:37 ID:Td2OJ18r
>>793 この行しか読んでないけど
>getElementsByTagName("url1")[0].firstChild.nodeValue
こうやって一度に書くと、
getElementsByTagName("url1")が[]を返した場合、
getElementsByTagName("url1")[0]はundefined
つまりundefined.firstChildになるからそんなプロパティはありませんエラー
ってのはよくある。
ちゃんとやるならいちいち何が帰ったか調べるべき。
もしくはxpathのお世話になるとか。
>>794 なるほど、
ちょっと修正して、もし値があれば変数に設定するっていうスクリプトにしたんですけど
if(itemTag[i].getElementsByTagName("url2")[0].firstChild.nodeValue)
とにかく値が入ってないものにアクセスした段階でスクリプトエラーで停止してしまうようです…
こういう時って皆さん方はどうやって解決してるんでしょうか
797 :
792 :2010/08/26(木) 21:18:18 ID:???
>>795 回答ありがとうございます。
ごく少人数の身内向けなのでJS必須でいいかなあとか思っていましたが、
普段とは違う環境からアクセスすることもあるかもしれないですし、そちらにも配慮したいと思います。
>>796 お前は何を読んだんだw
if(itemTag[i].getElementsByTagName("url2")[0] && itemTag[i].getElementsByTagName("url2")[0].firstChild && itemTag[i].getElementsByTagName("url2")[0].firstChild.nodeValue)
変数に入れてスマートにすること推奨。
普通に0とかでアクセスしなきゃいいだろ
800 :
Name_Not_Found :2010/08/26(木) 21:53:10 ID:z5C0SB7h
try{ }catch(e){} で挟めば解決
>>793 そのコードでエラーが発生するのは、
・url1要素が存在しないとき
・url1要素の内容がないとき
が考えられるわけだが、
前者なら
var nl_url1 = itemTag[i].getElementsByTagName('url1');
if (nl_url1) { url = nl_url1[0].nodeValue; }
後者なら(この可能性が高いと思う)
var tn_url1 = itemTag[i].getElementsByTagName('url1')[0].firstChild;
if (tn_url1) { url = tn_url1.nodeValue; }
両方の可能性があるなら
>>798 XMLファイル晒してもらわんことには推測でしか答えられんよ
802 :
801 :2010/08/26(木) 22:22:53 ID:???
あ、コード間違ってんな 前者なら var el_url1 = itemTag[i].getElementsByTagName('url1')[0]; if (el_url1) { url = el_url1.firstChild.nodeValue; }
803 :
Name_Not_Found :2010/08/27(金) 10:03:46 ID:ehs7gYF6
こっちの方がスマート try{ url= itemTag[i].getElementsByTagName("url1")[0].firstChild.nodeValue; }catch(e){url= "";}
それがスマートだと感じるのはすごいな てかXMLじゃなくてJSON使えと言うべきなんじゃないか
JavaScriptでデータをやり取りするのはXMLよりやっぱりJSONが扱いやすいな、JavaScript Object Notationっていうぐらいだし
try-cathcは最後の手段だと思ってる 原因をはっきりさせて対処しないと後に響くかもしれんし あとtry-catchよりifの方が速い。数回程度じゃ誤差だろうが
>806 うちの環境じゃあ引っ掛からなかった場合はむしろ速いんだが
xpathじゃだめなのか
>>807 お前の環境じゃあそうなんだろうな。
メソッドチェーンしてエラーはtry-catch
は、処理として美しいかも知れんけど
問題発生時の切り分けが困難すぎて
うんこだよな。
独自に何かしらの変数を定義せずに 使うスクリプトにおいてファイル名とか uniqIDみたいなのって取得できないでしょうか・・・ 用途としてはuserscriptとかで localStorageに保存する時のprefixにしたいんです・・・
try catchなら getElementByTagName とか書いてても動くんだぜ! すごいよな!! XPathは…まあ、ブラウザ限定って話ならないこともないけどさ オレオレXMLでXPathって、無駄が多すぎるだろ
>>810 location.pathnameだと長いか
>>810 prefixつけるのは何が目的なの?
サイト側から見えるのを気にしてる?
ランダムに付けたとしてもfor inで調べられるから無駄だと思うけど
>>813 localStorage自体がorigin毎に保存されます
で、この時問題なのが同じoriginに対して
複数のuserscriptを適用した時に
localStorageのkeyが被ると
別のuserscriptの値を上書き/取得できちゃうんです・・・
適当な名前付ける他ないんじゃないかなあ com.yourdomain.scriptNameなり
>809 いやいやなんでもかんでも使おうって言ってるんじゃないよ このケースではこれが一番得策だろう いろんなプログラミングばっかりして大雑把なものへの抵抗が強くなり過ぎてない?
>>817 それは否定しない。
デバッグの必要が無いワンライナーなら楽しい書き方だと思う。
でもデバッガを起動するならメソッドチェーンは敵だよね。
特にJavaScriptでは例外の型を選んでcatchすることができないんだから、
try-catch使うのであればどのようなエラーが発生する可能性があるのか
自分できっちりと把握して使うのが当たり前だと思う
(それはJavaやC#でも同じだけど)。
それをせずに「とりあえず」でnullや空文字を返すコードは時限爆弾みたいなもん。
逆に何が起こるか自分で全部知っているなら例外を全部握りつぶしても問題ない。
個人的には
>>803 はずいぶん荒っぽいやり方に見えるけど、
十分確認した上でなら「あり」だとも思う。
自分で書くならせめてconsoleにログ吐いたりするかな。
エディタであちこち触ってるうちにうっかり余計な文字が紛れ込んだりして
「なぜか動かない」で延々悩んだりするのは嫌なんで。
自分の勝手なイメージだけど JAVAはエラーが起きて止まったり落ちたりしたら大事だから 例外処理は基本というかその例外処理自体が結構メインよりの動作だったりするけど JavaScriptはエラーが起きたらその時は動かないで問題ない、または決まった動作をさせればすむ処理をさせることも多いし 簡潔でどうなるか予想できる処理をさせることが多いからそもそも例外処理はオマケレベルの気がする
>>821 コードの6割はエラー処理だからな。仕方ない。
500KB程の大きめのページをIEで読み込むと最初の数秒間固まってしまうのですが、javascriptでなんとかなったりしないでしょうか? ちなみに他のFirefox,Chrome,Operaなどはスムーズに読み込めます
HTML自体が500kbだったらパースとレンダリングで固まってるわけだから HTMLの内容を分割してonloadなりでsetTimeoutを駆使して追記していくぐらいしか無いかな
>>824 サンクス
やっぱ分割するしかないですか
IE滅びればいいのに^^
>>825 テーブルとかだったらIEを滅ぼす前に出来ることはある
827 :
Name_Not_Found :2010/08/27(金) 18:59:11 ID:woiBJ7zF
>>824 予めCSSでdisplay:noneにしておいて、後はJSで様子を見て開放していけばいんじゃないの?
>>826 大部分が唯のテキストなんだ…
>>827 おお、それはなんか手軽そう
ちょっと試してみまする
と思ったけど残りの分の読み込みのトリガーはどうやればいいのかな javascriptだけじゃ、残りの分は10秒後に読み込み、とかできないし スクロール監視がいいだろうか
display:none;にしても初回読み込み量は変わらなかったでござる
display:none;にしても見えなくなるだけで読み込まれる量は変わらないし・・・
832 :
Name_Not_Found :2010/08/27(金) 20:08:22 ID:woiBJ7zF
>>830-831 解析じゃなくてレタリングが一番重いんだぞ?
そもそも読み込み量の問題なら、原文を修正するしかないだろ。
>>828 唯!唯!唯!唯ぅぅうううわぁああああああああん!!! あぁクンカクンカ!クンカクンカ!
って500kbくらい書き連ねているのかと思った
( ´д)ヒソ(´д`)ヒソ(д` )
>>832 レタリング?
レンダリングとは違うの?
836 :
Name_Not_Found :2010/08/27(金) 21:36:13 ID:woiBJ7zF
揚げ足しかとれねーのか。このスレも終わったな。
唯の誤字にいちいち構うなよ
838 :
Name_Not_Found :2010/08/27(金) 21:49:40 ID:woiBJ7zF
>>829 俺が言ってるのは解析だけは先に済ませて、レンダリングは後で部分的に行うってこと。
だから、setTimeoutを使って適当な間隔を空けてからdisplay:noneを開放してやればいい。
元のHTMLを"ABCD"としたときに、これを適当に分割する。
<div style="display:none;">AB</div><div style="display:none;">CD</div>
気持ち悪いなら、このラッパー要素は開放時に消せばいい
>>775 var a = function(){alert("a")};
var obj = function(){};
obj.prototype.hoge = new a;
obj.hoge();
840 :
Name_Not_Found :2010/08/27(金) 22:05:17 ID:woiBJ7zF
>>839 おいおいw
それは、new aの段階でアラートが出てるんだぞ。
こうだろw var a = function(){alert("a")}; var Obj = function(){}; Obj.prototype.hoge = a; obj = new Obj(); obj.hoge(); しかも、動的生成じゃないしw
>>839 やりたいのはこういうことかな。
var a = 'hello';
var b = function() { alert(a); };
var obj = {};
obj[a] = b;
obj.hello();
いずれにしてもJavaScriptの基礎を勉強したほうがいいと思うよ。
>>838 試しに文章を全部display:none;してみたところ、やはり数秒固まってしまいました
というわけで諦めて分割しようかと思います
>>839 こうだね
var obj
obj[hoge]=function(){alert("a")}
obj.hoge();
>>844 ケアレスミスだと思うけど、それじゃhogeの中がhoge固定で意味ないよ
var obj={}, hoge = 'aaaaaaaa';
obj[hoge]=function(){alert("a")};
obj[hoge]();
ってしたかったのかな
2個質問、わかる人いたら教えてください 1.実体参照を置き換えるハックで strのサイズが大きいと、resultが65536文字に切り詰められるんだが nodeValueかinnerHTMLにサイズ制限ってある? var temp = document.createElement("div"); temp.innerHTML = str; var result = temp.childNodes[0].nodeValue; 2.文字列への参照の参照みたいなのってjavascriptで実現出来る? //refなんてないのでこれは擬似コード function refinnerhtml(id){return ref document.getElementById(id).innerHTML;} refinnerhtml('myid')+="footerのコード"; こんなのが出来ると毎回innerHTMLとかタイプしなくて済んで楽そうなんだけど
847 :
Name_Not_Found :2010/08/29(日) 15:56:52 ID:b5eYOawe
>>846 1) 仕様書では上限は規定されてないから、実装次第。
2) 文字列は表面的には基本型だから、関数でラップして引数を与えるしかない。
848 :
Name_Not_Found :2010/08/29(日) 16:01:10 ID:b5eYOawe
>>846 補足。。
1の仕様書っていうのはECMA-262のことね。だから、これはJSの文字列全般の話。
>>846 文字数減らしたいだけなら、
var x = document.getElementById(id);
var h = "innerHTML";
x[h] += str;
... ...
パフォーマンスも考慮するなら、
var html = [];
html.push(str);
... ...
x.innerHTML = html.join("");
850 :
Name_Not_Found :2010/08/29(日) 17:50:45 ID:YiBNjmdi
>790です あれから誰にも回答を貰えませんでした… どうかどうかヒントをください…
>>847 ,849
どうもありがとうございます。
1.はDOMの仕様書に答えがありました(1.1.4)
nodeValueはDOMStringで、DOMStringは添え字が16ビット
今PCに入ってるのだと
Chrome5は仕様通り、Firefox2.0だと4096文字、IE6は切り詰められない
innerHTMLは仕様書にはないんですね
>>849 今回は単体なので、前半のやつ、使わせて貰います。
パフォーマンスの話は、追加する要素数が複数個の場合ですよね
innerHTMLはMS独自だからMSHTMLの仕様書にありそう(あるの?)
>>846 2.に追記
ECMAScriptの仕様では、左辺値を返す関数は定義してもいいことになってるが
実際の所そういう組み込み関数は存在しない
856 :
Name_Not_Found :2010/09/01(水) 13:59:18 ID:9ORpQFnq
ボタンが3つあって、押すごとに画像を切り替えて、同じ領域に表示することを考えています。 これはできたのですが、最初は何も画像を表示したくないのですが imgタグに src="" を指定すると、画像がないことを示すアイコンが表示されてしまいます ブランク画像を用意する以外の方法で、最初は何も画像を表示しないようにするには どうしたらいいのでしょうか
CSSでdisplay:noneとかvisible:hiddenとかする
mouseleave、mouseenterが子要素に反応してしまう時があるがあれはなんだろう・・・ 調べても有益な情報がない・・
jQueryなら10msごとにキューから命令を取り出すからタイムラグがある
860 :
Name_Not_Found :2010/09/01(水) 23:41:28 ID:R96DMOZK
>>859 それってあれかね。
setIntervalやsetTimeoutをいっぱい書くとおもくなるから、
ひとまとめにするやつの弊害?
861 :
Name_Not_Found :2010/09/02(木) 03:50:03 ID:dSaWZ26a
thisは書き換え不可みたいなのですが コメント部分で、aの中身を"fuga"にかきかえるようなことは出来ますか a="hoge"; String.prototype.fuga=function(){ /* */ } a.fuga(); alert(a);
863 :
Name_Not_Found :2010/09/02(木) 18:01:03 ID:0t24NPK7
なんていう名称なのかが分らないですが、JavaScript にも perl みたいな 0..9 とか 'a'..'z' みたいのありますでしょうか?
864 :
Name_Not_Found :2010/09/02(木) 18:24:20 ID:xJZRP8FF
call/applyは関係ないような 862は無理でしょ
a=a.fuga()にしていいなら可能だけどそれだと意味なさそうだしなw
867 :
Name_Not_Found :2010/09/02(木) 19:28:09 ID:fCrl5Kaf
できないって言ってる人は初心者? document.getElementsByTagName("script")[n].innerText のmatch、sliceでできるじゃん
>>867 を最高に罵ってやろうと思ったけどアホらしくて全文消した
String.prototype.fuga=function(){ a="fuga" }
>868 いやいやJavaScriptみたいなネイティブから距離がある言語は、 思いきったことをしないといけない時があるんだよ 一見マヌケなようでも「できない」より「できる」方がいいでしょ? ある意味視野を広げたいいコードだと思うよ JavaScriptの特徴を活かしてるじゃん まあお前さんはこんなんよりよっぽどいいコードを書けるんだろうから 文句言いたい気持ちはわかるよ
872 :
Name_Not_Found :2010/09/02(木) 22:01:50 ID:0t24NPK7
是非とも参考にしないで欲しいんですが、これは? String.prototype.fuga = function(){ this.toString = function(){ return 'fuga'; }; }; var a = new String('hoge'); // var a = 'hoge'; // a = Object(a); alert(a); a.fuga(); alert(a);
873 :
871 :2010/09/02(木) 22:32:12 ID:???
なるほど。そういう方向だと、valueOfも書き換えた方が良いのかな しかし、コンテキスト変換が行われないような場合 var pln= function(s){document.getElementById('stdout').innerHTML+=s+'<br/>';} var a = new String('hoge'); pln(a); a.fuga(); pln(a); こうすると、hogeのままです 元々の質問の目的は、それが実現出来るか、よりも どういうコーディングするのが良いかなってのの探索だったので 普通のやり方では無理そうってのがわかったので一応、満足です みなさんありがとうございました。
いや出来てないしw 一休さんかよw
>>872 それやってみたけどこっちで変わってなかった理由が今わかった。
alertじゃなくてchromeのconsole.log使ってたわ。
ベストなのはa.fuga();の関数内でthisの名前="a"が判ればevalでも何でも使って完全に書き換えられるよね。
普通の関数ならブラウザを選ぶけどできるのになぁ。(function a(){return arguments.callee.name})()
俺だったら普通にindexOfとかで>867みたいにやるけどな それしかやる方法がないのならそれが普通だろ だったら変に考えず使えばいいのに
877 :
Name_Not_Found :2010/09/03(金) 09:01:00 ID:VuAS0xwH
猫リンクに見えた。疲れてんのかな。
>>876 それだとa.fuga()で実行する必要性がないじゃん?
change()とかでもいいんだし。あと、変数aっていう部分の特定が出来ない。
change("a")とかするなら、
>>867 である必要はなくできる。
し! _ -── ‐- 、 , -─-、 -‐─_ノ 活 噴 // ̄> ´  ̄  ̄ `ヽ Y , ´ ) 噴 え 火 火 L_ / / ヽ 火 | 山 が / ' ' i !? マ ま 許 / / く ジ で さ l ,ィ/! / /l/!,l /厶, だ れ i ,.lrH‐|'| /‐!-Lハ_ l /-!'|/l /`'メ、_iヽ よ る l | |_|_|_|/| / /__!__ |/!トi i/ レ!/ レ、⌒Y⌒ヽ ね の _ゝ|/ ヽト、|/ ヽト、N' ヾ,ノ! l は 「 l /\ /\ | | /\ /\ リ ヽ | ノ! ! | _ノ -┐ ,√ ! リ l ! 7/ レ'⌒ヽ/ ! | ○ _人__人ノ_ i ○ //! 人_,、ノL_,iノ! /! ヽ 「 L_ヽ ノ/ / / lト、 \ ノ フ 了\ // ハ キ { / ヽ,ト、ヽ/!`h ) ッ |/! 「ヽ, /) _ ‐' ハ ャ ヽ/ r-、‐' // / |-‐ く サ ジ > / / `'//-‐、 / ハ ハ > /\\// / /ヽ_ ! | ッ ( / / // / `ァ-‐ ' ハ ハ / /! ヽ レ'/ ノ ン > ' ∠ -‐  ̄ノヽ / { i l ! / フ / -‐ / ̄/〉 〈 \ /!
すみません、誤爆しましたorz
>879 その辺は他が具体的にだいたいどうなってるかが分かっとけばいくらでもなんともできる ライブラリーとかじゃなくてその場の道具として使うのならなんとかなる
仮引数の変更を実引数の変更に反映させる方法ってありますか? hogeみたいにすると、グローバル変数が増えてしまう new function fuga(){ function f(i){g(i);g(i);} function g(i){++i;pn(i);} var i=0;f(i); } new function hoge(){ function f(){g();g();} function g(){++i;pn(i);} var i=0;f(i); }
884 :
883 :2010/09/04(土) 10:09:23 ID:???
訂正:pnはalertとかに置き換えてください
Objectは参照渡しだからObjectで渡したらいいよ
できました、ありがとうございました!
「参照渡し」という用語の使い方が間違っている。 オブジェクトは「共有渡し」だから、とか言うべきかも。
>>887 そんな造語で言われるとかえって通じない
885じゃないけど 復帰渡し(Call-by-Copy-Result)とは、参照渡しの特殊ケースであり とあるから間違ってないんじゃない?そしてなぜen
コピーリストアと参照渡しも別のもの。どちらもFORTRANの実装に
よく使われていた。基本的にパラメタをサブルーチン側から書き換えて
結果を返せるようにしたもの。オブジェクトを渡して共有させる
>>885 とは別のもの。ま、そういう試験に出るような知識なんかどうでもいい
と言われるならその通りなんだけどね。ちなみに情報科学ものの項目は
日本語Wikipediaはあんまり信用できないと思っている。
凄くどうでも良いと思うが・・・ 意味合いで通じない分けじゃあるまい・・・ それに信用出来ないなら信用出来るように書き換えればいい話
「参照渡し」という用語の間違った理解が広まるのは嫌。 日本語Wikipediaを片端から編集して回れと?まっぴらだね。
意味の違う言葉を「意味合いで通じる」でいっしょくたにしてしまう方が分かりづらいと思うけどな。 個人的にはJSやJavaの引数は「参照のコピー渡し、みたいなもの」とか言ってたんで、 call-by-sharingという用語があることを知ってすごく納得した。
call-by-referenceってこういうのでしょ。関数側でも引数の指しているアドレスが同じ perl sub f{printf("%p\n",$_[1]);} sub g{} printf("%p\n",g);f(g); C++ void f(int&a){a=10;printf("%p",&a);}int main(){int a=1;f(a);printf("%p",&a);} javaやjavascriptはそうじゃない 引数は「同じアドレスを指すオブジェクト」のコピーであって元のオブジェクトとは異なるんで そのオブジェクトを指す先は変更出来るが、そのオブジェクト自体は変更出来ない var a ={i:1} function f(o){o={i:2};} //不可。参照渡しなら可 function g(o){o.i=3;} //可 でも、call-by-sharing。こんな語初めて知ったわ。 the term "call by sharing" is not in common useって書いてるし 自覚有るみたいよ
■参照渡しはあるよ派 function hoge(p) { p.name = "buchi"; } var q = {}; hoge(q); alert(q.name); "buchi" 関数はちゃんと渡したオブジェクトに対してアクセスできているので参照渡しと呼んで良い。 プリミティブでは純粋な値渡しになるので、違いを明確にするためにも 「参照」と呼んで誤解を招かないようにすべき。 ■参照渡しはないよ派 function hoge(p) { p = "cat"; } var q = "dog"; hoge(q); alert(q); // "dog" ってやったとき、 "cat" と表示されるのが引数が参照渡し。 JavaScriptでもJavaにもこの参照渡しという仕組み自体が存在しない。 参照渡しが欲しければC/C++やVBAやれ。
はい、これでおしまい
いやいや、俺の暇つぶし
>>897 ポインタを介してそれが実現出来るだけで、C言語には参照渡しはない。
>>898 よくある勘違いで、参照型と参照渡しは直接関係ない。参照型を値渡しすることだってある
適当にググったらけど例えばこれ
ttp://msdn.microsoft.com/ja-jp/library/eek064h4.aspx 仕様書の8.7 参照型にはこんなことが書いてある
a value of type Reference is used only as an intermediate result of expression evaluation and
cannot be stored as the value of a variable or property
変数とかプロパティには参照は格納されない
(略)This possibility is admitted purely for the sake of host objects
No builtin ECMAScript function defined by this specification returns a reference and there is no provision for a
user-defined function to return a reference
ただ、独自実装のために、参照を返すことは許されてる。
でも実際の所、そんな実装はない
勉強にもなるのでもうしばらく続けてほしい 他に質問なり何なりが飛んできてるのにやってたらどうかと思うけど
はい盛り上がったので900超えました。テンプレ論議あれば今どうぞ。
じゃあ、そろそろまとめて
call-by-value:組み込み型 call-by-sharing:オブジェクト call-by-reference:関数の返値として参照を返すのは仕様上認められている ただ、現実そういう実装はない(flanaganの本に書いてある)
call-by-sharingってCで言うところのポインタ渡すのと同じって考えればいいかな?
Javaは「参照の値渡し」でござる
それをcall by sharing/call by object/call by object-sharingと呼ぶそうな
document.evaluateの使い方?ついて質問です xhrとかでhtmlを取得した値をDOMにしてからcontextNodeに指定し var dom = document.createElement("HTML"); dom.innerHTML = res.responseText; document.evaluate(xpath,dom,null,7,null) としてdomの中からid hoge を取得する時 firefoxだとid('hoge')で取得できるのですが chromeの6.0以降だとid('hoge')では取得できません 仮にidがついてるのがdiv要素だとして//div[@id="hoge"]だと取得できます これはcontextNodeの使い方がそもそも間違ってるのでしょうか・・? それともevaluateの実装の違いによる問題なのでしょうか・・・
誰かこの質問スレのdatファイル持ってない? できれば1からほしいんだけど。。
jQueryのプラグインでclickイベントで動くものがある場合に プラグイン上でclickイベントを動作させた後で 独自のclickイベントを実行させたいのですが、 その場合はプラグイン内のclickイベントの内容を 改造するしかないのでしょうか 元のhtml上で $("#○○○").click( function() { alert("OK"); }); 等と書いてもプラグインのclickイベントに食われてるようです。 なら $("#○○○").mouseup( function() { alert("OK"); }); とやってみたのですが、逆にプラグイン側のイベントを食ってしまいました
>>908 Chromeの他、Opera、Safariも同様の動作で、Firefox(の3.5以上)だけが
本来のDOMツリーに属してないDOMにもid関数を使える。仕様的には未定義だった気がする。
各ブラウザでid関数を使えるようにするのは結構面倒で、なるべく簡単書いてみると
var html_text = 'HTML<p>hoge<p>fuga<span id="a">aaa</span>';
var doc = document.implementation.createDocument(null, 'html', null);
var body = document.createElement('body');
body.innerHTML = html_text;
doc.documentElement.appendChild(doc.adoptNode(body));
console.log(doc.evaluate('id("a")',doc,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue);
こんな感じ。
最近ならquerySelector使うほうが断然楽だね
はぁ?
ふぅ
ライブラリ類を使う必要性を感じないのだけど、 トレンド的にはやっぱ使うべきなのかね。 なんつーか、ライブラリはコードが濁って本質が見えなくなる気がする。
仕事じゃ開発効率が大切だからねえ。 勉強が目的ならライブラリは後回しにするべき。
916 :
Name_Not_Found :2010/09/06(月) 03:05:43 ID:qg8XoJi9
>>914 使いたい時に使えばいいんでね?
ライブラリの話が溢れてるのは、
あんまり書けない人もJSに手を出すようになったからで、
PureJSで問題なく書ける人とかは、そういうふうに思うことも多いでしょ。
とくにPrototype.jsやJQuery以前からPureJSでゴリゴリ書いてた人は
それなりにオレオレライブラリが出来てたりしない?
俺はするんだけど。
>>911 なるほど・・・
Chromeの5.0.xまでは同じソースコードで取れてたので謎でした
id関数は//*[@id="hoge"]とかに置き換えるほうが楽なのかな・・・
そしてchromeやfirefoxじゃとれる
"//a or //b"といったxpathでbooleanの結果が取れなかった・・・
この書き方自体が変なのかな・・・
>>914 実際の案件やってると確実にIEに悩まされるから、ライブラリやフレームワークって便利なんだよ・・・
レアケース以外は差異を考えなくてよくなる
あとイベントまわり
919 :
Name_Not_Found :2010/09/06(月) 12:34:54 ID:YvqIXiGB
このスレには不似合な低レベルな質問ですみません。
http://okwave.jp/qa/q6145039.html このページの質問者と同じ考えになり、回答者の指示に従って私も現在動かしています。
[質問]
・もう一つ語句を指定して除去したい。else ifでやるつもりだがそれがベストなのか。
・if (entry.title.match(/.*PR:.*/mi) == null)のmiと.の意味が解らないので
if (entry.title.match(/*PR:*/) == null)に省略して動かしているが問題は無いか。
以上二つ、どうかアドバイスを宜しくお願い致します。
>>916 たしかに、ライブラリがはやる前からJavaScriptを使ってるから、
オレオレライブラリ的なものはあるね。
でも$("foo")みたいな横着は絶対しない。
ライブラリは、JavaScriptの文法をほかの言語っぽくするのがどうも好きになれないな。
>>916 イベントをモリモリ使うコードを書いたりするけど
ブラウザ互換で注意するポイントって、言うほど多くない気がするんだな。
自分でチェックできるのがFirefox、Opera、Safari、Chromeの最新安定版とIE6以降、OSはWinとMacくらいだから、
その辺がライブラリだとより広い対象になるんだと思うけど。
if (entry.title.match(/.*(PR:|新しい語句).*/mi) == null) { こんな感じで mは改行への対応 iは大文字小文字問わず
922 :
919 :2010/09/06(月) 13:12:16 ID:???
バッチリ動きました! miではなくmとiだったんですね・・・もっと勉強します。 本当に有難うございました
923 :
Name_Not_Found :2010/09/06(月) 13:47:35 ID:qg8XoJi9
>>920 >でも$("foo")みたいな横着
QuerySelectorって横着かなあ。
俺も$は好きになれない IDゲト!("") なら気に入ったかもしれないが
大量にあってもベタ書きしてるってこと?
$がいやならidget('foo')ってかけるように定義すればいいだけなんじゃ? $だってjavascriptの文法で決められた、利用出来る識別子じゃん
$id("fooooooooooooooooooooooooooo") $xp("//a") $css("a > b") こんな感じならいいということか
ES3 7.6 "ドル記号は機械的に生成されるコード中のみの使用を意図される。" ライブラリが乱用しだしたからかどうか知らないがES5でこの文言は消えたけど
他言語の宿題スレ的な質問が不適当でしたらすみません。 ・入力としてプレーンテキストを受け取る ・リンクとして張るべき文字列(http/https スキームで良いです) アンカー付きの HTML にして返す といった処理はどうすればよいでしょうか。 Web メールのビューアあたりでよくありそうな処理ではないか…と思っているのですが…
>>917 Chrome5では動いてたんだ…。動かない気がするけどなぁ。
実行している元のページ上にid="hoge"な要素があって、そっちを取得してた可能性も…。
ちなみに //*[@id="hoge"] も .//*[@id="hoge"] と相対パスにしておかないと↑と同じことに。
> "//a or //b"といったxpath
"//a | //b" かな。
931 :
Name_Not_Found :2010/09/06(月) 17:36:20 ID:qg8XoJi9
>>929 URIの正規表現にマッチしたところを置換する。
現実的には、テキストノードを拾って、正規表現マッチさせて、
そこでノードをブチッと切ってa要素を埋める、ってするのかな?
932 :
Name_Not_Found :2010/09/07(火) 09:44:02 ID:9vNsFXzG
Javascriptで、テーブルの行を入れ替える処理をしたいです。 テーブルの各行には、テキストボックス(<input type="text">〜)、コンボボックス(<select>〜)が配置されていて、 その内容(テキストボックスの文字列や、コンボボックスの選択された値)を保持したまま入れ替えたいです。 下の関数で、IEではうまく動いているのですが、FirefoxやChromeだと、 入れ替えようとした行の双方の値が消えてしまいます。 Firefox・Chromeでも問題なく動作させるにはどうすれば良いですか? *tblは、操作したいテーブルのid function swapRow(r1, r2){//r テーブルの行のインデックス。0始まり,r1<r2 var colsLen=tbl.rows[0].cells.length; var newTR; var newTD; newTR = tbl.insertRow(r1); for(var i=0;i<colsLen;i++){ newTD = newTR.insertCell(i); newTD.innerHTML = "" + tbl.rows[r2+1].cells[i].innerHTML; tbl.rows[r2+1].cells[i].innerHTML=tbl.rows[r1+1].cells[i].innerHTML } tbl.deleteRow(r1+1); }
突然すいません
ttp://xn--5usq05i.com/ ↑このサイトの様に、ページを移動せずにAPIの検索結果のソートを変更していくのはどうしたらいいんでしょうか?
全パターンを最初に読み込んで表示を切り替えてるだけのようには思えないんですけど・・・
リンク先見てないけど普通にリクエストをサーバに投げてるんじゃないの
>>931 ありがとうございます。プレーンテキストなのでどこで切るべきか迷っていたのですが
スペースと改行コードあたりでそれなりに動いているようですのでこれで行ってみます。
>>933 クリックのタイミングでサーバに問い合わせ→DOM を削除 / 追加しているんじゃないでしょうか?
>>934 ,935
リクエストをサーバに投げるというのは、ボタンをクリックするとパラメーターを送ってその条件に応じたapiを
javascriptでパースして表示しているということでしょうか?
それだとブラウザでは表示されても、HTMLソースに表示されなくないでしょうか?
937 :
Name_Not_Found :2010/09/07(火) 15:20:53 ID:FWjhBF6p
>>936 なんかAPIって言葉の使い方が間違ってる気がするが、それはさておき。
サイト見たけど普通に同期通信してるだけだと思う。
938 :
932 :2010/09/07(火) 17:27:59 ID:9vNsFXzG
alertを挟んでデバッグしてみた結果、 Firefox,Chromeの場合、 innerHTMLでは、フォーム部品(テキストボックスなど)の入力内容が、 属性valueの値として取得できないようです。 IEではちゃんと、innerHTMLで、valueが補完された状態で出てくるので、 その行の各セルがどんな内容だろうと、 上で書いたswapRow()メソッドで、ゴッソリ入れ替えができるのですが。 Firefox,Chromeで同じようなことをする場合、 innerHTMLで見ないで中身のアイテムを参照し、 document.getElementsByName("text_" + r1).item(0).value のようにすれば個々のvalueを正しく参照できるようですが、 縦列のアイテムの種別ごとに特別にコードを書かないといけないため、かなり冗長することになります。 縦列の数が多いので、 できればIEで成功しているような「Rowを内容も含めてゴッソリ入れ替え」ができれば良いのですが、 何か良い方法はありませんか?
>>938 FirefoxとChromeの方が規格に準拠した動作。
HTMLテキストじゃなくてDOMノードを入れ替えればいいんじゃない?
そもそも変数じゃないし。 本人が理解している内容を、正しい言葉で表現できていないだけかと。
var new_div = document.createElement('div') などしたあとに、 new_div.id = "div_id" などできますが、この new_div に生えているメソッド一覧はどうすれば確認できますか?
var str = ''; for (var prop in new_div) { str += prop + ': ' + new_div[prop] + '\n'; } alert str;
っと、alert(str);
「生えているメソッド」なんて言い方、初めて聞いた。 自分の髪もユーザ定義で生やすことできないかなぁ。
var 毛根達 = 人間.evaluate(".//毛根",頭皮,null,7,null); if (毛根達.resultType != 7 || 毛根達.snapshotLength == 0) { return "毛根死んでるので手遅れです"; } var 毛根の数 = 毛根達.snapshotLength; for (var i = 0; i < 毛根の数; i++) { var 毛根 = 毛根達.snapshotItem(i); var has毛 = false; for (var j = 0; j < 毛根.childNodes.length; j++) { var 毛根についてるもの = 毛根.childNodes[j]; switch (毛根についてるもの.nodeValue) { case "フケ": 毛根.removeChild(毛根についてるもの); break; case "毛": has毛 = true; 育毛剤(毛根); break; default: 洗浄(毛根); } } if (has毛 == false) { 毛根.appendChild(人間.createElement(毛)); } } こんな感じじゃだめか
「生えている」はあんまり聞かないけど、「メソッド/プロパティを生やす」ならたまに使うかな
>>947 3 行目で return する状況なのです;;
950 :
Name_Not_Found :2010/09/08(水) 07:12:08 ID:zN97cMnR
while(自分.体.頭皮.毛.length<Math.通常頭毛量){ 自分.体.頭皮.history.go(-1*365*24*60*60*1000)}
>>938 普通、innerHTMLなんかでやらずにDOM操作でやるんじゃない?
てかテーブル内入れ替えとかググれば色々見付かりそうだけど
innerHTMLの便利さから抜けられないっす
サーバサイドでHTML作ってinnerHTMLで流し込むのが楽なのは事実。 速度的にはどうなんだろう、DOMいじるよりも速そうな気はする。 ぐぐれば見つかる気もするけど今日暇があったら試してみよう。
954 :
938 :2010/09/08(水) 11:14:49 ID:S3JcGJS3
http://www.cutt.co.jp/book/4-87783-818-X.html http://www.cutt.co.jp/book/anser818/anser16_2.html 突然失礼します。訓練校で上記の本を使って、HTMLを習っている初心者なので
すが、IEやsleipnirで演習16-2がうまく動作しません。firefoxやez-htmlで
確認してみると動きます。「開く」は動作するのですが、「閉じる」が動作
しません。「開く」のところで参照している関数内で、例えば
setTimeout("sub.close()",5000); を挿入するとIEでも閉じる動作をします。
(「開く」ボタンで開いた後で、閉じてるので、全く意味が無いですが・・・)
「閉じる」のほうの関数にうまく子窓の情報が行ってないのかもしれません。
訓練校の先生に聞いてもうまくはぐらかされるので解決できず、ひたすら
ネットを徘徊していたのですが、結局解決に至りませんでした。家のPCでも
学校のPCでも同じでした。分かる方おられましたらお願いします。
>>955 IE6、IE8でそのサンプル問題なく動いたけど。
コード晒してもらわないと分からない
957 :
Name_Not_Found :2010/09/09(木) 06:35:33 ID:aYJrSb3/
>>955 そもそもsubは配列として使ってるのに、
sub.close()が動く時点で、なんかあやしい。
>>957 配列には開いたウインドウの要素が入ってるから動いて当たり前
959 :
Name_Not_Found :2010/09/09(木) 07:49:33 ID:aYJrSb3/
>>958 もうすぐ8時だぞ。
顔洗って朝飯食って目を覚ませ。
960 :
955 :2010/09/09(木) 09:06:00 ID:???
自分の家のPCや学校のPC(周りの人含む)ではこのサンプルでも
動かなかったので、気になってたのですが、956さんのほうのIEでは
動いたと言うことは、ブラウザなどのセキュリティ設定が違っている
ということなのでしょうか。
sub.close() と書いたのは例えばってことなので、上で実際に試したのは
下記のようなものです。今書きながら試していて気づいたのですが、
自分のIEだとsetTimeout("sub[s].close()",5000)のように、
配列で指定しても動きませんでした。setTimeout("sub.close()",5000)で
動きました。
url=new Array(3);
url[0]="
http://www.kantei.go.jp/ ";
url[1]="
http://www.shugiin.go.jp/ ";
url[2]="
http://www.shugiintv.go.jp/ ";
//sub=new Array(3);
function hiraku(s){
//sub[s] = window.open(url[s]);
sub = window.open(url[s]);
setTimeout("sub.close()",5000);
}
function toziru(t){
sub[t].close();
}
setTimeout(sub.close,5000) setTimeout(function(){sub.close()},5000) こんなんじゃだめ? というかそのソースはどこからでてきた それを先に書かないと混乱するとおもうぞw
962 :
960 :2010/09/09(木) 10:44:29 ID:???
学校から書き込みしています。レスありがとうございます。 問題のソースは955の2行目にあります。それが問題集のサンプルなのですが firefoxやez-html(エディタのプレビュー機能)では動いています。 でも、IEやsleipnirでは、955のサンプルが「開く」は動作するのですが、 「閉じる」が動作しません。なので、960のような変更などをいろいろ試みて いるのですが、955のサンプルの本来の動きを再現できていません。 960の変更では、見た目の通り、function hiraku(s)の部分しか動きません。 function toziru(t)の部分を自分のIEで機能できるようにならないものか と思って書き込みさせて頂きました。混乱させてしまい申し訳ありません。 >961様 上記のとおり、hiraku(s)内のsetTimeout("sub.close()",5000)は機能できて います。サンプルの通り、配列にしたときにIEでうまく動作していないのと、 toziru(t)にうまく開いたwindow情報が伝わっていないのかなぁと感じたので 書かせて頂きました。動いていない確認をしたのは、学校のIE(win7)と 自分のIE、sleipnir(XP)です。
963 :
960 :2010/09/09(木) 10:50:46 ID:???
960で自分で追加した部分は sub = window.open(url[s]); setTimeout("sub.close()",5000); windows.close()の動作確認のために削除した部分は下の2か所のみです。 //sub=new Array(3); //sub[s] = window.open(url[s]);
964 :
960 :2010/09/09(木) 11:30:50 ID:???
連続投稿すみません。今学校で、ソース元自体をクリックするとちゃんと IEでも同じwindow内にタグとして表示でき、closeできることを確認でき ました。試しにそのソース自体を自分のデスクトップにファイルとして 保存してから、それをクリックすると、タグではなく別windowで開き、 closeできず、下記のようなエラーを吐きました。自分のgeoのHP (indexと同じ階層)に試しにデスクトップのファイルをアップすると きちんと別タグを表示(リンク先のページはなぜか表示できません)して、 closeも機能できることを確認しました。何か納得できない感じですが、 少しほっとしたような気分です。朝からお目汚しすみませんでした。 Web ページ エラーの詳細 ユーザー エージェント: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E) タイムスタンプ: Thu, 9 Sep 2010 02:28:29 UTC メッセージ: 'sub[...]' は Null またはオブジェクトではありません。 ライン: 26 文字: 3 コード: 0 URI: file:///C:/Users/Owner/Desktop/test_html/tojiru.html
セキュリティ上の問題からローカルファイルに保存したものは
鯖から直接開いたものより制限がきついところがある。そのことを
教えない学校って何なんだろね。あんたも肝心なことを
>>964 まで書かなかったという点でダメダメだけどね。
新スレは975超えたら。テンプレの変更はなしで。
967 :
960 :2010/09/09(木) 12:33:48 ID:???
>965様 すみませんでした。ローカルでいろいろ作成したものをそのままクリックして 試してたのですが、これまでのものはうまくいってたのに、この問題だけ いきなり動作がおかしかったので、投稿させていただきました。 個人的にはHP持っているのですが、学校ではまだサーバーにアップロードを したこともなく、ローカルのみで検証作業をしていました。firefoxでは 表示できなかったことがあったのですが、今回はie系だけで表示ができ なかったので、混乱してしまってました。ひたすらローカルでの検証だった ので964の検証まで思いつかず、ついさっきまでできていませんでした。 申し訳ございませんでした。学校の先生に聞いても基金訓練で勉強してるせいか 教科書のことを説明するだけで、的確に質問の答えを言ってくれないので、 結局こういった掲示板が便りです。この事象が起きた時も、他では動いている と言われ、ソースを1行もみてくれませんでした。泣きそうです…。 助かりました。
この本、安いのは良いがレガシーな記述が多い script typeじゃなくてscript languageなサンプルが載ってる本はもう時代遅れだ webデザイン系のコースならともかく、本気で勉強したいなら違う本買って先先やっていけ 「涼しい場所提供してくれるところ」程度に思って自主的に勉強してかないと、うっすーい3ヶ月?になっちまうぞ
サイ本かcrockford本のどっちかに、JavaScriptの文字は Unicodeが2バイトだった時代に策定されたって書いてあったんだけど これが本当だとすると、 メイリオを使って変数名を書くと仕様違反になる可能性がある? ES5あたりでは変わってそうだけど
メイリオって言われてもフォント・・・フォントとかJS全く関係ないし
メイリオがどういう文字セットに対応してるか知らない人は答えなくて良いです
その発想はなかった 目から鱗の質問だ
「メイリオを使った環境で、何がBMPで何が拡張文字かを意識せずに」 コードを書いたら、ってことか
変数は1バイト文字だけにしてくれお願いだからw
まったくだw
javascriptである画像をドラッグしたら ページの背景が変わるとかいう処理はできますか? ドラッグ自体が苦手そうなジャバスクリプトなんですが・・・
できます。 苦手なら頑張りましょう。
>>976 mousedownイベントを捕まえて、その後はmouseupイベントが来るまで
マウスの動きに追従してposition:absoluteのブロック要素を動かすだけで
ドラッグしてるように見える。
楽をしたければjQuery UIとかYUIとかのライブラリ使うといいよ。
ドラッグ&ドロップのコードを書いたら、背景を変えるのなんて簡単。 で、ドラッグ&ドロップに関しては、 onmousedownでドラッグのフラグを立てて、 onmousemoveで対象エレメントのtopとleftを指定する感じ。
どっちでもいいんじゃね。 俺がここにたどり着いたのは、板からじゃなくて検索掛けてだったかな。 ヒットしたらどこの板でも質問はするだろう。おそらく。
HTML もプログラミングの一種に考えられるんだから、 HTML 関連のスレも移動しますかね。
そうですね勝手にどうぞ
>HTML もプログラミングの一種に考えられるんだから 考え込んでしまった マークアップ言語でも、コーディング作業はプログラミング、と呼ぶのだろうか
天動説を信じようが何をしようが、日本国では思想の自由が認められています。
知ってる
むしろ HTML をプログラミング言語と捉えられないやつの程度が知れる罠。
むしろ 日本語 をプログラミング言語と捉えられないやつの程度が知れる罠。
制御構造がないもの プログラミング言語と言われてもどうなんだろうとは思うな
コンピュータに命令してんだからプログラミング言語だろ
それなら、タイピングもプログラミングだわ
>>990 天動説を信じようが何をしようが、日本国では思想の自由が認められています。
>>992 コンピュータに命令してんのはブラウザだろ
音声文字入力もコンピュータに命令してるからプログラミングです。
マウスもコンピュータに命令してるからプログラミングです
性行為こそ究極のプログラミングです。
全てプログラムです
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。