JavascriptもXMLも始めたばかりの者です。
分からないことがあり、皆様にご教授頂ければと思い投稿しました。
XMLで生成したファイルから各要素を取り出してHTMLに置き換えるスクリプトをJavascriptで作ろうと思います。
~XMLファイル~宣言省略
<links>
<link>
<url>http://www.○○○.com/</url>
<title>○○○~</title>
<ban>http://www.○○○.com/XX.gif</ban>
</link>
<link>
<url>http://www.×××.com/</url>
<title>×××~</title>
<ban></ban>//←画像データ空欄
</link>
</links>
~Javascript~前後省略
var a = obj.responseXML;
var xmlDoc = a.documentElement;
var links = xmlDoc.getElementById("links").length;
for(var i=0; i<links; i++) {
var link = xmlDoc.getElementsByTagName("link")[i].firstChild.nodeValue;
var title = xmlDoc.getElementsByTagName("title")[i].firstChild.nodeValue;
var image = xmlDoc.getElementsByTagName("image")[i].firstChild.nodeValue;
var html = Html(link,title,image);
}
function Html(link,title,image) {
~中略~
if(image != ""){
html += '<a href="' + link + '"><img src="' + image + '" alt="' + title + '" /></a>';
}
return html;
}
この後、html内の「<div id="html"></div>」に表示させるのですが、function Html(~)では、画像の有無は絶対条件ではない為if文で条件分けしています。
ですが、この「if(image != "")」で「has no properties」エラ-になります。
ちなみに空欄だった画像データ欄に文字列を入れるときちんと動作します。
XMLタグに文字列が入らない場合、配列には""(空)が返されないのでしょうか?
何か良い方法はありましたら、よろしくご教授くださいませ。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
エラーですが、
if(image != "")
ではなくて
var image = xmlDoc.getElementsByTagName("image")[i].firstChild.nodeValue;
のところで起こってませんか?
そうであればfirstChildの中身がnullなのでnodeValueにアクセスできないということです。nullチェックして、nullならimage=""で結構かと。
仰るとおり、firstChildが「no has properties」だと言うエラーでした。
そこでfirstChildがnullかそうでないかを判定させる式を入れてみたら問題が解決いたしました。
ありがとうございました。
No.2
- 回答日時:
ご質問のXMLには、<image>という名前のタグは、見当たらないのですが・・・?
判定自体は、たぶん間違っていないと思います。
参考URL:http://gentzen.math.hc.keio.ac.jp/JavaScript/day …
ご回答いただきありがとうございます。
ご指摘のとおり、<image>ではなく<ban>が空値のときの条件分けです。失礼いたしました。
No.1
- 回答日時:
試してないので、曖昧な記憶と勘ですが
if(image != ""){
ではなく
if(image != null && image != ""){
もしくは
if(!image){
でいいんじゃないですか?
firstChild.nodeValueは空文字("")ではなくnullを返してると思いますよ。
曖昧な記憶と勘ですが。
ご回答ありがとうございました。御礼が遅れてすみません。
教えていただいた応報で試してみたのですが、やはり同じエラーが帰ってきました。
もうちょっといろいろ試してみようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
javascriptでのURLの引数
-
jqGridについて
-
javascriptでiframeのURL変更は?
-
GASでundefinedエラーが出ます
-
javascriptエラーの解決策について
-
今年を取得する方法はありますか?
-
ASP.NET MVCでObjectをjsに渡す
-
JavaScriptで決まった「時刻」...
-
JavaScript でのリアルタイム時...
-
firefox だけ専用のCSSを表示さ...
-
$("body").height();と$("body"...
-
関数でy=g(x)のgとは何の略です...
-
C#テキストボックスの文字を配...
-
要素名がスペースを含む場合のj...
-
任意の座標をクリックさせるには
-
VBAのIE操作でframe構造のサイ...
-
TexでΣの添え字の位置直し
-
jQueryの"return false"の役割...
-
DIV内のDIV要素を移動する。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
javaScriptのコードの修正をお...
-
ジェネレーターの作り方
-
翌月を取得するGASが分かりません
-
ASP.NETのコントロールの値をJa...
-
GASでundefinedエラーが出ます
-
C#で、ContextMenuStripに動的...
-
GASでGoogleフォームの自動返信...
-
VSCODE[Python]の設定について
-
ASP.NET MVCでObjectをjsに渡す
-
C# 演算 奇数と偶数 表現の仕方
-
javascriptでiframeのURL変更は?
-
イベントが初めの一回しか起き...
-
なぜmatchメソッドがエラーにな...
-
jqGridについて
-
gas スプレッドシートがアクテ...
-
JavaScriptで文字列の特定文字...
-
googleスプレッドシートのApps ...
-
var exports = exports || {}; ...
おすすめ情報