1

私が行っていたのは、XMLファイルを読み取り、jQueryを介してデータをHTMLファイルに取り込むことです。

多くのチュートリアルで見つけたように、私はjQueryの.get()メソッドを使用しています。1つの問題を除いて、それは私に役立ちます!

これはXMLファイルです。

<?xml version="1.0" encoding="utf-8" ?>
<books>
  <book title="CSS Mastery" imageurl="images/css.jpg">
    <description>
      info goes here.
    </description>
  </book>

  <book title="Professional ASP.NET" imageurl="images/asp.jpg">
    <description>
      info goes here.
    </description>
  </book>

  <book title="Learning jQuery" imageurl="images/lj.jpg">
    <description>
      info goes here.
    </description>
  </book>
</books>

これがjQueryコードを含む私のHTMLファイルです:

<!doctype html>
<html>
  <head>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" >
      $("document").ready(function() {
        $.get("one.xml", function(d) {
          var title = [];
          var description = [];

          $(d).find("book").each(function() {
            title.push($(this).attr("title"));
            description.push($(this).find("description").text());
          });

          console.log(title);
        });
      });
    </script>
  </head>
  <body>
    // BODY contents...
  </body>
</html>

私がやりたいのは、他の関数内でこれらの配列を使用できるように、タイトルと説明を返すことです。jQueryコードによると、私のtitle配列は現在印刷されていますが、メソッドの外で配列consoleを印刷しようとすると、と表示されます。title.get()"title is undefined"

関数の最後で配列を返そうとしましたが、うまくいきませんでした。質問を明確にしたかどうかわからないので、以下のエラーを表示するコードを貼り付けます。

<!doctype html>
<html>
  <head>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
      $("document").ready(function() {
        $.get("one.xml", function(d){
          var title = [];
          var description = [];

          $(d).find("book").each(function() {
            title.push($(this).attr("title"));
            description.push($(this).find("description").text());
          });
        });

        console.log(title);
      });
    </script>
  </head>
  <body>
    // BODY contents...
  </body>
</html> 

このコードブロックでは、メソッドの外部で配列を作成していること"title isn't definedに気づきました。title.get()

4

2 に答える 2

1

以下のように使用してください:

title = [];
description = [];

変数名の前に使用しない場合varはグローバルスコープになるため、他の関数内でもこれら2つの変数を使用できます。

于 2012-04-16T17:56:44.607 に答える
0

スコープが可変であるため、こちらをご覧ください。javascriptの他の関数でタイトルと説明を使用する場合は、次のように、タイトルと説明(のコールバック関数内)を保存した直後にそのjavascript関数を直接呼び出すことができ$.getます。

$("document").ready(function(){
$.get("one.xml", function(d){
    var title       = [];
    var description = [];
    $(d).find("book").each(function(){
        title.push($(this).attr("title"));
        description.push($(this).find("description").text());
    });
    call_to_your_function_with_title_and_desc(title, description)
});
于 2012-04-16T16:38:32.507 に答える