php – Internet Explorer中的JavaScript DOM错误
发布时间:2020-12-13 16:23:30 所属栏目:PHP教程 来源:网络整理
导读:我在这行代码上收到以下错误 select.up().appendChild(sw); 错误“SCRIPT438:对象不支持属性或方法’向上’” 这只发生在Internet Explorer中… Chrome,Safari和Firefox都运行良好的代码.我无法通过Google搜索“select.up()”找到任何内容.这段代码不是我自
我在这行代码上收到以下错误
select.up().appendChild(sw); 错误“SCRIPT438:对象不支持属性或方法’向上’” 这只发生在Internet Explorer中… Chrome,Safari和Firefox都运行良好的代码.我无法通过Google搜索“select.up()”找到任何内容.这段代码不是我自己的,我不是很擅长在Javascript中使用DOM. 这是代码的其余部分: <?php $swatches = $this->get_option_swatches(); ?> <script type="text/javascript"> document.observe('dom:loaded',function() { try { var swatches = <?php echo Mage::helper('core')->jsonEncode($swatches); ?>; function find_swatch(key,value) { for (var i in swatches) { if (swatches[i].key == key && swatches[i].value == value) return swatches[i]; } return null; } function has_swatch_key(key) { for (var i in swatches) { if (swatches[i].key == key) return true; } return false; } function create_swatches(label,select) { // create swatches div,and append below the <select> var sw = new Element('div',{'class': 'swatches-container'}); select.up().appendChild(sw); // store these element to use later for recreate swatches select.swatchLabel = label; select.swatchElement = sw; // hide select select.setStyle({position: 'absolute',top: '-9999px'}) $A(select.options).each(function(opt,i) { if (opt.getAttribute('value')) { var elm; var key = trim(opt.innerHTML); // remove price if (opt.getAttribute('price')) key = trim(key.replace(/+([^+]+)$/,'')); var item = find_swatch(label,key); if (item) elm = new Element('img',{ src: '<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA); ?>swatches/'+item.img,alt: opt.innerHTML,title: opt.innerHTML,'class': 'swatch-img'}); else { console.debug(label,key,swatches); elm = new Element('a',{'class': 'swatch-span'}); elm.update(opt.innerHTML); } elm.observe('click',function(event) { select.selectedIndex = i; fireEvent(select,'change'); var cur = sw.down('.current'); if (cur) cur.removeClassName('current'); elm.addClassName('current'); }); sw.appendChild(elm); } }); } function recreate_swatches_recursive(select) { // remove the old swatches if (select.swatchElement) { select.up().removeChild(select.swatchElement); select.swatchElement = null; } // create again if (!select.disabled) create_swatches(select.swatchLabel,select); // recursively recreate swatches for the next select if (select.nextSetting) recreate_swatches_recursive(select.nextSetting); } function fireEvent(element,event){ if (document.createEventObject){ // dispatch for IE var evt = document.createEventObject(); return element.fireEvent('on'+event,evt) } else{ // dispatch for firefox + others var evt = document.createEvent("HTMLEvents"); evt.initEvent(event,true,true ); // event type,bubbling,cancelable return !element.dispatchEvent(evt); } } function trim(str) { return str.replace(/^ss*/,'').replace(/ss*$/,''); } $$('#product-options-wrapper dt').each(function(dt) { // get custom option's label var label = ''; $A(dt.down('label').childNodes).each(function(node) { if (node.nodeType == 3) label += node.nodeValue; }); label = trim(label); var dd = dt.next(); var select = dd.down('select'); if (select && has_swatch_key(label)) { create_swatches(label,select); // if configurable products,recreate swatches of the next select when the current select change if (select.hasClassName('super-attribute-select')) { select.observe('change',function() { recreate_swatches_recursive(select.nextSetting); }); } } }); } catch(e) { alert("Color Swatches javascript error. Please report this error to support@ikova.com. Error:" + e.message); } }); </script> 欣赏任何人都可以给我的洞察力! 解决方法
我很确定up()是一个PrototypeJS方法,所以我很确定你需要它才能工作.
http://prototypejs.org/api/element/up (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |