如何缩短重复的 javascript php 代码

how to shorten a repetitive javascript php code

我是 javascript 的新手。请帮忙解决以下问题。我有一个重复的代码块,大约有 40 "cases" 几乎相同的代码 - 它采用 wordpress do_shortcode 的返回值并保存到 javascript 变量(这部分工作正常)。

我想通过某种实现相同功能的代码循环来缩短它。我尽量不使用 COOKIE 来传值给 PHP。 请参阅示例第 1 行:

switch (id) {
case 1: oh = `<?php echo do_shortcode("[block id=\"oh1\"]"); ?>`;break;
case 2: oh = `<?php echo do_shortcode("[block id=\"oh2\"]"); ?>`;break;
case 3: oh = `<?php echo do_shortcode("[block id=\"oh3\"]"); ?>`;break;
case 4: oh = `<?php echo do_shortcode("[block id=\"oh4\"]"); ?>`;break;`
...
}

jQuery('#id').html(oh);

我必须像上面那样指定 40 行,但还没有找到其他方法。请分享您的宝贵意见。谢谢

这个怎么样(我假设你的开关在 Javascript)。

oh = '<?php echo do_shortcode("[block id=\"oh_num\"]"); ?>'.replace('_num', yourVariableInSwitch) ;break;`

在这种情况下,您甚至不需要 switch 语句。

如果你必须做40次:

for (var i = 0; i < 40; i++) {
    console.log('<?php echo do_shortcode("[block id=\"oh_num\"]"); ?>'.replace('_num', i);
}

使用 PHP

渲染 javascript 的 switch case 语句
switch (yourVariable) {
<?php
for ($i = 1; $i < 41; $i++) {
    print 'case ' . $i . ': oh = ' . do_shortcode("[block id=oh'" . $i . "']") . '; break;';
}
?>
}

使用 ES6 string interpolation

const myNumber = 2;
const oh = `<?php echo do_shortcode("[block id=\"oh${myNumber}\"]"); ?>`;
console.log(oh);

全部完成 PHP:

<?php
for($i=1,$l=41; $i<$l; $i++){
  echo "case $i: oh = ".do_shortcode("[block id='oh$i']").' break;'
}
?>