2010-01-04 7 views
0

Я пытающаяся поставить переменный PHP внутри яваскрипта функции и не имеющая никакой удачи, вот что я получилPHP переменные внутри яваскрипта функции

<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; 

Я своего рода новичок в этом, если вы еще не заметили, спасибо заранее :)

+0

попытался просмотреть источник html? Возможно, вам захочется увидеть, что возвращает '$ xpos' и' $ ypos'. – mauris

+0

поблагодарить u за такой быстрый ответ, я пробовал повторять переменную, и он возвращает правильный номер, я должен был также упомянуть, что изначально переменная назначается из $ _GET, которая отправляется на предыдущей странице –

+0

что-то не так с цитатой может быть? – moritz

ответ

2

стараются не положить двойные кавычки.

echo $xpos; 
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

+0

. Чтобы усилить ответ выше, вы также можете использовать синтаксис для распечатки xpos но объем по-прежнему имеет значение, и он не будет работать в некоторых установках (из-за установки php.ini). Поэтому я лично не рекомендую этот метод. – DeveloperChris

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 должен иметь только одно выражение, которое возвращает ложь, так что вы бы идеально оберните его в функцию в другом месте. Здесь я использовал анонимный один

Также onclick не нужно начинать с 'javascript:, так как это уже неявно так.

+0

Предполагая, что 'dd' - это имя формы, вы также не должны использовать' window.dd' или 'dd'-as-variable name. Это будет работать (иногда) только на IE.Используйте 'document.forms.dd.elements'. Наконец, для здравого смысла подумайте о переносе функции многострочного обработчика в блок или внешний скрипт '