php在foreach循环中创建javascript


php create javascript in foreach loop

我有以下代码,但它不起作用。我正在尝试创建一个脚本输出:

echo "<script type='"text/javascript'"><!--'n";
echo "SLIDES = new slideshow('"SLIDES'")'n";
  // Now loop through the files, echoing out a new select option for each one
  foreach( $files as $fname ) {
    echo 's = new slide()'n';
    echo 's.src =  '"http://cashbackflorida.com/wpradmin/modules/wprrets/photos/'.$result ->MLS.'/'{$fname}'n'"';
    echo 's.width = '"560'"'n';
    echo 's.height = '"420'"'n';
    echo 's.alt = '"{$fname}'"'n';
    echo 's.text = unescape('"'")'n';
    echo 's.link = '"'"'n';
    echo 's.target = '"'"'n';
    echo 's.attr = '"'"'n';
    echo 's.filter = '"'"'n';
    echo 'SLIDES.add_slide(s)'n';
  }
  echo '--></script>'n';

不要这样做。只需将数组输出到JavaScript并在那里进行处理。

var files = <?php echo json_encode($files); ?>;

您会在字符串转义中发现问题

echo 's.height = '"420'"'n';

你不能用这样的单引号字符串转义。所以试试这个

echo "s.height = '"420'"'n";

您不需要在双引号中转义单引号,反之亦然,但您只能在双引号字符串中获得类似的换行符。不过,我建议使用HEREDOC来编写这种字符串。

$fnamej = json_encode($fname);
echo << EOT
s.height = "420";
s.alt = $fnamej;
EOT;

我还倾向于说,您最好用javascript处理这个问题。这可能会突然表现得非常糟糕,并且会占用更多的带宽。