【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

回覧ありがとうございます。

画像を表示させるタグをfunctionに登録して
その関数を使うと画像が表示されるようにしたいのですが
Javascriptの知識が乏しいのでこのように質問させていただく形になりました

今行ってる手順はこちらです

(1)外部jsファイルにfunctionを書く(※間違えてると思います)

function imgout(url,imgurl,imgname){
var imgtag;
if(url==0){
imgtag=document.write(""<img scr="+imgurl+" alt="+imgname+" />"");
}
else{
imgtag=document.write(""<a herf="+url"><img scr="+imgurl+" alt="+imgname+" /></a>"");
}
return(imgtag);
}

(2)head内で外部jsを参照する

(3)body内で表示させたい場所に関数を書く

imgout(URL(いらない場合は0),画像URL,画像名);

(4)表示されない(←いまここ)

body内での処理が間違えていると思うのですがどうやって関数を使うのかもよくわからない状態です

・body内での関数の使い方
・解決策
・こうやってうやったほうが綺麗だよ…等(書かなくても結構です)

以上二~三項目を質問とさせていただきます
なお、お手数ですがJavascript初心者と考慮した回答をよろしくお願い致します。

A 回答 (1件)

構文エラー (SyntaxError) ですね。



""<img scr="
+imgurl
+" alt="
+imgname
+" />""

" で囲まれた文字列内では"は直接使えません。
"を使いたい場合は、' で囲むか、バックスラッシュ(\)でエスケープします。
そもそも、この場合は文字列内の " が不要です。

"<img scr="
+imgurl
+" alt="
+imgname
+" />"

それと、属性名が間違っています。
scr→src
herf→href

変数 imgtag に、document.write の返り値を代入していますが、document.writeの返り値はないので、この処理は無意味です。
同様に、return(imgtag); も無意味です。

うまく動かないときは、まずデバッガを使ってください。
エラーの情報や現在のHTML構造が確認できます。
メジャーなブラウザなら、デバッガは標準で搭載されています。

参考URL:http://mindia.jp/book/syatin/keyword/ブラウザ毎のデバッガ・インスペクタまとめ

この回答への補足

事故解決致しました
ご教授ありがとうございました。

補足日時:2012/09/09 00:17
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
hrefなんかよく間違えるから気をつけたいものです。

構文エラーを治したのですがそれでも動きません…

外部Js

function imgout(url,imgurl,imgname){

var imgtag;

if(url==0){
imgtag="<img src="+imgurl+" alt="+imgname+" />";
}
else{
imgtag="<a href="+url+"><img src="+imgurl+" alt="+imgname+" /></a>";
}
return(imgtag);
}

HTML

<head>
<script type="text/javascript" src="script.js"></script>

<script type="text/javascript">
<!--
var img=imgout(0,img/header.jpg,ヘッダー);
// -->
</script>
</head>
<body>
<script type="text/javascript">
<!--
document.write("<h1>"+img+"</h1>");
// -->
</script>
</body>

といった書き方をしているのですが、どうやら変数に値が入ってないらしく
【 undefined 】と表示されます…

それと関数を使いたいときは今のように<script type="text/javascript">~と打ち
その中で今のように処理を書かなければならないのでしょうか?

ご都合がいいときにでも回答をお待ちしてます。

お礼日時:2012/09/08 22:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!