php - 为什么我的 JS 的位置会改变我的 html 代码?

标签 php javascript html

直到今天我才知道 JS 位置可以改变我的 html 页面的结果。我希望图像 src 在两个不同的 url 的“点击”之间切换。为什么第一个代码可以像我想要的那样工作,但第二个代码却没有???第二个代码的源 html 为 var not_a_bad_word 生成一个空白字符串。

第一个代码:

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="UTF-8">
        <title>'Murica!'</title>
    </head>
    <body>
        <?php
        $dbhost = 'databasePlace';
        $dbname = 'mine';
        $dbuser = 'me';
        $dbpass = '*****';

        $link = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
        mysqli_select_db($link, $dbname);
        $name = $_GET["fname"];

        $query = sprintf(
            "SELECT image_url, Type
             FROM Pokemon c
             WHERE c.name = '%s'", 
             mysqli_real_escape_string($link, $name));

        $result = mysqli_fetch_assoc(mysqli_query($link, $query));

        echo '<img id="pokemon_card" onclick="changeImage()" height="450" 
                  width="330" src="' . $result['image_url'] . '"/>';

        mysqli_close($link);
        ?>
        <script>
            function changeImage() {
                element = document.getElementById('pokemon_card');
                var not_a_bad_word = "<?php echo $result['image_url']; ?>";

                if (element.src == "http://dmisasi.files.wordpress.com/2010/12/david-pokemon-card-back.jpg") {
                    element.src = not_a_bad_word;
                }
                else {
                    element.src="http://dmisasi.files.wordpress.com/2010/12/david-pokemon-card-back.jpg";
                }
            }
        </script>
    </body>
</html>

第二个代码:

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="UTF-8">
        <title>'Murica!</title>
        <script>
            function changeImage() {
                element = document.getElementById('pokemon_card');
                var not_a_bad_word = "<?php echo $result['image_url']; ?>";

                if (element.src == "http://dmisasi.files.wordpress.com/2010/12/david-pokemon-card-back.jpg") {
                    element.src = not_a_bad_word;
                }
                else {
                    element.src="http://dmisasi.files.wordpress.com/2010/12/david-pokemon-card-back.jpg";
                }
            }
        </script>
    </head>
    <body>
        <?php
        $dbhost = 'databasePlace';
        $dbname = 'mine';
        $dbuser = 'me';
        $dbpass = '*****';

        $link = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
        mysqli_select_db($link, $dbname);
        $name = $_GET["fname"];

        $query = sprintf(
            "SELECT image_url, Type
             FROM Pokemon c
             WHERE c.name = '%s'", 
             mysqli_real_escape_string($link, $name));

        $result = mysqli_fetch_assoc(mysqli_query($link, $query));

        echo '<img id="pokemon_card" onclick="changeImage()" height="450" 
                  width="330" src="' . $result['image_url'] . '"/>';

        mysqli_close($link);
        ?>
    </body>
</html>

最佳答案

在您的第一个示例中,创建变量 $result['image_url'] 的 PHP 代码在 变量被回显之前运行。

如果您查看产生空白的第二个示例,$result['image_url'] 实际上仅在 被回显后定义。 p>

关于php - 为什么我的 JS 的位置会改变我的 html 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13469467/

相关文章:

php - PHP 中的 Facebook api 墙贴

php - javascript事件不处理脚本

javascript - 滚动后重新定位 DIV

javascript - 非宽度特殊字符去除

javascript - 我想调整字体大小,同时调整表格元素

javascript - Uncaught ReferenceError : jqXHR is not defined

php - 使用PHP的SQL SUM函数

javascript - vue.js 为每第 6 个循环元素插入 block

javascript - 使用 jQuery .class 选择器获取数据属性

html - 向文本区域添加填充会将元素推到 div 之外