-1

1行しか出力しない場合にphpをjavascriptに出力する際に​​問題が発生します。forループをjavascriptに入れると、javascriptが機能します。エラーは発生せず、出力はありません。たとえば、firebugを使用すると、出力にバグがあります。

"'ANS"。'+'。「'ANS」。'+'。"'ANS" phpからこのようなテキストを出力すると、機能します。次のように単一のアンカーを出力すると、次のようになります。

'"' . '<a href="#">Text</a>' . '"';

しかし、これをforループに入れると、壊れてしまいます。多くのオプションを試しました。

function step1() {
            modalbox.show(new Element("div").insert(
                new Element("p", { "align": "justify" }).insert(
                    <?php $i = 0; ?>
                    <?php foreach ($items as $category => $itemsattr): $i++; ?>
                        <?php if($i == 27): ?>
                            <?= "'" . '<a class="category" href="#"> '. $category . '</a>' . "'" ?>
                        <?php endif; ?>
                            <?= "'" . '<a class="category" href="#"> '. $category . '</a>' . "'+" ?>
                    <?php endforeach; ?>
                )
            ), {
                "title"     : "Step 1/3",
                "width"     : 800,
                "options"   : [{
                    "label"     : "Next »",
                    "onClick"   : step2
                }]
            });
        };

このように1つだけ出力すると、機能します。

<?= "'" . '<a class="category" href="#">Text</a>' . "'" ?>

しかし、それをループに入れて、最後のものを除いてそれぞれの最後に'+を追加すると、それは壊れます。

私のforループは、Firebugでチェックするとこれを出力します。

'<a class="category" href="#"> Assault Ship</a>'+ '<a class="category" href="#"> Battlecruiser</a>'

私が知っていることから、これはjavascriptに有効であるはずですが、このような問題を回避するためにjavascriptを超えてphpを出力するためのより安全な別の方法はありますか?

4

1 に答える 1

1

これの代わりに:

<?php foreach ($items as $category => $itemsattr): $i++; ?>
    <?php if($i == 27): ?>
        <?= "'" . '<a class="category" href="#"> '. $category . '</a>' . "'" ?>
    <?php endif; ?>
        <?= "'" . '<a class="category" href="#"> '. $category . '</a>' . "'+" ?>
<?php endforeach; ?>



このようなことを試してみたらどうなりますか?

<?php echo "'"; ?>
<?php foreach ($items as $category => $itemsattr): $i++; ?>
    <?php if($i == 27): ?>
        <?= '<a class="category" href="#"> '. $category . '</a>' ?>
    <?php endif; ?>
        <?= '<a class="category" href="#"> '. $category . '</a>' ?>
<?php endforeach; ?>
<?php echo "'"; ?>



また、これで運が良くなるかもしれません。それはあなたが持っていたものよりもスケーラブルです:

<?php foreach ($items as $category => $itemsattr): $i++; ?>
    <?php if($i == 0): ?>
        <?= "'" . '<a class="category" href="#"> '. $category . '</a>' . "'" ?>
    <?php else: ?>
        <?= "+'" . '<a class="category" href="#"> '. $category . '</a>' . "'" ?>
    <?php endif; ?>
<?php endforeach; ?>

+と最初の条件の配置が異なることに注意してください。

他の人が言っているように、この一般的なアプローチは最善ではないかもしれませんが、これはあなたが持っているものをより良くするかもしれません...

于 2012-10-18T22:40:03.183 に答える