我想每天都展示不同的内容。只是纯文本或PHP回声工作正常,但当我试图包含一个PHP文件或加载图像等我的脚本停止工作。
到目前为止我的代码:
<div id="box-wrapper"></div>
<script>
function myFunction() {
var d = new Date();
var weekday = new Array(7);
weekday[0] = "This is working well.";
weekday[1] = "<?php echo 'This is also working well.' ?>";
weekday[2] = "Tuesday";
weekday[3] = "Wednesday";
weekday[4] = "Thursday";
weekday[5] = "Friday";
weekday[6] = "Saturday";
var n = weekday[d.getDay()];
document.getElementById("box-wrapper").innerHTML = n;
}
</script>
任何想法我怎么能意识到这一点?我们公司里没有人对这个主题有非常深入的了解,而我只是在实践中学习。
问候和感谢。
编辑:抱歉不清楚。例如,如果我在星期三包含一个文件,并且星期四的文件都显示,但是我的页面搞砸了,并且还显示了一些纯文本,如:*"; weekday[5] = "Friday"; weekday[6] = "Saturday"; var n = weekday[d.getDay()]; document.getElementById("box-wrapper").innerHTML = n; } –*
答案 0 :(得分:1)
您的PHP回音仅起作用,因为它与常规文本完全相同。
在浏览器甚至看到您的JavaScript之前,在服务器上处理PHP。所以这个:
weekday[1] = "<?php echo 'This is also working well.' ?>";
简单地说:
weekday[1] = "This is also working well.";
您的浏览器甚至不知道其中的差异。
当您尝试包含另一个文件时,该文件的内容也将输出到该JavaScript字符串中。您应该可以使用浏览器的“查看源”工具查看该内容。如果您向下滚动到JavaScript,您会看到类似这样的内容:
weekday[4] = "[file contents]";
该文件可能包含引号。当您的浏览器遇到字符串中的引号时,它会假定字符串已结束。它会使您的JavaScript无效。
你可能不应该使用JavaScript。相反,您应该使用PHP在服务器上执行所有这些操作。
例如,它可能如下所示:
$day = date('l'); // That gets the name of today. http://php.net/date
switch ($day) {
case 'Sunday':
echo 'This is working well.';
break;
case 'Monday':
echo 'This is also working well.';
break;
case 'Tuesday':
echo 'Tuesday';
break;
case 'Wednesday':
include 'filename.php';
break;
// etc.
}
这只是一种方法。您也可以像在JavaScript中一样使用数组,但这会使包含其他PHP文件变得更加困难。
答案 1 :(得分:1)
如果你已经在使用PHP,为什么要用JavaScript搞乱你的页面呢?
<?php
$day = getdate('wday');
$files = array(
'days/sunday.php',
'days/monday.php',
'days/tuesday.php',
'days/wednesday.php',
'days/thursday.php',
'days/friday.php',
'days/saturday.php'
);
?>
<div><?php include $files[$day]; ?></div>
如果确实想要使用JavaScript,请使用AJAX。
var day = new Date().getDay(),
req = new XMLHttpRequest();
req.open('GET', 'my-dynamic-file.php?day=' + day, true);
req.onload = function() {
document.body.innerHTML = req.responseText;
};
req.send();
答案 2 :(得分:0)
我猜测你所包含的PHP文件会生成"
,这会干扰javascript "
分隔字符串。
你当然需要使用"
\"
那样:
weekday[4] = "My string with " a double quote";
变为
weekday[4] = "My string with \" a double quote";