【发布时间】:2014-04-01 14:34:33
【问题描述】:
我正在处理一个项目的一部分,该项目通过 on-change 事件更改地址。地址信息作为json数组传递。
很遗憾,我编写的代码不能在 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。我对跨浏览器兼容性不是很熟练,因此将不胜感激。 提前致谢。
【问题讨论】:
-
我认为问题在于 IE7 选择元素没有 value 属性。该错误消息非常令人困惑....
"selfOfficeChangeText"不是属性! -
"selfOfficeChangeText" 是一个函数,我在 select onchange 属性中使用它。每个选项都有作为 id 的值,通过 php.ini 传递。 value="=$val['id']?>" 可能更难理解,因为我的代码不是那么整洁。但关键是,我错过了跨浏览器兼容性的一些细微差别。
-
我不是这个意思。我要说的是,IE7 选择元素节点可能没有 value 属性。这并不意味着没有选择一个值,它只是意味着 IE7 的 dom 引擎不会将该值放在选择元素的 value 属性中。我只是在猜测这一点,因为我无法重新创建它。
标签: javascript jquery html internet-explorer internet-explorer-7