0

INNERHTMLの使用にバグがあるように思われるため、SELECT OPTIONタグが空白になります(私が行った調査に基づいて)-後で変数を作成する方法を理解する必要があります次の返されるJSONデータに基づく私のOPTIONタグを含む使用であり、喜びはありません。

[
{"saying":"Select a saying..."},
{"saying":"I rock the camera!"},
{"saying":"Ask me about Holland"},
{"saying":"I'm with the Photographer!"},
{"saying":"I'd love to frame you!"}
]

以下は私の2つのコア関数(関数loadlistとfunction())です。後者は、selectタグの入力を有効にし、最初の関数にパラメーターを渡して、mysqlDBからデータを取得する関数です。{注:selectタグは、今日私が持っているコードで正常に機能します。htmlファイルの本文内でのみ、INNERHTML内でのみ、document.getElementByIdを使用して失敗します。

IE、FireFox、Safari、Chromeでこれを試しました。なぜ私はこれをしているのですか?私はTシャツの多くの選択可能なオプションを含むモーダルポップアップを作成するために取り組んでおり、それらのオプションガイドに基づいて、ことわざなどを選択することができます。INNERHTMLが機能した場合は、予想どおりにDIVが変更されます。 SELECTタグ以外。

作業コード:.....。

<div id='target' class="target">
<p>in the div</p>
<p><select id="say1" name="say1" onchange="custom(this.id)" size="1"></select></p>
</div> 

.....。

動作しないコード:........。

    {
    div = document.getElementById('target'); 
    str = '<select id="say1" name="say1" onchange="custom(this.id)" size="1"></select>';
    div.innerHTML = str; 
    }

.............。

/*function to load a list*/
function loadlist(selobj,url,nameattr)
{


 $(selobj).empty();
    $.getJSON(url,{ data: 123, t: (new Date()).getTime() },function(data) {
        $.each(data, function(i,obj)
            {
                $(selobj).append(
                    $('<option></option>')
                        .val(obj[nameattr])
                        .html(obj[nameattr]));
            });
    });
}

    $(function()
    { 
       //By default, jQuery will load from cache if the request is same
       loadlist($('select#colour').get(0), 'getcolours.php?getlist=colour','colour');
       loadlist($('select#saying').get(0), 'getsaying.php?getlist=adultsaying','saying');
   loadlist($('select#say1').get(0), 'getsaying.php?getlist=adultsaying','saying');
    });

コミュニティから役立つのは、ロードリスト関数のどこでJSONデータを後で使用できる変数に返す機能をコード化するか、理想的には開始と終了のOPTIONタグを追加することです。

私はこれのいくつかに少し慣れていません、そして、事前のおかげで、私がこのプロジェクトを完了しなければならない時間であるように、概念は私を逃れています。

4

1 に答える 1

0

onchange 関数を機能させるには、少なくとも 1 つのオプションが必要です

 div = document.getElementById('target'); 
    str = '<select id="say1" name="say1" onchange="custom(this.id)" size="1"><option value="1">1</option><option value="2">2</option></select>';
    div.innerHTML = str; 
于 2012-04-30T07:32:45.560 に答える