0

在用于 SharePoint 2013 的 CSOM 中使用 JS,我很难从元素中检索文本。这是来自自定义列表的自定义显示表单。有问题的列类型是多行文本框,但由于使用了表单覆盖脚本,因此在显示表单中呈现不同。

Chrome 中的检查元素显示:

<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();

当我显示跨度的 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,并将其粘贴到显示页面的相应文件中。在编辑中文本返回正常,但在显示中返回的文本是一个空字符串。

4

2 回答 2

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())
})

演示:小提琴

于 2013-11-13T00:36:08.337 回答
0

应该

$("#itemData").children().first().text();

或者

$("#itemData").find("div").text();

或者

$("#itemData div").text();
于 2013-11-12T23:55:47.357 回答