首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用javascript访问XForms/XSLTForms模型实例

使用javascript访问XForms/XSLTForms模型实例
EN

Stack Overflow用户
提问于 2014-11-03 15:19:21
回答 2查看 261关注 0票数 0

我正在尝试访问我的模型的实例,以便通过Js添加一些数据,这是令人难以置信的。我知道我可以通过添加一个带有insert操作的触发器来做到这一点,但是我正在使用一些画布,所以我真的需要通过Js来做同样的事情。

我添加了一个onLoad函数,该函数是在文档体已经加载时触发的。我尝试使用xform的“实例”操作来获取实例,但它不被识别为函数。

代码语言:javascript
复制
var instanceElement = instance('application');
console.log( instanceElement);

我还尝试使用以下方法获取实例:

代码语言:javascript
复制
document.getElementById(id);

但它返回了null。那么,如何才能访问模型呢?提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-03 15:41:56

代码语言:javascript
复制
var model = window.document.getElementById("model-id");
var ins = model.getInstanceDocument("instance-id");
console.log(ins.documentElement.textContent);
票数 0
EN

Stack Overflow用户

发布于 2014-11-04 14:38:59

直接调用XSLTForms代码可能会带来管理问题,因为有时对象名称会发生变化。

一个好主意是创建包装器函数来封装常见的XSLTForms任务。

下面是一些您可以使用的内容:

代码语言:javascript
复制
function xf_getInstance(modelId, instanceId)
{
    var model = window.document.getElementById(modelId);
    var doc = model.getInstanceDocument(instanceId);
    return doc;
}

function xf_getNode(context, path)
{
    return XsltForms_browser.selectSingleNode(path, context);
}

function xf_changeNode(node, value)
{
    XsltForms_globals.openAction("XsltForms_change");
    XsltForms_browser.setValue(node, value || "");
    document.getElementById(XsltForms_browser.getMeta(node.ownerDocument.documentElement, "model")).xfElement.addChange(node);
    XsltForms_browser.debugConsole.write("Setvalue " + node.nodeName + " = " + value);
    XsltForms_globals.closeAction("XsltForms_change");
}

function xf_fireEvent(targetId, eventName)
{
    XsltForms_globals.openAction("XsltForms_dispatch");
    XsltForms_xmlevents.dispatch(document.getElementById(targetId), eventName);
    XsltForms_globals.closeAction("XsltForms_dispatch"); 
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26717233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档