javascript
  • html
  • 2012-10-07 79 views 0 likes 
    0

    工作我有人口下面的代碼選擇框dynamically.THis正常工作在所有瀏覽器,除了火狐3.6的選擇框動態添加選項不在firefox3.6

    var option25 = document.createElement("option"); 
    option25.text = '25 miles'; 
    option25.value = 25; 
    if(rad == '25') 
    { 
        option25.selected = 'selected'; 
    } 
    var combo = document.getElementById('ddlProximity_' + controlId); 
    combo.add(option25); //not working in FF3.6 
    

    任何建議

    +1

    我不相信你嘗試了每一個網頁瀏覽器。 Firefox 3.6出了什麼問題? –

    +0

    它在IE,FF 15,Chrome中工作正常..我知道我支持哪些瀏覽器... – Vani

    回答

    0

    假設組合是一個選擇菜單,請參閱此jsFiddle示例。

    if (typeof combo.add === 'function') { 
        combo.add(option25); 
    } else if (typeof combo.appendChild === 'function') { 
        combo.appendChild(option25); 
    } 
    

    +0

    這看起來像OP發佈的代碼一樣。 –

    +0

    @RoddyoftheFrozenPeas,不,它使用appendChild,它應該可以工作,但可能不會在IE中。 –

    +0

    如果select.add不可用,鏈接已更新爲備用以使用appendChild。 – krg

    0

    如果你想確保你的JS代碼跨瀏覽器的廣泛的作品,我會用一個JavaScript框架,如jQuery執行DOM操作。 JS框架已經解決了大部分跨瀏覽器問題,並將它們的處理抽象出來,這樣就不必擔心編寫代碼來解決特定瀏覽器中的問題。這裏是jQuery的網站:http://jquery.com/

    現在來完成你的例子說,在jQuery的,你會做到以下幾點:

    var option25 = $('<option>').val(25).text('25 miles'); 
    if (rad == '25') { 
        option25.attr('selected', 'selected'); 
    } 
    
    var combo = $('#ddlProximity_' + controlId); 
    combo.append(option25); // Will work in all browsers supported by jQuery 
    

    如果你真的想這樣做沒有任何JS框架,我想在這裏看看:http://www.w3schools.com/jsref/met_select_add.asp。 add方法應該可以工作,但是在8之前的IE版本中有一些注意事項,並且你的頁面必須有適當的DOCTYPE聲明。你也可以嘗試appendChild,但我會在幾個瀏覽器中測試它,看看它是否能完成你所需要的。

    +0

    http://bugs.jquery.com/ticket/1641 –

    +0

    看起來這張票是用於jQuery 1.2的。這仍然是jQuery 1.8中的一個問題嗎? – DanilF

    +0

    我不確定。它說他們不會修復它,所以我會認爲這意味着它不是固定的。 –

    1

    關於select元素的add方法在7以前的Gecko版本中使用兩個參數(MDN)。

    在IE中它只需要一個參數,或者兩個,如果它是IE 8標準模式下的IE 8,或者是MSDN

    如果我們把KRG的代碼和調用add它工作在Firefox 3.6.28,Firefox的15.0.1和IE 9前檢查元數:

    if (typeof combo.add === 'function') { 
        if (combo.add.arity === 1) { 
         combo.add(option25); 
        } else { 
         combo.add(option25, null); 
        } 
    } else if (typeof combo.appendChild === 'function') { 
        combo.appendChild(option25); 
    } 
    

    相關問題