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

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
54 : Name_Not - 2011/03/31(木) 19:02:00.28 ID:??? (+22,+29,-27)
お前等、それ、わざとだろw
58 : Name_Not - 2011/03/31(木) 19:51:02.76 ID:??? (+27,-30,-248)
質問です。
sample1 は、想定通りに画像が表示されるのですが、
sample2 は、[object HTMLImageElement]と表示されます。
sample2 で、画像を表示するにはどうすればいいのでしょうか?

オブジェクトとかそのあたりの挙動がよくわかっていないのですが、
この問題について自力で解決した場合に参考になるページなどあれば教えて欲しいです。
ちなみにプログラミング歴1年未満の素人です。

// sample1
$('#view').append(getImg());

// sample2
$('#view').append('<p>' + getImg() + '</p>');

function getImg() {
  var img = document.createElement('img');
  img.src = '';
  img.className = 'test';
  return img;
}
60 : Name_Not - 2011/03/31(木) 20:00:55.53 ID:??? (+32,-30,-271)
>>58
コードを実際に動かしていないけど。

まず、どこがいけないか。
getImg()の返り値はDOMオブジェクト。 document.createElementで作っているから。
そのDOMオブジェクトを+演算子で文字列と結合しようとしているから、DOMオブジェクトが文字列に変換されてから結合されている。

つまり、sample2の式
 '<p>' + getImg() + '</p>'
の時点で、この式の値が
 '<p>[object HTMLImageElement]</p>'
という文字列に評価されている。

問題の解決方法はいろいろあるし、それぞれにメリット・デメリットがあるが、jQueryを使うのなら素直に
 $('#view').append('<p><img class="test"src="" /></p>');
とでもやるのが最も簡単だろうな。
62 : Name_Not - 2011/03/31(木) 20:07:26.91 ID:??? (+24,+21,-2)
jsでもクラスを書きたいということです
63 : Name_Not - 2011/03/31(木) 20:15:53.28 ID:??? (+31,+29,-46)
>>62
javascriptはプロトタイプベースのオブジェクト指向言語だから、クラスというものはない。
http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97%E3%83%99%E3%83%BC%E3%82%B9
http://www.atmarkit.co.jp/fdotnet/ajaxjs/ajaxjs04/ajaxjs04_01.html
68 : Name_Not - 2011/03/31(木) 21:18:15.80 ID:??? (+17,+29,-6)
>>55
興味があるんだけど、コード片を示せる?
70 : Name_Not - 2011/03/31(木) 21:22:58.19 ID:??? (+22,+24,-27)
chromeで使いたいのでちょっと頑張って作りたいと思います
72 : Name_Not - 2011/03/31(木) 21:29:43.20 ID:??? (-29,-30,-87)
>>67
var Test = function(){};
(function() {
    function c() {
        return "c";
    };
    Test.prototype.a = function() {
        return "a";
    };
    Test.prototype.b = function() {
        return c();
    };
})();
// debug
var test = new Test();
print(test.a()); // a
print(test.b()); // c
//print(test.c()); // error
75 : Name_Not - 2011/03/31(木) 21:39:51.85 ID:??? (+23,+29,-10)
>>72みたいなコード書くぐらいならJavaScriptでは不可能と諦めたほうがいいと思う
とっても気持ち悪いコードだ・・・
76 : Name_Not - 2011/03/31(木) 21:56:02.81 ID:??? (+27,+29,-5)
全然普通じゃんか。
関数を入れ子にする場合は、リテラルにする方が好みだけど。
78 : Name_Not - 2011/03/31(木) 22:07:40.08 ID:??? (+27,+29,-49)
フレームワークの裏で動いていたり趣味でやってる分にはいいけど
実装でこんなコードはちょっとやだなぁ
79 : Name_Not - 2011/03/31(木) 22:09:52.37 ID:??? (+27,+29,-25)
そこは初心者関係無いような気がするが・・
個人の指向性の問題だろ。
要するに、JavaScript向いてないってことだな。
80 : Name_Not - 2011/03/31(木) 22:19:20.18 ID:??? (-14,-12,-16)
PHPユーザのレベルの低さが酷いなw
81 : Name_Not - 2011/03/31(木) 22:23:10.02 ID:??? (+0,+1,-8)
PHPとか関係あるのか?
JavaScriptが異端であるだけ
83 : Name_Not - 2011/03/31(木) 22:34:22.66 ID:??? (+27,+29,-24)
bshのソースが、CなのにALGOL風マクロで書かれているみたいな話だよね。
それを学習して身に付けちゃっていいかというと、ちと疑問。
84 : Name_Not - 2011/03/31(木) 22:36:04.61 ID:??? (-20,-13,-17)
PHPユーザの言い訳は続くw
85 : Name_Not - 2011/03/31(木) 22:41:41.96 ID:??? (-17,-30,-154)
前スレの832で見かけたけど、
文字列を\で連結することで何行マークアップがあろうが、
document.writeを1回呼ぶだけで書き込めちゃうんだな。
知らなかったわ。

