0

在有人通过表单提交他们的全名和电子邮件地址后,我正在尝试发送 xAPI 声明。除了发送声明之外,我还想显示一个 video.html 页面,以便他们可以观看视频。我知道 GitHub 上有一个这样的例子,但我正在尝试自己做一个更简单的例子。有人可以看看我下面的尝试并告诉我为什么它不起作用。非常感谢。

<!DOCTYPE html>
<html>
    <head>
    <meta charset="utf-8">
        <script src="js/xapiwrapper.min.js"></script>
        <script type="text/javascript">



                var button = document.getElementById("theButton"),
                fullName =  button.form.fullNameID.value;
                emailAddress =  button.form.emailAddressID.value;

                button.onclick = function() {

                var stmt = new ADL.XAPIStatement(
                new ADL.XAPIStatement.Agent(ADL.XAPIWrapper.hash('mailto:emailAddress'), 'fullName'),
                new ADL.XAPIStatement.Verb('http://adlnet.gov/expapi/verbs/registered', 'registered'),
                new ADL.XAPIStatement.Activity('act:http://ISO9000Video.html', 'Preparing for the ISO 9000 Audit',
                    'Preparation steps for the upcoming ISO 9000 audit.')
            );
            stmt.generateId();
            stmt.addOtherContextActivity( new ADL.XAPIStatement.Activity('compId:internet_proficiency') );
            stmt.generateRegistration();

            ADL.XAPIWrapper.changeConfig({
                'endpoint': 'https://lrs.adlnet.gov/xapi/',
                'user': 'xapi-tools',
                'password': 'xapi-tools',
            });

            ADL.XAPIWrapper.sendStatement(stmt);

            var o = document.getElementById('output');
            o.innerText = JSON.stringify(stmt, null, '    ');
        }

        </script>
    </head>
    <body>


<form id="frm1" action="">
    Full Name: <input type="text" id="fullNameID" name="fullName"><br>
    Email: <input type="text" id="emailAddressID" name="emailAddress"><br><br>
    <input type="button" id="theButton" value="Submit">
</form>

        <p>
        <code><pre id='output'></pre></code>
        </p>
    </body>
    </html>
4

1 回答 1

2

页面加载时正在执行页面顶部的脚本,但尚未将带有按钮的表单元素设置为按钮的属性,因为尚未解析 DOM 的那部分。如果您在浏览器中检查控制台,您会看到如下错误:

未捕获的类型错误:无法读取 null 的属性“表单”

<script>当前位于的块移动<head>到底部<body>,它应该可以工作。

于 2016-04-21T17:18:30.197 回答