在两个javascript函数之间切换

Switch between two javascript functions

本文关键字:函数 之间 javascript 两个      更新时间:2023-09-26

基本上,我希望php决定加载哪个版本的站点片段类似的东西

    <?php 
    $sql="SELECT _1 FROM Player_Registry WHERE Player_Name = $_SESSION[user_name]"; 
    $result_1=mysql_query($sql); 
    if($result_1 < 10) { ?> 
      <script type="text/javascript"> 
        function setdescription_1() { 
          document.getElementById('title_box').innerHTML = 'Alchemist'; 
        } 
      </script> 
    <?php 
    } 
    else { 
    ?> 
      <script type="text/javascript"> 
        function setdescription_1() { 
          document.getElementById('title_box').innerHTML = 'Master Alchemist'; 
        } 
      </script> 
    <?php 
    }?> 

问题是,它们都运行,所以即使我将条件设置为true,我仍然可以获得第二个。

据我所知,完整的源代码与被视为源代码的内容相同,但没有一个php显示在网站预览中(尽管它实际上在那里,因为我的另一台计算机可以在没有看到php的情况下查看网站,但当它查看源代码时,它可以看到它不应该看到的):

<head>
<title>Blank</title>
<link rel="icon" type="image/png" href="Pictures/favicon.png">
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="author" content="" />
<meta name="owner" content="" />
<meta name="copyright" content="" />
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<link rel="stylesheet" href="TreeStyle.css" type="text/css" />
</head>
<body>

<div style="width:100%; height:12.5%;">
    <p style="font-size: 300%;"><b>Skill Tree: Alchemist</b></p>
</div>
<div style="width:100%; height:75%;">
<?php
$sql="SELECT _1 FROM Player_Registry WHERE Player_Name = $_SESSION[user_name]";
$result_1=mysql_query($sql);
if($result_1 < 10)
    {
    ?>
    <script type="text/javascript">
    function setdescription_1()
        {
        document.getElementById('title_box').innerHTML = 'Alchemist';
        document.getElementById('desc_box').innerHTML = 'Turn surroundings into base element costs.';
        }
    </script>
    <?php
    }
else
    {
    ?>
    <script type="text/javascript">
    function setdescription_1()
        {
        document.getElementById('title_box').innerHTML = 'Master Alchemist';
        document.getElementById('desc_box').innerHTML = 'Equiped Philosopher&#39;s Stone allows bypass of element costs.';
        }
    </script>
    <?php
    }
$sql="SELECT _2 FROM Player_Registry WHERE Player_Name = $_SESSION[user_name]";
$result_2=mysql_query($sql);
if($result_2 < 10)
    {
    ?>
    <script type="text/javascript">
    function setdescription_2()
        {
        document.getElementById('title_box').innerHTML = 'Learn Runes';
        document.getElementById('desc_box').innerHTML = 'Create Runes and Cores up to Lv.<?php echo "$result_2" ?>';
        }
    </script>
    <?php
    }
else
    {
    ?>
    <script type="text/javascript">
    function setdescription_2()
        {
        document.getElementById('title_box').innerHTML = 'Comprehension';
        document.getElementById('desc_box').innerHTML = 'Create Runes and Cores up to Lv.10';
        }
    </script>
    <?php
    }
?>
    <script type="text/javascript">
    function cleardescription()
        {
        document.getElementById('title_box').innerHTML = 'Skill Name';
        document.getElementById('desc_box').innerHTML = 'This is the skill description.';
        }
    </script>
    <table>
        <tr>
            <td></td>
            <td><a href='AddSkillPoints.php?skill=_1' onmouseover="setdescription_1()" onmouseout="cleardescription()"><img src="Alchemist.png" /></a></td>
            <td><img src="Blank_Tile.png"/></td>
            <td><a href='AddSkillPoints.php?skill=_2' onmouseover="setdescription_2()" onmouseout="cleardescription()"><img src="Learn_Runes.png"/></td>
etc..............
    </table>
    </div>
    <div style="width:100%; height:12.5%;">
        <b><p id="title_box" style="font-size: 150%;">Skill Name</p></b><br />
        <p id="desc_box">This is the skill description.</p>
    </div>
</div>
</body>
</html>

如果你的PHP真的被解析了,我相信你不会两者都得到。如果它没有被解析,如果你查看网页的来源,你会看到你粘贴的代码和你粘贴的完全一样

确保php被解析——如果没有,那就是问题所在。

脚本标记通常不会干扰解析,除非你必须进行不允许标记的后期处理——例如,如果你使用某种框架,你不应该输入php,而是输入一些标记化代码

这里有一个更好的例子-注意,我把脚本移到了头上,但没有真正优化-所以如果你在一个调用中同时获得两个值并创建一个对象数组,php可以更优雅

<?PHP
    $sql="SELECT _1 FROM Player_Registry WHERE Player_Name = $_SESSION[user_name]";
    $result_1=mysql_query($sql);
    $sql="SELECT _2 FROM Player_Registry WHERE Player_Name = $_SESSION[user_name]";
    $result_2=mysql_query($sql);
%><html>
    <head>
    <title>Blank</title>
    <link rel="icon" type="image/png" href="Pictures/favicon.png">
.
.
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
    <link rel="stylesheet" href="TreeStyle.css" type="text/css" />
    <script type="text/javascript">
    var result1 = parseInt("<?PHP echo $result_1; ">,10);
    var skillLevel = (result1>=10?'Master ':'')+'Alchemist';
    var skillDesc  = result1>=10?"Equipped with Philosopher´s Stone allows bypass of element costs.":"Turn surroundings into base element costs.";
    var runeLevel  = result2>=10?'Comprehension':'Learn Runes';
    var runeDesc   = 'Create Runes and Cores up to Lv.'+result2; 
    window.onload=function() {
      setdescription_1();
    }
    function setdescription_1() {
          document.getElementById('title_box').innerHTML = skillLevel;
          document.getElementById('desc_box').innerHTML =  skillDesc; 
    }         
    function setdescription_2() {
          document.getElementById('title_box').innerHTML = runeLevel;
          document.getElementById('desc_box').innerHTML =  runeDesc; 
        }
    function cleardescription() {
            document.getElementById('title_box').innerHTML = 'Skill Name';
            document.getElementById('desc_box').innerHTML = 'This is the skill description.';
    }
        </script>

    </head>