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>
...
我正在建立一个梦幻足球网站,但我在使用引号和 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>
...