由于换行而导致Document.write错误?

时间:2013-09-30 03:11:53

标签: javascript php jquery document.write

            <?php  
              if ( is_home() ) {
            ?>
              <script type="text/javascript">
              if ($(window).width() < 768) {
                  document.write("<?php echo do_shortcode("[mobile-slider]"); ?>");
              } else {
                  document.write("<?php echo do_shortcode("[desktop-slider]"); ?>");
              }
              </script>      

我的主页会显示"); } else { document.write(",然后显示主页滑块,然后显示"); }。知道为什么吗?

JS错误

  

SyntaxError:unterminated string literal

     

文件撰写(“

HTML输出 - 似乎是在添加换行符,我认为这会破坏脚本?

<script type="text/javascript">
if ($(window).width() < 768) {
document.write("
<!--slider--> 

即使在document.write("开放后有换行符,我怎样才能让它继续运行?

我也尝试了以下操作,但仍会在屏幕上打印} else {

<script type="text/javascript">
              if ($(window).width() < 768) {
                <?php echo do_shortcode("[mobile-slider]"); ?>
              } else {
                <?php echo do_shortcode("[desktop-slider]"); ?>
              }
</script>

4 个答案:

答案 0 :(得分:0)

以下是解决方案:

   <?php        
    $v1  = do_shortcode("[mobile-slider]");   
    $v2 = do_shortcode("[desktop-slider]");

    function do_shortcode($va){
    return "here i am:" . $va;
    }
    ?>



 <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

    <script type="text/javascript">
                  if ($(window).width() < 768) {
                     $('body').html("<?php echo $v1; ?>");
                  } else {
                     $('body').html("<?php echo $v1; ?>");
                  }
    </script>

    </head>

    <body>

答案 1 :(得分:0)

好的,所以我通过以下方式解决了这个问题。

使用JS,如果屏幕宽度小于768px,我将变量设置为1.使用PHP,我将相应地检查该变量和echo

答案 2 :(得分:0)

根本不依赖PHP来生成滑块会更容易和更清洁。

将容器元素放在希望滑块显示在页面中的位置:

<div id="slider-ct"></div>

然后使用JavaScript生成滑块(显然,您可以将代码组织到模块中,但这只是一个示例):

$(function () {
    var $sliderCt = $('#slider-ct');

    if ($(window).width() < 768) {
        $sliderCt.html('mobile slider');
        return;
    }

    $sliderCt.html('desktop slider');

});

答案 3 :(得分:-1)

这条线就是原因。

"<?php echo do_shortcode("[mobile-slider]"); ?>"

您需要转义解释器,或者您需要更改字符串连接以在某处使用“代替”。