我对PHP和JavaScript有一点问题。我正在制作一个带有图库的主页,如果你点击图片(PHP从数据库中获取src地址),它应该会变得更大。
这是我的代码:
PHP:
echo '<h1>'."Galerie".'</h1>';
$r = esql("SELECT * FROM Bilder");
$anzahlBilder = count($r);
$counterForBilderInReihe = 0;
$counterForID = 0;
echo '<table>';
foreach($r as $bild){
$bildpfad = $bild['Bilderpfad'];
if($counterForBilderInReihe === 0){
echo '<tr>';
echo '<td class="td"><img src="'.$bild['Bilderpfad'].'" alt="'.$bild['Bildtitel'].'" class="GalerieBilder" onclick="anzeigen('.$bildpfad.')" onMouseOver="cursorChange('.$counterForID.')" id="'.$counterForID.'"></img></td>';
$counterForBilderInReihe = $counterForBilderInReihe + 1;
}
else if($counterForBilderInReihe === 1){
echo '<td class="td"><img src="'.$bild['Bilderpfad'].'" alt="'.$bild['Bildtitel'].'" class="GalerieBilder" onclick="anzeigen('.$bildpfad.')" onMouseOver="cursorChange('.$counterForID.')" onclick="anzeigen('.$bild['Bilderpfad'].')" id="'.$counterForID.'"></img></td>';
$counterForBilderInReihe = $counterForBilderInReihe + 1;
}else if($counterForBilderInReihe === 2){
echo '<td class="td"><img src="'.$bild['Bilderpfad'].'" alt="'.$bild['Bildtitel'].'" class="GalerieBilder" onMouseOver="cursorChange('.$counterForID.')" onclick="anzeigen('.$bildpfad.')" id="'.$counterForID.'"></img></td>';
$counterForBilderInReihe = $counterForBilderInReihe + 1;
}else if($counterForBilderInReihe === 3){
echo '<td class="td"><img src="'.$bild['Bilderpfad'].'" alt="'.$bild['Bildtitel'].'" class="GalerieBilder" onMouseOver="cursorChange('.$counterForID.')" onclick="anzeigen('.$bildpfad.')" id="'.$counterForID.'"></img></td>';
$counterForBilderInReihe = $counterForBilderInReihe + 1;
}else{
echo '</tr>';
$counterForBilderInReihe = 1;
echo '<tr>';
echo '<td class="td"><img src="'.$bild['Bilderpfad'].'" alt="'.$bild['Bildtitel'].'" class="GalerieBilder" onMouseOver="cursorChange('.$counterForID.')" onclick="anzeigen('.$bildpfad.')" id="'.$counterForID.'"></img></td>';
}
$counterForID = $counterForID + 1;
}
if($counterForBilderInReihe === 0){
echo '</tr>';
}else{
}
echo '</table>';
JavaScript的:
function cursorChange(id){
console.log("cursorchange!");
document.getElementById(id).style.cursor = "pointer";}
function anzeigen(pfad){
console.log("anzeigen");
window.alert(pfad);}
我的问题是函数anzeigen(pfad)不起作用,但函数cursorChange(id)工作正常。 具体问题是,如果我点击一张图片,它就不会调用函数anzeigen()。我可以看到这是因为console.log()。变量pfad或$ bildpfad是一个字符串值。 那问题是什么?
感谢您的帮助
雷
答案 0 :(得分:1)
试试这个......
使用转义字符在点击
的javascript函数调用中传递字符串值echo '<td class="td"><img src="'.$bild['Bilderpfad'].'" alt="'.$bild['Bildtitel'].'" class="GalerieBilder" onclick="anzeigen(\''.$bildpfad.'\')" onMouseOver="cursorChange('.$counterForID.')" id="'.$counterForID.'"></img></td>';
答案 1 :(得分:0)
典型的德语编程,永远不要使用一个简短的单词,其中有5个长单词。 : - )
有很多重复的代码(我删除了大多数但不是全部代码)并且你的一些代码有2个onclick事件而不是只有一个,并且无论如何它们实际上不应该在代码中(参见我之前的代码)注释)。
echo '<h1>'."Galerie".'</h1>';
$r = esql("SELECT * FROM Bilder");
$anzahlBilder = count($r);
$counterForBilderInReihe = 0;
$counterForID = 0;
echo '<table>';
foreach($r as $bild) {
$events = '';
$bildpfad = $bild['Bilderpfad'];
switch( $counterForBilderInReihe ) {
case 0:
echo '<tr>';
$events = <<<EOF
onclick="anzeigen({$bildpfad})"
onMouseOver="cursorChange({$counterForID})"
EOF;
$counterForBilderInReihe++;
break;
case 1:
case 2:
case 3:
$events = <<<EOF
onclick="anzeigen({$bildpfad})" onMouseOver="cursorChange({$counterForID})"
EOF;
$counterForBilderInReihe++;
break;
default:
echo '</tr>';
$counterForBilderInReihe = 1;
echo '<tr>';
$events =<<<EOF
onMouseOver="cursorChange({$counterForID})" onclick="anzeigen({$bildpfad})"
EOF;
break;
}
echo <<<EOF
<td class="td">
<img src="{$bildpfad}" alt="{$bild['Bildtitel']}"
class="GalerieBilder" id="{$counterForID}"
{$events}>
</img>
</td>
EOF;
$counterForID++;
}
if($counterForBilderInReihe === 0){
echo '</tr>';
} else {
}
echo '</table>';