以下脚本从AJAX调用中获取HTML - HTML在浏览器中自行显示 - 我使用InnerHtml将其放在DIV中,我收到javascript错误:
未捕获的TypeError:无法调用未定义的方法'setData'
我在模板中通过硬编码放置了相同的HTML,它运行正常 - 当我在动态插入DIV时它不起作用!任何想法?
<script>
$(document).ready(function()
{ $('ul.art-vmenu li').click(function(e)
{
//Ajax call to get content:
$.ajax(
{
type: "GET",
url: "/create",
data: "",
success: function(msg)
{
//alert(msg);
document.getElementById("art-post-inner art-article").innerHtml = msg;
//$("#art-post-inner art-article").html(msg); // jQuery call
window.clipboardData.setData("Text", msg); // for debug in IE
}
});
});
});
</script>
答案 0 :(得分:3)
首先:它是innerHTML
,而不是innerHtml
第二:您使用的浏览器是什么? clipboardData仅在IE中可用
答案 1 :(得分:2)
您尝试在未定义的值上引用innerHTML
,因为document.getElementById
正在返回undefined
,因为此代码要求的ID无效:
document.getElementById("art-post-inner art-article").innerHtml = msg;
// Spaces not allowed ------^ and ^----- Should be innerHTML
(pointing out innerHTML
document.getElementById
事件的+ 1到roberkules,我读过它。)
ID的规则取决于您使用的是HTML4及以下,HTML5(更宽松)还是CSS(限制性),但他们都有一个共同点就是您不能拥有空间ID:
我的猜测是不是一个ID,你打算将它作为某种选择器,但是由于你没有显示任何标记,我无法指出如何你可以解决它,除了说如果它是一个选择器,你不想要$
,你想要使用jQuery的{{1}},就像你在代码中的其他地方一样。
答案 2 :(得分:1)
您正在获取“未捕获的TypeError:无法调用未定义的方法'setData'错误,因为window.clipboardData未定义。 innerHtml也错了。
你应该总是使用jquery html方法将html设置为任何dom元素,因为jquery负责执行任何带有你正在设置的标记的脚本标记。