js,php,onclick函数和引用错误

Js, php, onclick function and quotes error

我正在建立一个梦幻足球网站,但我在使用引号和 javascript 时遇到了问题。

我在足球场图像上有一个 table 球员姓名和一组 18 <div>(11 名首发球员和 7 名替补球员)。我希望用户能够单击 table 上的名称,并且该名称同时出现在字段中并从 table 中消失。球员姓名必须出现在第一个 "empty" 位置(首发或替补)。另一方面,如果用户单击 <div>,则该名称必须从 field/bench 中消失并出现在 table 中的原始位置。

看比解释容易多了! :)

我能够做到这一点,但当我发现有些球员的名字中有 ' 时,我很生气...

我有以下代码,其中包含一个数组,用于处理 18 位(var team)和两个函数

<script>
    team = new Array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0);

    function insertPlayer(name)
    {
        var j = 0;
        for (j=0; j<18; j++) {
            if(team[j] == 0){
                break;
            }
        };
        if(j<18){
            team[j] = 1;
            var num = j.toString();
            var id_string = 'player_'.concat(num);
            document.getElementById(j).textContent = name;
            document.getElementById(id_string).value = name;
            document.getElementById(name).style.display = 'none';
        }
    }

    function removePlayer(id)
    {
        team[id] = 0;
        var num = id.toString();
        var id_string = 'player_'.concat(num);
        document.getElementById(document.getElementById(id).textContent).style.display = "";
        document.getElementById(id).textContent = "";
        document.getElementById(id_string).value = "";
    }
</script>

<div>个是这样的

<?php
    for ($i=0; $i < 18; $i++) { 
      echo '<div onclick="removePlayer(\''.$i.'\')" id="'.$i.'">';
      if(isset($array[$i])){echo $array[$i];}
      echo '<input type="hidden" id="player_'.$i.'" name="player_'.$i.'" value=';
      if(isset($array[$i])){echo '"'.$array[$i].'"';}
      echo '></div>';
    }
?>

当然,其中$array[$i]是保存的阵容,如果用户已经做过并且他想修改他的第一选择。 table 是这样的:

<tr id="'.mysqli_real_escape_string($link,$name).'">
...
<td>...</td>
<td onclick=\"insertPlayer('".mysqli_real_escape_string($link,$name)."')\">".$name."</td>
<td>...</td>
...

正如我所说,这对普通名称非常有效。它给我带来了麻烦,例如 "O'Neal" 这样的名字...

感谢您的帮助!

将玩家名字放入Javascript数组,然后在函数调用中使用数组索引。

<script>
    team = new Array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0);
    var players = <?php echo json_encode($array); ?>;

    function insertPlayer(playernum)
    {
        var name = players[playernum];
        var j = 0;
        for (j=0; j<18; j++) {
            if(team[j] == 0){
                break;
            }
        };
        if(j<18){
            team[j] = 1;
            var num = j.toString();
            var id_string = 'player_'.concat(num);
            document.getElementById(j).textContent = name;
            document.getElementById(id_string).value = name;
            document.getElementById(name).style.display = 'none';
        }
    }

    function removePlayer(id)
    {
        team[id] = 0;
        var num = id.toString();
        var id_string = 'player_'.concat(num);
        document.getElementById(document.getElementById(id).textContent).style.display = "";
        document.getElementById(id).textContent = "";
        document.getElementById(id_string).value = "";
    }
</script>

...

<tr id="player_insert_'.$i.'">
...
<td>...</td>
<td onclick=\"insertPlayer('.$i.')\">".$name."</td>
<td>...</td>
...