1

我正在開發一個項目的一部分,它改變了地址變化的事件。地址信息以json數組的形式傳遞。SCRIPT5007。 IE7無法讀取功能

不幸的是我的書面代碼在IE7上不起作用。我已經設法用大多數可用的瀏覽器達到我的目標,但我無法弄清楚如何解決IE7上的這個問題。這裏是我的代碼片段:

<script type="text/javascript"> 
var remote_self_json_branches_text = <?=$remote_self_json_branches?>; 

function selfOfficeChangeText(element) 
{ 
    console.log(remote_self_json_branches_text); 
    $(".self_del").css('display', 'none'); 
    $("#self" + $(element).val()).css('display', 'block'); 
} 

function change_delivery_office_selection_text (branch_id) { 
    var cityMap = ''; 
    if(branch_id == 1){ 
     $('.textBlockContainer #self .headerImage').removeClass('remote-self').addClass('self'); 
    } 

    if(branch_id == 2){ 
     $('.textBlockContainer #self .headerImage').addClass('remote-self').removeClass('self'); 
    } 

    if(branch_id == 3){ 
     $('.textBlockContainer #self .headerImage').addClass('remote-self').removeClass('self'); 
    } 

    $(".cityBranch").css('display', 'none'); 
    $("#city" + branch_id).css('display', 'block'); 

} 

$(document).ready(function(){ 
    var mapUrl = '<?= $deliveryOffices[1]['mapCoordinates']?>'; 
    dom('delivery_office_title_text').innerHTML = remote_self_json_branches_text[1].v_title; 
    dom('delivery_office_address_text').innerHTML = '<a class="mapPopup" href="' + mapUrl + '">' + remote_self_json_branches_text[1].v_address + '</a>'; 
    dom('delivery_office_work_time_text').innerHTML = remote_self_json_branches_text[1].v_work_time; 

    var mapUrl = '<?= $deliveryOffices[2]['mapCoordinates']?>'; 
    dom('delivery_office_title1_text').innerHTML = remote_self_json_branches_text[2].v_title; 
    dom('delivery_office_address1_text').innerHTML = '<a class="mapPopup" href="' + mapUrl + '">' + remote_self_json_branches_text[2].v_address + '</a>'; 
    dom('delivery_office_work_time1_text').innerHTML = remote_self_json_branches_text[2].v_work_time; 

    var mapUrl = '<?= $deliveryOffices[3]['mapCoordinates']?>'; 
    dom('delivery_office_title2_text').innerHTML = remote_self_json_branches_text[3].v_title; 
    dom('delivery_office_address2_text').innerHTML = '<a class="mapPopup" href="' + mapUrl + '">' + remote_self_json_branches_text[3].v_address + '</a>'; 
    dom('delivery_office_work_time2_text').innerHTML = remote_self_json_branches_text[3].v_work_time; 
}); 
</script> 

我在這裏使用的功能:

<div class="win-xp selCont"> 
    <select name="delivery_office" id="delivery_office_text" class="post_lt_branch" onchange="selfOfficeChangeText(this); change_delivery_office_selection_text(this.value);"> 
     <option value="0">-- <?=t('Pasirinkite')?> --</option> 
     <?php foreach ($deliveryOffices as $key => $val) { ?> 
      <option address="<?=$val['city']?>, <?=$val['address']?>" value="<?=$val['id']?>" title="<?=$val['city']?>, <?=$val['address']?>" <?php echo ($val['id'] == 1) ? 'selected' : ''; ?>><?=$val['name']?></option> 
     <?php } ?> 
    </select> 
</div> 

我得到這個錯誤:

SCRIPT5007: The value of the property "selfOfficeChangeText" is null or undefined, not a Function object 

我的猜測是,瀏覽器不有足夠的時間來加載JavaScript。我不熟悉跨瀏覽器兼容性,所以任何幫助,將不勝感激。 在此先感謝。

+0

我認爲問題在於IE7 select元素沒有value屬性。該錯誤消息非常混亂....''selfOfficeChangeText「'不是一個屬性! –

+0

「selfOfficeChangeText」是一個函數,用於選擇onchange屬性。每個選項的值都是用php傳遞的id。 value =「<?= $ val ['id']?>」可能很難理解,因爲我的代碼不夠整齊。但重點是,我錯過了跨瀏覽器兼容性的一些細微差別。 –

+0

這不是我的意思。我在說的也許是IE7選擇元素節點沒有值屬性。這並不意味着沒有選擇一個值,它只是意味着IE7的dom引擎不會將值放在select元素的value屬性中。我只是猜測這一點,但因爲我不能重新創建它。 –

回答

0

我的猜測是,IE 7認爲該值爲空或未定義,因爲您使用jQuery的不兼容版本。嘗試加載它的較低版本,例如1.4和/或更改選擇器語法。

也許像$("#self" + $(element).val()).css('display', 'block');這樣的jQuery選擇器在IE 7的最新版本中有問題,並且返回null或undefined是正常的。

+0

我很抱歉,但我忘了提及,我試圖在函數內部調試,但我沒有得到任何結果。所以這意味着瀏覽器無法加載這些功能。另外,js代碼與html + php代碼在同一個.phtml文件中。 –

0

我會添加到您的document.ready功能(並刪除您選擇的onchange):

$("#delivery_office_text").change(function() { 
    selfOfficeChangeText(this); 
    change_delivery_office_selection_text($(this).val()); 
}); 

它結合在文件準備變更事件。 我也使它得到當前值使用$(this).val()萬一是給你的問題。