+ JavaScript の質問用スレッド vol.65 +at HP
+ JavaScript の質問用スレッド vol.65 + - 暇つぶし2ch961:Name_Not_Found
08/07/23 14:28:32
質問です。
function F(arg){
var obj=document.getElementById("test")
//---
}
のように関数内でオブジェクト宣言をした場合、この関数を呼び出
すたびに新しくオブジェクトが作られるのでしょうか。もしそうだ
とすると頻繁に関数を使ったばあには、メモリだらけになりませんか。
もっと効率的な書き方はあるのでしょうか。普段何気なく書いていた
のですが恐ろしくなりました。

962:Name_Not_Found
08/07/23 15:26:15
>>961
それは既にあるDOMオブジェクトの参照をobjという変数に代入してるから
新たにオブジェクトが作られてるわけではないよね。
それともvar objのことを言ってる?

963:Name_Not_Found
08/07/23 15:29:42
メモリだらけになったらうれしいとおもいます!

964:Name_Not_Found
08/07/23 16:12:46
質問です.

htmlソース
<body onLoad="set('disp(配列1,配列2)')">

jsファイル
function disp(配列1,配列2){
...
}

htmlからjavascriptの関数に配列を渡したいんですけど
「配列1」「配列2」の部分ってどのように書けばいいですか?

965:Name_Not_Found
08/07/23 16:31:14
hairetsu1 hairetsu2

966:Name_Not_Found
08/07/23 16:36:28
>>965
そのように書いても
javascriptで配列の中身を見たら「undefined」となってしまいます…

967:Name_Not_Found
08/07/23 16:38:09
undefinedになるソースうp

968:Name_Not_Found
08/07/23 16:54:00
javaでhtmlをはきだしています.

まず
sb.append("<SCRIPT Language=\"JavaScript\" SRC=\"popup.js\"> </SCRIPT>");
でjsファイルを読んで

次にデータベースの情報をscheduledate[]とschedule[]に順に入れていって
sb.append("<body onLoad=\"set(disp(\'" + scheduledate + "\',\'"+ schedule +"\'))\">");
でjavascriptの関数に渡しています.

jsファイル(popup.js)内は
function disp(scheduledate,schedule){
newWin = window.open("", "child", "width=450,height=400,scrollbars=yes");
newWin.document.open();
newWin.document.write("<HTML><HEAD><TITLE>title</TITLE></HEAD>");
newWin.document.write("<BODY>");
newWin.document.write(scheduledate[0]);
newWin.document.write(schedule[0]);
newWin.document.write("</BODY></HTML>");
newWin.document.close();
}
こんなかんじで
実行するとscheduledate[0]とschedule[0]がundefinedと表示されます.



969:Name_Not_Found
08/07/23 17:06:12
javaでとか関係ねーだろ
最終的に吐き出したhtml書けこのスットコドッコイ

970:Name_Not_Found
08/07/23 17:13:52
>>968
setっていう関数は何をやってくれるの?
javaからhtmlに変換されるときに何かに変換されるってこと?
>>964の状態だとjavascriptの中にset関数がいないとおかしいのだけど。

971:Name_Not_Found
08/07/23 17:18:45
最終的に吐き出したhtmlは
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "URLリンク(www.w3.org)">

<html lang="ja">
<head>
<meta http-equiv="Content-Type" Content="text/html;charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>title</title>
</head>
<SCRIPT Language="JavaScript" SRC="popup.js"> </SCRIPT>
<body onLoad="set(disp('[Ljava.lang.String;@1fd5e2','[Ljava.lang.String;@12f9ee'))">
</body>
</html>



<HTML><HEAD><TITLE>title</TITLE></HEAD><BODY>undefinedundefined</BODY></HTML>

です.

972:Name_Not_Found
08/07/23 17:23:15
Java != JavaScript

973:Name_Not_Found
08/07/23 17:26:03
>>970
setはsetTimeoutの0秒バージョンだと思って使ってます.


974:Name_Not_Found
08/07/23 17:35:31
>>972
javaで配列を連結して文字列にする
↓わたす
javascriptで文字列を分解して配列にする

みたいな方法をとるしかないですかね・・・

