2013-03-30 45 views
-2

我想將一些JavaScript放入PHP中。如下所示。然而,我無法讓它正常工作,建議?如何將JS放入if語句中

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

這是什麼意思,「無法正常工作」?它做什麼,你期望它是什麼? – deceze

+0

JavaScript部分不起作用。條件滿足時不會將其打印在代碼中。 – Jordan

+2

也許是因爲你只是創建一個字符串,但不*輸出*它? – deceze

回答

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,但涉及到處理報價擒縱並通常較重。

+0

有一個PHP的一部分,你錯過了這個js –

+0

@MarkoD是的。編輯這些長行很難... –

+0

謝謝你完美的作品。現在我有一個不同的問題。我會提出一個新問題。你太好了。 – Jordan

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