尝试访问 <Script> 中 div 的 innerHTML,但结果未定义

Trying to access innerHTML of div in <Script> but it results in undefined

我在所有内容页面的页眉中使用母版页,并且在其中一个内容页面中,我试图获取 div 的 innerHTML 以输入控件(在同一页面中)所以我可以从后面的代码访问更新的 innerHTML。 所以在按钮上单击这就是我的脚本。

 var myDivObj = $('#<%=txt.ClientID %>'); // div
   if (myDivObj) {
   var myInputObj = $('#<%=hdnDivContents.ClientID %>'); //input
   myInputObj.val(myDivObj.innerHTML); //assigns div's innerHTML to the input control 
   }

//但是在break的时候,myDivObj.innerHTML提示是Undefined。

看起来 myDivObj 是一个 jQuery 对象 - 引用 ID 为 <%=txt.ClientID %> 的元素, 但是 .innerHTML 是一个 javascript 函数,如果你在 jQuery 对象上使用它将会失败。

试着写这个

myInputObj.val(myDivObj.get(0).innerHTML);

而且,if 检查 if(myDivObj) 将始终满足,因为 myDivObj 将是一个 jQuery 对象,或者是 id <%=txt.ClientID %> 的元素,或者是 null ,但对象将始终存在。 您应该将 if 检查写为 if(myDivObj.length).

innerHTML 适用于 "native" Javascript 个对象。当您使用 jQuery 选择器时,您应该使用 .html() 方法。

myInputObj.val(myDivObj.html());

此外,您没有提到它,但是要在使用 jQuery 选择器时检查一个元素(或多个元素)是否存在,您应该使用 .length 属性.否则您的条件将始终通过 true.

if (myDivObj.length) {

Demo

使用html()

var myDivObj = $('#<%=txt.ClientID %>'); // div
   if (myDivObj) {
   var myInputObj = $('#<%=hdnDivContents.ClientID %>'); //input
   myInputObj.val(myDivObj.html()); //assigns div's innerHTML to the input control 
   }

jQuery函数$returns一个jQuery对象而不是元素本身。要按 id 查找元素,它提供对 .innerHTML 属性 的直接访问,然后像这样跳过 jQuery:

var myDivObj = document.getElementById('<%=txt.ClientID %>');
if (myDivObj) {
    var myInputObj = document.getElementById('<%=hdnDivContents.ClientID %>');
    myInputObj.value = myDivObj.innerHTML; // assigns div's innerHTML to the input control 
}