2012-11-29 28 views
0

我想用Joomla ChronoForms做一個「雙」下拉菜單,但我在頁面上有一個Javascript錯誤從第一個下拉列表中,這裏是我的代碼:TypeError:無法調用方法'each'null - 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錯誤是:類型錯誤:無法調用「每個」空的

你能幫我解決嗎? 謝謝

下面是與此相關的linklink2論壇的主題,也許它可以幫助別人找到問題,我試着盡我所能.. :(請人

+1

是什麼這個$(​​'chapter')',猜測它是MooTools,所以這種選擇器是id選擇器http://mootools.net/docs/core/Element/Element#Window:dollar的簡稱,比如果我是這個'$'('#recipe optgroup')。each(function(el){el.remov e()});'必須有兩個美元的語法http://mootools.net/docs/core/Element/Element#Window:dollars – dmi3y

+0

哇,這真的解決了這個問題,我已經把雙美元的「 $('#recipe optgroup')。每個「它工作!非常感謝你 – Vzlotea

+0

是的,沒有與MooTools工作了很長時間) – dmi3y

回答

2

還好,如果是的Joomla最有可能是MooTools的,不知道是什麼版本的,雖然,試圖改變選擇

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

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

1
$('chapter') 

如果它不是一個元素,它應該是

$('#chapter') ID OR $('.chapter') Class

$('recipe')應該是$('#recipe')

此外,如果你覺得這條線是jQuery的

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

它應該是

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

我從來沒有在JavaScript

應該是要麼attachEvent聽說.addEvent或香草中的eventListener javascript

+0

原來它是MooTools – dmi3y

1

試試這個:$('#recipe').find('optgroup').each 您確定在每個方法調用已經在dom中創建的組合框的時候?嘗試使用setTimeout函數

setTimeout(function(){ 
    $('#recipe').find('optgroup').each..... 
}, 1000); 
+0

嗨,感謝您的回覆,現在錯誤說:TypeError:無法調用方法'發現'null :( – Vzlotea

+0

我改變了我的答案可以改變實驗的延遲時間。 –

相關問題