0

Joomla ChronoForms で「ダブル」ドロップダウンを作成しようとしていますが、最初のドロップダウンから何かを選択すると、ページに Javascript エラーが発生します。コードは次のとおりです。

<select id="recipe" name="recipe">
    <optgroup label="test" id="ch_1">
        <option value="blabla">something here</option>
        <option value="blabla">something here</option>
    </optgroup>

    <optgroup label="test244" id="ch_2">
        <option value="blabla">something here</option>
        <option value="blabla">something here</option>
    </optgroup>

    <optgroup label="testtt" id="ch_3">
        <option value="blabla">something here</option>
        <option value="blabla">something here</option>
    </optgroup>

    <optgroup label="testt23521" id="ch_4">
        <option value="blabla">something here</option>
        <option value="blabla">something here</option>
    </optgroup>

    <optgroup label="teeesstt" id="ch_5">
        <option value="blabla">something here</option>
        <option value="blabla">something here</option>
    </optgroup>
</select>

JSコードは次のとおりです。

window.addEvent('load', function() {
    var num_groups = 5;
    var groups = new Array;

    for ( var i = 1; i <= num_groups; i++ ) {
        groups[i] = $('ch_'+i);
        $('ch_'+i).remove();
    }
    $('chapter').value = '';

    $('chapter').addEvent('change', function() {
        var group_no = $('chapter').value;
        if ( !group_no ) {
            return;
        }

        $('#recipe optgroup').each(function(el) {el.remove()});
        $('recipe').appendChild(groups[group_no]);
    });
});

そして、私が受け取った JS エラーは次のとおりです: TypeError: Cannot call method 'each' of null

これで私を助けてくれませんか?ありがとうございました

これは、このリンクまたはリンク2に関連するフォーラムのスレッドです。誰かが問題を見つけるのに役立つかもしれません。私はできる限りのことを試しました.. :(

4

3 に答える 3

2

わかりました。joomla の場合は MooTools である可能性が最も高いですが、どのバージョンかはわかりませんが、セレクターを変更してみてください

$('#recipe optgroup').each(function(el) {el.remove()});

$$('#recipe optgroup').each(関数(el) {el.remove()});

于 2012-11-29T22:14:28.560 に答える
1
$('chapter')

要素でない場合は、要素であるはずです

$('#chapter') IDまた $('.chapter') Class

$('recipe') 察するに$('#recipe')

また、この行がjQueryだと思う場合

$('chapter').addEvent('change', function() {

それはあるはずです

 $('#chapter').on('change', function() {

.addEventJavaScriptで聞いたことがない

attachEvent またはeventListenerバニラjavascriptのいずれかであると思われます

于 2012-11-29T21:23:35.077 に答える
1

これを試してみてください:$('#recipe').find('optgroup').each 各メソッドが呼び出された時点で、DOM で作成されたコンボボックスが既に作成されていることを確認してください。setTimeout 関数を使用してみてください

setTimeout(function(){
    $('#recipe').find('optgroup').each.....
}, 1000);
于 2012-11-29T21:26:10.363 に答える