Mootools setHtml无法在IE中运行

时间:2011-12-17 10:04:33

标签: javascript mootools

我正在尝试将HTML插入到简单的div中。 HTML没有进入div,但如果我在setHTML调用之前直接提醒它,那么它是完美的。代码在setHTML调用时失败。这是Mootools的电话:

$('vmcartmodule').setHTML(response)

响应变量是从另一个文件收集的HTML。 错误是来自此处的Mootools未知运行时错误:

setHTML: function(){
    this.innerHTML = $A(arguments).join('');
    return this;
}

我的HTML代码示例:

 <div id="opcoCartUpdateTable">
        <div id="row" class="product_row">
        <div class="product_name" >Color: Chocolate Brown<br/> Size: Medium </div>
        <div align="right" class="product_price" >$19.95</div>
        <div class="update_button" ><form method="post" onsubmit="return opcoHandleCartUpdate(this, 0);" style="display: inline;">

    <input type="hidden" name="option" value="com_virtuemart" />
    <input type="text" title="Update Quantity In Cart" class="inputbox" size="4" maxlength="4" name="quantity" value="1" />

    <input type="hidden" name="page" value="" />
    <input type="hidden" name="func" value="cartUpdate" />
    <input type="hidden" id="product_id" name="product_id" value="17" />
    <input type="hidden" id="prod_id" name="prod_id" value="17" />
    <!--input type="hidden" id="Itemid" name="Itemid" value="54" /-->
    <input type="hidden" id="Itemid" name="Itemid" value="53" />
    <input type="hidden" id="description" name="description" value="Color:Chocolate_Brown; Size:Medium" />
    <input type="image" name="update" title="Update Quantity In Cart" src="modules/mod_virtuemart_onepagecheckout/assets/images/update_quantity_cart.png" alt="Update" align="middle" onclick="return opcoHandleCartUpdate(this.parentNode, 0);" />
  </form></div>
        <div class="product_price2"  align="right" >$19.95</div>
      </div>
    </div>

接下来我在哪里看?任何帮助表示赞赏。 谢谢

2 个答案:

答案 0 :(得分:0)

您使用的是什么版本的Mootools?在最新版本中,不推荐使用$ A(),您应该使用Array.from()。

为元素设置HTML的正确方法是.set('html',yourHtml),一个Element方法。

答案 1 :(得分:0)

好的,这里发生了两件导致IE问题的事情。没有其他浏览器受到影响,相信我,我尝试了所有可以找到的信息。第一个尝试使用innerHTML,setHTML或set('html',myhtml)设置表单标记。它只适用于所有版本的IE。 IE9和IE10确实有较少的问题,但任何年龄较大的东西都不会在正常情况下这样做。在建议创建表单然后使用DOM命令动态填充表单之前,这种情况不允许我这样做。大多数页面都需要动态编写。   也就是说,无论尝试什么,Mootools都会发送致命错误,否则IE会发出致命错误。在我的尝试中,我看到了十几个不同的错误,因此进一步讨论错误所说的内容目前没有用处。   Mootools的旧版本没有帮助(我认为它是1.2但是它是1.1)因为大多数文献只讨论了最新的版本。   唯一有效的解决方案对我来说没有意义,但其他人已经使用过它并且IE喜欢它。此时,我愿意尝试任何事情。如果您遇到同样的问题,我希望您已找到此页面。你需要创建一个假元素然后替换这样的真实元素:

    oldDiv = document.getElementById('oldIdGoesHere');
    newDiv = document.createElement('div');
    newDiv.setAttribute("id", "oldIdGoesHere"); 
    // or like this newDiv.id = oldDiv.id;

            //This was my response back from Ajax but it can be 
            //just straight HTML instead of the response variable
    newDiv.innerHTML = response;
    newDiv.className = oldDiv.className;
    oldDiv.parentNode.replaceChild(newDiv, oldDiv); 

我知道......我知道......愚蠢的IE。在我的情况下,它确实是唯一的解决方案。 谢谢, 拉尔夫