【问题标题】:Javascript not replacing InnerHTML in PHP ScriptJavascript 没有替换 PHP 脚本中的 InnerHTML
【发布时间】:2014-07-04 06:56:37
【问题描述】:

我最近一直在研究 Garry's Mod 加载屏幕,基本上我试图通过用短语替换地图名称来“简化”地图名称。但是,PHP 似乎没有打印数组值。

$map = $_GET["map"];
$map_list = array (
    "gm_construct" => "Construct",
    "gm_flatgrass" => "Flatgrass"
);
if (in_array($map, $map_list) == true)
{
    if ($map == $map_list[1])
    {
        print("<script>document.getElementById('map_name').innerHTML = '" . print($map_list['gm_construct']) . "'</script>");
    }
    else if ($map == $map_list[2])
    {
        print("<script>document.getElementById('map_name').innerHTML = '" . print($map_list['gm_flatgrass']) . "'</script>");
    }
}

【问题讨论】:

  • 它给出的任何错误?

标签: javascript php arrays printing innerhtml


【解决方案1】:

关于您如何访问关联数组$map_list 的几个问题。使用以下内容:

<?php
$map = "Flatgrass"; // $_GET["map"];
$map_list = array (
    "gm_construct" => "Construct",
    "gm_flatgrass" => "Flatgrass"
);
$key = array_search($map, $map_list);
if ($key !== false) {
    print("<script>document.getElementById('map_name').innerHTML = '" . $map_list[$key] . "'</script>");
}

如果$_GET值在$map_list中有key,直接用它打印脚本即可。

不要在串联的字符串中调用print()它直接输出到标准输出,不返回字符串)。而且,这会减少您的代码,只需让一个 if 语句使用直接传入的值打印出脚本。

而且,在您的原始代码中,您不能使用整数索引 $map_list,因为您只使用了字符串键,使其成为关联数组。

【讨论】:

  • 唯一的问题是它会打印/返回不正确的短语(Flatgrass),所以经过 20 分钟的头撞思考后,我设法想出了这个:$map_list[$map] 我也翻转了-翻转阵列。键现在是值,值现在是键。然后删除你的关键变量,最终得到我想要的。好游戏! pastebin.com/c5c9Nb0Z(最终编辑)
【解决方案2】:

你应该试试下面的代码:-

$map = $_GET["map"];
$map_list = array (
    "gm_construct" => "Construct",
    "gm_flatgrass" => "Flatgrass"
);
if (in_array($map, $map_list) == true)
{
    if ($map == $map_list["gm_construct"])
    {
        print("<script>document.getElementById('map_name').innerHTML = '" . print($map_list['gm_construct']) . "'</script>");
    }
    else if ($map == $map_list["gm_flatgrass"])
    {
        print("<script>document.getElementById('map_name').innerHTML = '" . print($map_list['gm_flatgrass']) . "'</script>");
    }
}

【讨论】:

    【解决方案3】:

    你应该改变

    print("<script>document.getElementById('map_name').innerHTML = '" . print($map_list['gm_construct']) . "'</script>");
    

    print("<script>document.getElementById('map_name').innerHTML = '{$map_list['gm_construct']}'</script>");
    

    或者你可以使用

    echo '<script>document.getElementById("map_name").innerHTML = "', $map_list['gm_construct'] ,  '"</script>';
    

    更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      • 2013-03-15
      • 2021-04-17
      • 1970-01-01
      • 2021-09-29
      • 2015-09-13
      • 1970-01-01
      相关资源
      最近更新 更多