引号打破JS变量

时间:2018-11-27 14:38:23

标签: javascript

我需要在js脚本中创建var,如下所示:

var map = "<div class="map"><?php echo do_shortcode('[wpgmza id="3"]'); ?></div>";

,但是撇号和引号会破坏代码。如何对其进行更改以使其起作用?

4 个答案:

答案 0 :(得分:1)

使用其他引号或将其转义。

var map = `<div class="map"><?php echo do_shortcode('[wpgmza id="3"]'); ?></div>`;

var map2 = "<div class=\"map\"><?php echo do_shortcode('[wpgmza id=\"3\"]'); ?></div>";

console.log(map);
console.log(map2);

答案 1 :(得分:1)

转义引号。

var map = "<div class=\"map\"><?php echo do_shortcode('[wpgmza id=\"3\"]'); ?></div>";

如果您使用"打开值,那么JavaScript将寻找第二个"来知道值的结尾。由于您现在在值中使用此值,因此它会尽早停止。通过转义要在值中使用的",可以确保JavaScript知道它是值的一部分。

因此,在您的代码中,JavaScript将在第二个"之后停止: var map = "<div class=" 如您所见,您现在使用"打开了它,在=之后还有另一个",因此该值将被关闭。但是,之后还有更多代码:map"><?php echo do_shortcode('[wpgmza id=\"3\"]'); ?></div>"; 由于JavaScript不知道如何处理此部分,因此会引发错误。

如果您不理解以上部分,也许这样会更好地解释它:

您可以将其视为if语句,其中if { }需要两个括号。一个打开{,另一个关闭}。在您的值中,您还需要两个字符,一个字符打开,一个字符关闭。在您的情况下,您可以使用"打开值,并使用"关闭。因此,一旦达到第二个",它将关闭该值。

您所做的分配与此if语句类似:if { } }。 JavaScript不知道如何处理最新的},因为没有其他if-statement要关闭,因此它会引发错误。

答案 2 :(得分:0)

您可以使用以下几种方法来固定变量的值:

转义报价

您可以在双引号中添加反斜杠,以使JS解析器忽略它们。为了清楚起见,我还将连接PHP值:

var map = "<div class=\"map\">" + <?php echo do_shortcode('[wpgmza id="3"]'); ?> + "</div>";

交替使用单引号和双引号

如果需要在值中使用双引号,则可以将其用单引号引起来。

var map = '<div class="map">' + <?php echo do_shortcode('[wpgmza id="3"]'); ?> + '</div>';

如果您更喜欢HTML属性值中的单引号,则也可以采用其他方法

var map = "<div class='map'>" + <?php echo do_shortcode('[wpgmza id="3"]'); ?> + "</div>";

模板文字

在ES6中,可以使用反引号字符使用模板文字。注意,您可以在模板文字中使用单引号和双引号:

var map = `<div class="map"><?php echo do_shortcode('[wpgmza id="3"]'); ?></div>`;

答案 3 :(得分:-2)

var map = /"<div class=/"map/"><?php echo do_shortcode('[wpgmza id=/"3/"]'); ?></div>/";

var map = "<div class='map'><?php echo do_shortcode('[wpgmza id='3']'); ?></div>";