3 回答
TA贡献2012条经验 获得超12个赞
您的引号存在语法错误-arent逸出了多个单引号,因此PHP突然出现意外情况*。
<script>
window.onload = function(){
<?php if (empty($dark_mode)){ echo '$('*').toggleClass("light")
// -----------------------------------^^^^^^^ See the mismatch of quotes here
document.getElementById("*").classList.remove("dark");';}else{ echo '$('*').toggleClass("light") document.getElementById("*").classList.remove("light");';} ?>
};
</script>
您可以通过几种方法解决此问题,一种方法是使用双引号或转义单引号,但是您可以通过在PHP中设置一个变量并使用该变量而不是在条件内执行相同的操作来简化此操作。
<script>
window.onload = function(){
// Remove both dark and light
$("*").removeClass("dark light");
// Add current mode based on $dark_mode in PHP
$("*").addClass("<?php echo empty($dark_mode) ? 'light' : 'dark'; ?>");
};
</script>
TA贡献1852条经验 获得超7个赞
我希望Heredoc语法可以回显多行动态JavaScript / jQuery代码。您无需转义任何引号,并且更容易阅读,尤其是当您有数十行代码时。
$if_script_code = <<<if_script
Here goes the script code
for better readability
and without the need to
escape a ton of quotes.
if_script;
$else_script_code = <<<else_script
more script code
here...
else_script;
if ($my_condition === TRUE) {
$script_code = $if_script_code;
}
else {
$script_code = $else_script_code;
}
?>
<script>
window.onload = function(){<?=$script_code?>;}
</script>
TA贡献1818条经验 获得超8个赞
我过去也有同样的问题,我也确实使用php来用php vars打印所有的javascript,在您的情况下,它很可能是:
<?php
echo "<script>";
echo "window.onload = function(){";
if (empty($dark_mode)){
echo "$('*').toggleClass('light') document.getElementById('*').classList.remove('dark');";
}else{
echo "$('*').toggleClass('light') document.getElementById('*').classList.remove('light');";
}
回显“”;?>
添加回答
举报