>document.open();
>document.write('<table border="0" width="100%">\
><tr>\
><td width="95"><a href="" target="hoge"><img src="" alt="" height="115" width="90"></a>\
></td>\
></tr>\
>');
>document.close();

行毎にdocument.write書くよりよっぽどスマートだし、パフォーマンスもいいはず。
tableタグ閉じ忘れてるけどね。

これJavaScripterには常識だったりするん?
87 : Name_Not - 2011/03/31(木) 22:47:27.82 ID:??? (+31,+29,-17)
そんなことする前に変数に入れとくわ。
88 : Name_Not - 2011/03/31(木) 22:47:44.39 ID:??? (+18,+23,-15)
>>85
言語によっては。
Cだと常套テク。
89 : Name_Not - 2011/03/31(木) 22:55:21.38 ID:??? (+25,+29,-4)
>>85
悪しき慣習だと思うな。普通は使わない。
90 : Name_Not - 2011/03/31(木) 22:56:20.37 ID:??? (+32,+28,-59)
>>85
サンクス
↓おそらくこれのことだよな
http://es5.github.com/#x7.8.4

>>87
その変数に入れるってやつはどう書くの?
行毎にクォーテーションで囲むのは結構手間だから、
連結する方が生産性高いと俺は思うんだがな。
91 : Name_Not - 2011/03/31(木) 23:01:33.54 ID:??? (-28,-26,-24)
\は事故の元じゃね。知らない人もいるだろうし。
>手間
置換で追加すればいい。\入れるのとほとんど変わらないよ。
俺も+で繋げるなら前もって変数に+=で繋げるかな。
92 : Name_Not - 2011/03/31(木) 23:03:26.96 ID:??? (-26,-29,-46)
改行を任意の文字列に一括置換すればいい。
+ の連結が気持ち悪いならjoinするとか。
(パフォーマンス気にする人はdocument.writeを使わないと思うけど)
93 : Name_Not - 2011/03/31(木) 23:04:54.54 ID:??? (+27,+29,-2)
インデントしてると汚くなるんで使わない
94 : Name_Not - 2011/03/31(木) 23:16:35.93 ID:??? (-20,-30,-67)
obj.hoge = "なにか";
でhogeに値がセットされる瞬間にフックしたいんだけど。

unsafeWindow.__defineSetter__("hoge",function(x){
//なんか処理
 this.hoge = x; //ここまずい
});
ってやると無限再起でスタックオーバーフローになるます
どうやれば回避できますか?

95 : Name_Not - 2011/03/31(木) 23:16:37.12 ID:??? (+26,+29,-50)
結構不評なんだなー
使ってみようかと思ってたが、これが世間の声だと思ってやめとくわ。

>>92
document.writeは、オンロード後のDOM処理とはタイミングが違うから
document.writeならではの使いどころがあると思う。
一概に言えないと思うよ。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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