xpage:未定义document1

时间:2018-11-29 21:36:08

标签: xpages

在我拥有的xpage的源代码中,在打开视图标记之后右...以下内容:

<xp:this.data>
    <xp:dominoDocument
        formName="myform"
        var="document1"
    </xp:this.data>

我需要能够提取各种功能的任何字段的值。作为测试,在“服务器JavaScript”库中,我具有此功能:

function testThis(){
    debugger;
    var mystring = document1.getElementById("#{id:employeeTitle}");
    console.log(mystring);

(...正在预期要在控制台中记录的元素中的所有内容。)

您可以看到我已将XPage绑定到变量名称为'document1'的DominoDocument上。

该功能通过按钮调用,并在调试器中停止...因此我可以逐步完成它。

在Firefox调试器中,它是“异常暂停”,内容为:

ReferenceError: document1 is not defined

我敢肯定,这只是简单地盯着我,但我只是不明白。有什么想法吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

我认为您正在混淆ServerSide JS和客户端。 Firefox调试器仅了解客户端调试(这是在浏览器中执行的代码)。对于调试服务器端JS,我建议您在打开的NTF上找到调试工具栏插件。https://www.openntf.org/main.nsf/project.xsp?r=project/XPage%20Debug%20Toolbar

您还可以使用_dump写入服务器日志,请参见https://xcellerant.net/2014/10/15/using_dump_to_write_to_server_console/

最后,请注意您的代码中如果使用SSJS,则将使用document1.getItemValueString(“ whatever”)来访问文档值。该文档对象的类型为NotesXSPDocument。参见https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/reference/r_wpdr_xsp_xspdocument_r.html

答案 1 :(得分:0)

您可以通过CSJS代码在客户端获得呈现字段employeeTitle的DOM元素,

var element = document.getElementById("#{id:employeeTitle}");

,内容值为element.innerHTML

使用 document (进入浏览器中加载的网页的入口)代替 document1 (通常在服务器端称为XPage的数据源)。

您的函数testThis()必须是XPage,自定义控件或SSJS库的一部分。这样可以确保在渲染过程中,#{id:employeeTitle}被替换为服务器上的真实DOM ID 。如果要将testThis()放入CSJS库,则必须将id作为参数传递给类似

的函数
function testThis(id){
    var element = document.getElementById(id);
    ...

并像

一样在XPage中调用该函数
testThis("#{id:employeeTitle}");