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 のその部分が解析されていないため、ボタンのあるフォーム要素はまだボタンのプロパティとして設定されていません。ブラウザでコンソールを確認すると、次のようなエラーが表示されます。

キャッチされていない TypeError: null のプロパティ 'form' を読み取れません

<script>現在 にあるブロックを<head>の一番下に移動する<body>と、機能するはずです。

于 2016-04-21T17:18:30.197 に答える