Javascript函数调用错误的页面

时间:2013-10-24 15:32:40

标签: javascript php html ajax jquery-mobile

Heyo,

JavaScript函数调用存在一些问题。基本上我使用php创建一个表,然后在页面init上调用JavaScript来点击一个标记正确答案的按钮。

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

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

主要问题似乎是JavaScript仍然被加载(可能是因为jquerymobile使用ajax调用来加载页面,因此数据永远不会正确刷新。除了强制页面加载没有ajax,任何建议?< / p>

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
}

1 个答案:

答案 0 :(得分:0)

主要问题是因为你这样做:

document.getElementById(correctAnswer).click();

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

var el = document.getElementById(correctAnswer);
if (el) {
    el.click();
}