975:Name_Not_Found
08/07/23 17:42:17
<body onLoad="disp([要素1, 要素2, 要素3], [要素a, 要素b, 要素c])">
みたいなコードをJavaで生成すればいいんでねーの

976:Name_Not_Found
08/07/23 17:57:53
<body onLoad="set(disp('[Ljava.lang.String;@1fd5e2','[Ljava.lang.String;@12f9ee'))">
これで上手くいく方がおかしいだろ…

977:Name_Not_Found
08/07/23 18:26:50
無名関数を使うと、
var a = b.replace(/パターン/, function(p0, p1){ return 処理結果; });
↑こういうことができると思うんですが、

dcument.write(function(){
var list = new Array('a', 'b', 'c', 'd', 'e');
var text = '';
while (list.length > 0) {
var r = Math.floor(Math.random() * list.length);
text += list[r];
list.splice(r, 1);
}
return text;
});
↑みたいなことは出来ないんでしょうか?
要は、一度しか使わない関数を定義せず(?)に出力できるかってことなんですが。

978:Name_Not_Found
08/07/23 19:06:02
document.write(function(){
var list = new Array('a', 'b', 'c', 'd', 'e');
var text = '';
while (list.length > 0) {
var r = Math.floor(Math.random() * list.length);
text += list[r];
list.splice(r, 1);
}
return text;
}());

979:Name_Not_Found
08/07/23 19:48:54
くだらない質問ですいませんが、
MACのサファリで作動のチェックはする物ですか?

クレームきちゃって・・・・Orz

980:Name_Not_Found
08/07/23 20:00:07
Safari1ならつっぱねろ
Safari2なら努力はしてみろ
Safari3で動かないのはお前が悪い可能性大

981:Name_Not_Found
08/07/23 20:31:38
便乗で聞いていい?
Mac 版 Safari と Win 版 Safari って結構違うもの?

982:Name_Not_Found
08/07/23 21:05:32
MACのIEじゃないんだから大して変わらないはず

983:Name_Not_Found
08/07/23 21:25:24
>>979
クレームを出した奴がマカーなら
少数民族は被害妄想で差別されていると感じるとギャーギャー騒ぎ出すので
気にするな

お前さんの雇用主や上司、取引相手からクレームがついたのなら
粛々と修正しろ

984:977
08/07/23 22:32:48
>>978
一瞬何が違うのかわからなかったですが、わかりました!
ありがとうございます!

985:Name_Not_Found
08/07/24 08:11:48
<div id="field">
  <div>テキスト1</div>
  <div>テキスト2</div>
  <div>テキスト3</div>
  <div>テキスト4</div>
  <div>テキスト5</div>
</div>

field内のdivタグ内のテキストがクリックされた場合に、
そのテキストのCSSを変更したいのですが、divタグ内にonclickをイベントを書く以外に方法はありますか?
js内で
onmouse = function()
でイベントを設定したいのですが、設定の仕方に困ってます

986:Name_Not_Found
08/07/24 08:27:06
>>985
this

987:Name_Not_Found
08/07/24 08:27:14
>>985
URLリンク(developer.mozilla.org)

988:Name_Not_Found
08/07/24 09:21:40
アホ外人君を召喚するから待ってて

989:Name_Not_Found
08/07/24 09:50:48
お話中すいません。
o.toSource()がIEだとだめみたいなんですが
何か打開策ありますか?

990:979
08/07/24 09:55:18
>>980 >>983

ありがとうございます。
相手はマカなので、それなりの対応する事にします。

助かりました。

991:Name_Not_Found
08/07/24 12:18:31
次スレ
スレリンク(hp板)l50

992:Name_Not_Found
08/07/24 12:26:51
埋め

993:Name_Not_Found
08/07/24 12:37:50


994:Name_Not_Found
08/07/24 12:44:50
埋め

995:Name_Not_Found
08/07/24 12:55:58
次スレ
スレリンク(hp板)l50

996:Name_Not_Found
08/07/24 13:08:08
ume

997:Name_Not_Found
08/07/24 13:09:07
ume

998:Name_Not_Found
08/07/24 13:31:32
埋め

999:Name_Not_Found
08/07/24 13:34:39
999

1000:Name_Not_Found
08/07/24 13:35:12
1000

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch