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(function(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 回答