我正在尝试将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>
接下来我在哪里看?任何帮助表示赞赏。 谢谢
答案 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。在我的情况下,它确实是唯一的解决方案。 谢谢, 拉尔夫