-1

这是我的javascript函数。

<script>
    function output($file_name, $content)
    {
     document.getElementById("content_title").innerHTML="    "+$file_name;
     document.getElementById("content").innerHTML=" "+$content; 
    }
</script>

这是我的 PHP 代码;

<?php
$dir = "img_png";
$files = scandir($dir);
$dir_length = count($files);
?>

这是我的 PHP 代码的第二部分(有问题);问题:当 $content="any string"; 一切正常,但是当 $content=file_get_contents('file'); 我的触发函数根本不会改变任何 .innerHTML 元素。

<?php
for ($i=2;$i<$dir_length;$i++){
$title=explode(".png", $files[$i]);
$content=file_get_contents('./content_txt/tv.txt');
echo "<td><button id='button' class='button' onClick=\"output('", $title[0],"";
echo "', '", $content,"";
echo "')\"><img src=\"/img_png/", $files[$i], "\"></img></button></td>";
}
?>
4

3 回答 3

0

您的文件内容可能包含需要在 JS 中转义的换行符或特殊字符,您需要在将字符串传递给 javascript 函数之前转义特殊字符。

于 2013-07-24T10:11:57.210 回答
0

开始解决您的问题(使用点而不是逗号来连接字符串)

<?php
for ($i=2;$i<$dir_length;$i++){
    $title=explode(".png", $files[$i]);
    $content=file_get_contents('./content_txt/tv.txt');
    echo "<td><button id='button' class='button' onClick=\"output('" . $title[0];
    echo "', '" . $content;
    echo "')\"><img src=\"/img_png/" . $files[$i] . "\"></img></button></td>";
}
?>

另外我会设置$content-variable在循环之外并跳过结束标签(它没有任何区别,因为</img>没有使用):

从 php 发送时也对您的数据进行编码(使用 urlencode)

<?php
$content=file_get_contents('./content_txt/tv.txt');
for ($i=2;$i<$dir_length;$i++){
    $title=explode(".png", $files[$i]);
    echo "<td><button id='button' class='button' onClick=\"output('" . $title[0];
    echo "', '" . urlencode($content);
    echo "')\"><img src=\"/img_png/" . $files[$i] . "\"></button></td>";
}
?>

在您的 javascript 中,您必须解码内容:

function output($file_name, $content)
{
    $content = decodeURI($content);
    document.getElementById("content_title").innerHTML="    "+$file_name;
    document.getElementById("content").innerHTML=" "+$content; 
}
于 2013-07-24T10:13:11.377 回答
0

"tvvvvvv";

我想您将该字符串从 PHP 复制粘贴到tv.txt

删除";- 你不需要它在文件中。

并且"是您在javascript中的问题。

于 2013-07-24T10:59:08.087 回答