のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,432,597人
昨日:no data人
今日:
最近の注目
人気の最安値情報

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

JavaScript覧 / PC版 /
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - 計算機プログラミング + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

655 = :

document.write でページ内容が既に書き換わっちゃっていて、
そのページに更新かけてるから。

location.href とかで google のトップページに飛ばした後で
いくらリロードしても google のトップページがリロードされるだけ。
みたいな。

656 = :

>>655

なるほど、ありがとうございます。
document.writeは使い道が難しそうですな。。。

657 = :

"Sun Nov 29 01:20:14 +0000 2009"
のような形式の日付文字列を、Dateオブジェクトに変換したいのですが、
どうすればできますか?
よろしくお願いします。

658 = :

>>655
document.openのほうじゃないか?

>>657
new Date("Sun Nov 29 01:20:14 +0000 2009")

659 = :

>>658
その方法だと、Firefoxは大丈夫なんですが、IEがエラーになります。。。

661 = :

>>660
http://semooh.jp/jquery/

662 = :

[環境]
IE 8
FF 3.6


document.body.innerHTML = document.body.innerHTML
.replace(/aaaa/gi,'bbbb')
.replace(/cccc/gi,'dddd')
.replace(/eeee/gi,'ffff')
 …(省略) …
.replace(/hoge/gi,'geho');


上記のようにreplaceをどんどん繋げていってreplaceを約1300個繋げたいです。
IEでは問題なかったのですが、
Firefoxでは1000個目前後で、
「too much recursion」というエラーが出て置換できませんでした。
このFirefoxでのエラーを回避できる方法はありますでしょうか?

ただし、以下のように
document.body.innerHTML = document.body.innerHTML.replace(/aaaa/gi,'bbbb') … ({replaceを500個くらいで分ける}) … replace(/hoge/gi,'geho');
document.body.innerHTML = document.body.innerHTML.replace(/aaaa/gi,'bbbb') … ({replaceを500個くらいで分ける}) … replace(/hoge/gi,'geho');
2回に分ける方法でいけるといえばいけたのですが、パフォーマンスが落ちるのであまりやりたくないのです。

よろしくお願いします。

664 = :

>>662
var pattern = [['a', 'b'], ['c', 'd']];
var html = document.body.innerHTML;
for (var i = 0, l = pattern.length; i < l; i++) {
html = result.replace(pattern[i][0], pattern[i][1]);
}
document.body.innerHTML = html;

>2回に分ける方法
innerHTMLへの代入はパースが起きる最後だけしろ変数使え

665 = :

>>662
var a = [[/aaaa/gi, 'bbbb'], [/cccc/gi, 'dddd'], ...];
var s = document.body.innerHTML;
for(var p in a) s = s.replace(p[0], p[1]);
document.body.innterHTML = s;

667 = :

>>661
ありがとうございます。

668 = :

>>662
innerHTML弄るときにDOM構造を崩さないように気をつけろよ

669 = :

>>659
日付書式変えてみるといけると思うよ。↓をいじっていろいろ試してみて。

<html>
<head><title>string to date</title></head>
<body>
<table><tbody id="result"><tr><th>str</th><th>new Date(str).toString()</th></tr></tbody></table>
<script>
var dateStr = [
"Sun Nov 29 2009 01:20:14 GMT+0000",
"Nov 29 2009 01:20:14 +0000", // 曜日とかGMTとかはいらない
"2009 01:20:14 29 +0000 Nov", // 区別がつけば順番ばらばらでも意外といける
"2009/11/29 01:20:14 +00:00", // IE8はタイムゾーンに : が入るとだめ
"2009-11-29 01:20:14 +0000",
"09/11/29 01:20:14 +0000", // IE8不可 他では1929年9月11日に
"2009/11/29", // IE8不可
"01:20:14" // Opera可
], resultSRC = "", resultTable = document.getElementById("result");
function newTR(str){
var tr = document.createElement("tr"); resultTable.appendChild(tr);
var td = document.createElement("td"); tr.appendChild(td); td.innerHTML = str;
td = document.createElement("td"); tr.appendChild(td); td.innerHTML = new Date(str).toString();
}
for (var i = 0; i < dateStr.length; i++) newTR(dateStr[i]);
</script>
</body>
</html>

