一个javascript函数里面的PHP变量

时间:2010-01-04 02:28:09

标签: php javascript

我试图将一个php变量放在一个javascript函数中并且没有运气,这就是我得到的

<a class="code" href="javascript:void(0);"
   onclick="javascript:if(window.dd && dd.elements) 
   d.elements.name1.moveTo(<? echo "$xpos"; ?>, <? echo "$ypos"; ?>);
   return false;">
name1.moveTo(name1.x-20, name1.y+7);</a>

`

moveTo()函数在我发送javascript变量或简单数字时效果很好。

它在php变量中的原因是因为我需要xpos在一个会话变量里面才能在其他地方访问。之后我将其分配如下

$_SESSION['productcheck']['x'] = $xpos;

我对此有点新鲜,如果您还没有注意到,请提前感谢您:)

3 个答案:

答案 0 :(得分:2)

尽量不要加双引号。

echo $xpos;

答案 1 :(得分:2)

这只是为了澄清,但您似乎有一个拼写错误(d应为dd)。校正:

<a class="code" href="javascript:void(0);"
   onclick="return (function () {
       if(window.dd && dd.elements) 
           dd.elements.name1.moveTo(<? echo $xpos; ?>, <? echo $ypos; ?>);
       return false; 
    })()"
>
    name1.moveTo(name1.x-20, name1.y+7);
</a>

一些问题:

  • 您不需要PHP变量interrpolation,$xpos本身就可以了
  • onclick应该只有一个返回false的表达式,所以你最好将它包装在其他地方的函数中。我在这里用了一个匿名的

另外,onclick不需要以'javascript:开头,因为它已经隐含了。

答案 2 :(得分:0)

我的猜测是xpos和ypos在处理页面的部分时不在范围内。

范围指的是封闭的大括号。例如,以下将无法正常工作

$xpos = 100;

function printx(){
  echo $xpos; // enclosing quotes not required
}

// call the function
printx();

什么都不打印

修复它使用以下

$xpos = 100;

function printx(){
  global $xpos;
  echo $xpos; // enclosing quotes not required
}

// call the function
printx();

然后打印100

相关问题