如何使JS适合if语句

时间:2013-03-30 12:42:16

标签: php javascript magento

我希望将一些JavaScript放入PHP中。如下。但是我不能让它正常工作,建议?

    if ($_option->getTitle() == 'Condition') {
            '<script language="javascript">
function displayCondition() {
condition = new Array("Please Select a Condition.","<b>Perfect:</b> Text to explain perfect condition!", "<b>Excellent:</b> Text to explain excellent condition!", "<b>Good:</b> Text to explain good condition!", "<b>Poor:</b> Text to explain poor condition!", "<b>Broken:</b> Text to explain broken condition!");
var getsel = document.getElementById(\'select_'.$_option->getId().'\').value;
document.getElementById("divId").innerHTML = condition[getsel];
}
</script>';
            $extraParams .= ' onchange="opConfig.reloadPrice();displayCondition();"';
        } else if 
            ($_option->getTitle() == 'Original Packaging') {
            $extraParams .= ' onchange="opConfig.reloadPrice();Select(select_'.$_option->getId().',\'divShow\',2);"';
        } else {
            $extraParams .= ' onchange="opConfig.reloadPrice();"';
        }

4 个答案:

答案 0 :(得分:1)

当你混合使用PHP和HTML(包括JavaScript)时,你必须注意PHP开始标记:

if ($_option->getTitle() == 'Condition') {
    // go out of PHP
    ?>
    <script language="javascript">
       function displayCondition() {
         condition = new Array("Please Select a Condition.","<b>Perfect:</b> Text to explain perfect condition!", "<b>Excellent:</b> Text to explain excellent condition!", "<b>Good:</b> Text to explain good condition!", "<b>Poor:</b> Text to explain poor condition!", "<b>Broken:</b> Text to explain broken condition!");
         var getsel = document.getElementById('select_<?php echo $_option->getId(); ?>').value;
         document.getElementById("divId").innerHTML = condition[getsel];
       }
    </script>
    <?php
    // back to php
    $extraParams .= ' onchange="opConfig.reloadPrice();displayCondition();"';

你也可能试图制作一个大echo,但这涉及到处理引用擒纵机构并且通常更重。

答案 1 :(得分:0)

请确保回复<script>

<?php if (condition) {
  echo '<script> //do stuff </script>';
?>

或者使用alternative syntax for control structures<script>纳入页面

<?php if (condition): ?>
  <script> //do stuff </script>
<?php endif; ?>

答案 2 :(得分:0)

你可以这样写

 $extraParams = "";
if ($_option->getTitle() == 'Condition') {
$extraParams .= '<script>...you script </script>';

$extraParams .= ' onchange="opConfig.reloadPrice();displayCondition();"';
    } else if 
        ($_option->getTitle() == 'Original Packaging') {
        $extraParams .= ' onchange="opConfig.reloadPrice();Select(select_'.$_option->getId().',\'divShow\',2);"';
    } else {
        $extraParams .= ' onchange="opConfig.reloadPrice();"';
    }

答案 3 :(得分:0)

在处理PHP中的大型标记时,您应该使用PHP's HEREDOC

$script_tage = <<<HEREDOC
<script language="javascript">
    function displayCondition() {
    condition = ["Please Select a Condition.","<b>Perfect:</b> Text to explain perfect condition!", "<b>Excellent:</b> Text to explain excellent condition!", "<b>Good:</b> Text to explain good condition!", "<b>Poor:</b> Text to explain poor condition!", "<b>Broken:</b> Text to explain broken condition!"];
    var getsel = document.getElementById('select_'.{$_option->getId()}).value;
    document.getElementById("divId").innerHTML = condition[getsel];
</script>
HEREDOC;


if ($_option->getTitle() == 'Condition') {
    echo $script_tag;
}

注意 - HEREDOC无需转义任何内容。要在HEREDOC字符串中输入变量,只需将它们放在像{$foo}这样的大括号中。