尝试访问 <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) {
使用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
}
我在所有内容页面的页眉中使用母版页,并且在其中一个内容页面中,我试图获取 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) {
使用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
}