具有变量的Javascript函数不起作用

时间:2014-06-16 09:38:39

标签: javascript php html

我对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是一个字符串值。 那问题是什么?

感谢您的帮助

2 个答案:

答案 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>';