我希望将一些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();"';
}
答案 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}
这样的大括号中。