在CSOM for SharePoint 2013中使用JS,我很难从元素中检索文本。这是来自自定义列表的自定义显示形式。有问题的列类型是一个多行文本框,但由于使用了表单覆盖脚本,因此在显示形式中呈现的方式不同。
Chrome中的Inspect元素显示:
<span class="formOverride" id="itemData" data-displayName="RequisitionItems">
<div dir>1||X-HEDC.000.000||GC-M||Critical Item #42||1||10||$10.00||</div>
</span>
每次尝试检索div元素中的文本都会产生一个空字符串。
document.getElementById("itemData").innerText;
$("#itemData").text();
$("span#itemData.formOverride").text();
$("span#itemData.formOverride").children().text();
当我显示span的DOM属性时,innerText甚至被正确列出,但仍然返回一个空字符串。
我错过了什么......?
提前致谢。
编辑:更多信息... 覆盖脚本:
$("span.formOverride").each(function()
{
//get the display name from the custom layout
displayName = $(this).attr("data-displayName");
elem = $(this);
//find the corresponding field from the default form and move it
//into the custom layout
$("table.ms-formtable td").each(function(){
if (this.innerHTML.indexOf('FieldName="'+displayName+'"') != -1){
$(this).contents().appendTo(elem);
}
});
});
因此,最初发布的跨度具有附加的默认显示形式的内容。我以前从来没有遇到任何麻烦访问formOverride信息,所以这只是奇怪的。
进一步更新:
似乎我无法访问页面上任何元素的文本。此外,这似乎是SharePoint显示表单特有的问题。我从编辑页面中完整复制了脚本/ html并将其粘贴到显示页面的相应文件中。在“编辑”中,文本返回正常,但在“显示”中,返回的文本为空字符串。
答案 0 :(得分:0)
应该是
$("#itemData").children().first().text();
或者
$("#itemData").find("div").text();
或者
$("#itemData div").text();
答案 1 :(得分:0)
您的标记有引号错误
<span class="formOverride" id="itemData" data-displayName="RequisitionItems">
<div dir>1||X-HEDC.000.000||GC-M||Critical Item #42||1||10||$10.00||</div>
</span>
然后
jQuery(function () {
console.log($("#itemData").text())
})
演示:Fiddle