如何将JS放入if语句中

How to fit JS into if statement

本文关键字:if 语句 放入 JS      更新时间:2023-09-26

我想在PHP if中加入一点JavaScript。像下面。但是我不能让它正常工作,建议?

    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();"';
        }

当你混合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,但这涉及到处理引号擒纵行,并且通常更重。

一定要回显<script>

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

或者使用控制结构的其他语法将<script>包含到页面

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

你可以这样写

 $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();"';
    }

在处理PHP中的大标记时,应该使用PHP的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}