0

jQuery を使用して select 要素に XML データを入力しましたが、それほど難しくはありませんでした。私は今、その select 要素内の特定の要素に割り当てられた情報を、独自の別の div 領域に表示する方法を見つけようとしています。これまでの私のコードの例は次のとおりです。

    $('.selectspeak').live('change', function() {

                $("#mainOutput").empty();

                $(g_playDOM).find("SPEECH").each(function(){

                    var speaker = $(".selectspeak").val();
                    var line = $(this).find("LINE").text();

                $("#mainOutput").append("<div class='speakerClass'>" + "Speaker: " + speaker + "<br />" + " <div class='speakerClassLine'>" + "<br />" + "Line: " + line + "</div>");

            });

});

上記のコードは、基本的に select タグに話者データを入力しますが、問題ありません。ただし、スピーカーを選択すると、スピーカーに割り当てられたデータではなく、通常のデータが表示されるだけです。スピーカーを選択する際に、割り当てられた情報のみが表示されるようにするにはどうすればよいですか?

私はこのナットを数時間クラックしようとしてきましたが、ほとんど進歩していないので、正しい方向へのナッジは素晴らしいでしょう! :-)

ありがとうございました!

更新: ライブ プロジェクトへのリンクを追加しました。左側でプレイを選択すると、右側に選択要素が表示されます。ありがとう。

http://scmweb.infj.ulst.ac.uk/~B00351504/COM601/assignment_2/siab.html

2 回目の更新:

要求された XML のいくつかの行:

<PLAY>
<TITLE>The Merchant of Venice</TITLE>
<FM>
<P>
ASCII text placed in the public domain by Moby Lexical Tools, 1992.
</P>
<P>SGML markup by Jon Bosak, 1992-1994.</P>
<P>XML version by Jon Bosak, 1996-1999.</P>
<P>
The XML markup in this version is Copyright © 1999 Jon Bosak. This work may freely be distributed on condition that it not be modified or altered in any way.
</P>
</FM>
<PERSONAE>
<TITLE>Dramatis Personae</TITLE>
<PERSONA>The DUKE OF VENICE.</PERSONA>
<PGROUP>
<PERSONA>The PRINCE OF MOROCCO</PERSONA>
<PERSONA>The PRINCE OF ARRAGON</PERSONA>
<GRPDESCR>suitors to Portia.</GRPDESCR>
</PGROUP>
<PERSONA>ANTONIO, a merchant of Venice.</PERSONA>
<PERSONA>BASSANIO, his friend, suitor likewise to Portia.</PERSONA>
<PGROUP>
<PERSONA>SALANIO</PERSONA>
<PERSONA>SALARINO</PERSONA>
<PERSONA>GRATIANO</PERSONA>
<PERSONA>SALERIO</PERSONA>
<GRPDESCR>friends to Antonio and Bassanio.</GRPDESCR>
</PGROUP>
<PERSONA>LORENZO, in love with Jessica.</PERSONA>
<PERSONA>SHYLOCK, a rich Jew.</PERSONA>
<PERSONA>TUBAL, a Jew, his friend.</PERSONA>
<PERSONA>LAUNCELOT GOBBO, the clown, servant to SHYLOCK.</PERSONA>
<PERSONA>OLD GOBBO, father to Launcelot.</PERSONA>
<PERSONA>LEONARDO, servant to BASSANIO.</PERSONA>
<PGROUP>
<PERSONA>BALTHASAR</PERSONA>
<PERSONA>STEPHANO</PERSONA>
<GRPDESCR>servants to PORTIA.</GRPDESCR>
</PGROUP>
<PERSONA>PORTIA, a rich heiress.</PERSONA>
<PERSONA>NERISSA, her waiting-maid.</PERSONA>
<PERSONA>JESSICA, daughter to SHYLOCK.</PERSONA>
<PERSONA>
Magnificoes of Venice, Officers of the Court of Justice, Gaoler, Servants to Portia, and other Attendants.
</PERSONA>
</PERSONAE>
<SCNDESCR>
SCENE Partly at Venice, and partly at Belmont, the seat of PORTIA, on the Continent.
</SCNDESCR>
<PLAYSUBT>THE MERCHANT OF VENICE</PLAYSUBT>
<ACT>
<TITLE>ACT I</TITLE>
<SCENE>
<TITLE>SCENE I. Venice. A street.</TITLE>
<STAGEDIR>Enter ANTONIO, SALARINO, and SALANIO</STAGEDIR>
<SPEECH>
<SPEAKER>ANTONIO</SPEAKER>
<LINE>In sooth, I know not why I am so sad:</LINE>
<LINE>It wearies me; you say it wearies you;</LINE>
<LINE>But how I caught it, found it, or came by it,</LINE>
<LINE>What stuff 'tis made of, whereof it is born,</LINE>
<LINE>I am to learn;</LINE>
<LINE>And such a want-wit sadness makes of me,</LINE>
<LINE>That I have much ado to know myself.</LINE>
</SPEECH>
4

1 に答える 1

0

選択した「SPEECH」項目をフィルタリングする必要があると思います。

$('.selectspeak').live('change', function() {

                $("#mainOutput").empty();

                $(g_playDOM).find("SPEECH").each(function(){

                    var speaker = $(".selectspeak").val();
                    //I'm checking if this 'SPEECH' is by "SPEAKER"
                    if($(this).find("SPEAKER").text()==speaker){


                    var line = $(this).find("LINE").text();
                    $("#mainOutput").append("<div class='speakerClass'>" + "Speaker: " + speaker + "<br />" + " <div class='speakerClassLine'>" + "<br />" + "Line: " + line + "</div>");
                    }



            });

});​

ここでは、選択した「SPEECH」項目が「Speaker」のものかどうかを確認しました。

于 2012-04-17T15:54:11.050 に答える