无法从DOM中检索文本

时间:2013-11-12 23:39:56

标签: javascript jquery html sharepoint-2013

在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并将其粘贴到显示页面的相应文件中。在“编辑”中,文本返回正常,但在“显示”中,返回的文本为空字符串。

2 个答案:

答案 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