672 = :

こんなの合ったのか。>第二引数がfunction
関数使わないとできないってのにお目にかかったことが無いから使ったことなかったな。

675 = :

iPhoneのときはjavascriptでcssを切り替えるようにしようと思ったのですが、表示が変わりません。
FirefoxのDOM Inspectorで見るとrelの値は変わっているのですが、この変更では切り替えられないのでしょうか?

<head>
<link href="/src/common.css" rel="stylesheet" title="common" />
<link href="/src/iPhone.css" rel="alternate stylesheet" title="iPhone" />
<script type="text/javascript">
var link = document.getElementsByTagName('link');
for(var i=0;link[i];i++)
{
if(link[i].getAttribute('title'))
{
switch(link[i].getAttribute('rel'))
{
case ('stylesheet'):
link[i].setAttribute('rel','alternate stylesheet');
break;
case ('alternate stylesheet'):
link[i].setAttribute('rel','stylesheet');
break;
}
}
}
</script>
</head>

679 = :

後からlink要素をいじってもCSSの再読み込みはされなかったような。

680 = :

不確かな情報は書き込まなくていいよ

681 = :

>>679
x = document.createElement("link");
x.href = "data:text/css;utf-8,body{background-color:#000;}";
x.rel ="stylesheet";
document.getElementsByTagName("head")[0].appendChild(x);

やってみな

682 = :

諦めてhref属性変えることにします
ありがとう

683 = :

と思ったら場合によっては何も表示されなくなってしまう…
やっぱり諦めて@mediaで上書きすることにします

684 = :

bookmarkletを作ろうと思い調べたところJavaScriptを使っている事がわかったのですがURLにあらかじめ
決まった単語を追加するにはどうすればいいですか?
lang_ja ←をURLの最後に追加するbookmarkletが作りたいんです。

685 = :

ページをロードせずにアドレスバーの値を書き換えることは無理。
「lang_ja」を URL の最後に追加した文字列が欲しいだけなら prompt で出せば?
IE の場合は、大抵、設定によって prompt はブロックされるけど。

686 = :

これはリンク要素に付けたいんじゃないかな・・?どちらにしろ意味がよく分からないが

687 = :

>>685
レスありがとう。
文字列が欲しいだけじゃなくて今表示しているページのURLにlang_jaを追加した後自動でリロードしてくれるものが作りたいです。
MacのSafariを使ってます。
JavaScriptに関してまったく知識が無いので1,2行で済むなら書いていただけると嬉しいのですが。
javascript:location.href=○○○lr=lang_ja; って感じで手探りで作ってみたんですけど無理っす。

688 = :

javascript:location.href=(location.href+'lang_ja');
javascriptの知識無いとブックマークレットは作るの大変だよ。
win IEでは動いた。

document.とかってどこまで省略していのかわからん。

689 = :

>>688
location オブジェクトは window のプロパティ。
window はローカル変数と名前が衝突していなければ常に省略できる。
document は基本的に省略できない。

>>650 の件は多分、スコープチェーンの先頭に document が追加されているだけ。
with が使われているのと同じ。タグにハンドラ書くことないから、知らなかったけど。

692 = :

>>688-690
わざわざ書いて頂いてありがとうございます。
文字列を追加できました。
やっぱり何も知らないと無理ですね。
初心者向けのサイト観て来ます。
親切にありがとうございました。

693 = :

>>691
吹いたw

694 = :

HTMLタグに書いたイベントハンドラの実行コンテキストの件は新鮮だったな。
こんな振舞いをするとは。俺も知らなかった。

697 = :

>>696
それって意味あるの?

698 = :

>>697
ぜんぜんちがう


←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - 計算機プログラミング + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について