0

嘿嘿,

JavaScript 函数调用存在一些问题。基本上我使用 php 创建一个表,然后在页面初始化 JavaScript 被调用以单击一个标记为正确答案的按钮。

现在这一切正常,但是当我返回主页并尝试再次做同样的事情时,由于"Uncaught TypeError: Cannot call method 'click' of null"而失败。发生这种情况是因为由于某种原因再次错误地调用了脚本,然后尝试单击不存在的内容,因此出现“空”错误。

如果我重新加载页面,它会再次正常工作,因为 JavaScript 函数在调用之前不会加载。

主要问题似乎是 JavaScript 仍在加载(可能是因为 jquerymobile 使用 ajax 调用来加载页面,因此数据永远不会正确刷新。除了强制页面在没有 ajax 的情况下加载,有什么建议吗?

JavaScript 函数:

function showCorrectAnswer(correctAnswer) {
    $(document).on("pageinit", function() {
        document.getElementById(correctAnswer).click()
    })
}

PHP函数:

function populatedQuestionUI ($topicID, $questionID, $actionSought) {
global $pdo;

$query = $pdo->prepare("SELECT * FROM questions WHERE Topic = ? and QNo = ?");
$query->bindValue(1, $topicID);
$query->bindValue(2, $questionID);
$query->execute();

while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
    $results[] = $row;
}

?>
<form name="questionUI" action="/MCExamSystemV2/Admin/manageQuestion.php" method="post">
    <input type="hidden" name="TopicID" value="<?php echo $_POST['topic']; ?>"/>
    <input type="hidden" name="QuestionNo" value="<?php echo $_POST['question']; ?>"/>
    <label for="QText">Question Text</label>
    <input type="text" name="QText" value="<?php echo $results[0]['QText']; ?>"/>
    <label for="AnswerText-1">First Answer</label>
    <input type="Text" name="AnswerText-1" value="<?php echo $results[0]['AText1']; ?>"/>
    <label for="AnswerText-2">Second Answer</label>
    <input type="Text" name="AnswerText-2" value="<?php echo $results[0]['AText2']; ?>"/>
    <label for="AnswerText-3">Third Answer</label>
    <input type="Text" name="AnswerText-3" value="<?php echo $results[0]['AText3']; ?>"/>
    <label for="AnswerText-4">Fourth Answer</label>
    <input type="Text" name="AnswerText-4" value="<?php echo $results[0]['AText4']; ?>"/>
    <label for="CorrectAnswer">Correct answer:</label>
    <div data-role="controlgroup" data-type="horizontal">
        <input type="button" name="Answer-1" id="Answer-1" value=1 onClick="document.getElementById('CorrectAnswer').value='1'"/>
        <input type="button" name="Answer-2" id="Answer-2" value=2 onClick="document.getElementById('CorrectAnswer').value='2'"/>
        <input type="button" name="Answer-3" id="Answer-3" value=3 onClick="document.getElementById('CorrectAnswer').value='3'"/>
        <input type="button" name="Answer-4" id="Answer-4" value=4 onClick="document.getElementById('CorrectAnswer').value='4'"/>
    </div>
    <input type="hidden" name="CorrectAnswer" id="CorrectAnswer" value='0'/>
    <input type="submit" value="Confirm <?php echo $actionSought; ?>">
    <input type="button" value="Cancel" onClick="location.href='/MCExamSystemV2/Admin'"/>
</form>

<script src="/MCExamSystemV2/includes/scripts.js"></script>>
<script>showCorrectAnswer('Answer-<?php echo $results[0]['CorrectA']; ?>')</script>
<?php
}
4

1 回答 1

0

主要问题是因为您正在这样做:

document.getElementById(correctAnswer).click();

您没有检查元素是否在页面上。将其更改为:

var el = document.getElementById(correctAnswer);
if (el) {
    el.click();
}
于 2013-10-24T15:57:47.320 回答