Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Работа eval, a также просто основы синтаксиса JS


Автор: AKAPEL 5.10.2009, 20:15
Привет уважаемые форумчане, я только начинаю изучать Javascript.Сразу столкнулся с неприятностью.
Имею функцию заключенную в переменную, но никак не могу выполнить ее в javascript:-(
Код

function a($funk)
{
$funk=str_replace("\r\n",'',$funk);
$funk=str_replace("\n",'',$funk);

$content='
<script>
            eval($funk);
</script>';

return $content;
}


Что я не правильное делаю.Пожалуйста, только без флуда, я весь инет уже перерыл(

Автор: NLspieler 5.10.2009, 20:28
1. Переменные пишутся без знака $

2. Функции str_replace() в js нет

3. 
Код

$content='
<script>
            eval($funk);
</script>';

Так писать нельзя. 
Нужно писать в одну строчку.

4. Где отступы?

Добавлено через 8 минут и 59 секунд
Вот рабочее решение. 
Код

<script type="text/javascript">
function str_replace (search , replace , string)
{
    if (search == '') return string ;
    var s = "" ;
    while (true)
    {
        i = string.indexOf (search) ;
        if (i >= 0) 
        {
            s = s + string.substr (0 , i) + replace ;
            string = string.substr (i + search.length) ;
        }
        else break ;
    }
    return s + string;
}

function a(funk)
{
    funk = str_replace("\r\n" , '' , funk);
    funk = str_replace("\n" , '' , funk);
    var content = "<script>eval(" + funk + ");</sc" + "ript>";
    return content ;
}
alert (a("Превед")) ;
</script>

Автор: Amphiluke 5.10.2009, 20:51
Если вы пишете в PHP, то знак конкатенации — точка. Вы же вшиваете переменную $funk в скрипт в виде строки "$funk", которую Javascript не поймет.

Вот как-то так:
Код

<?php
   function a($funk) {
      $funk=str_replace("\r\n","",$funk);
      $funk=str_replace("\n","",$funk);
      $content="<script type=\"text/javascript\">" . $funk . "</script>";
      return $content;
   }
echo(a("alert('Hello world!')"));
?>


Добавлено через 9 минут и 29 секунд
Да, и кстати, при использовании двойных кавычек можно без конкатенаций:
Код

$content="<script type=\"text/javascript\">$funk</script>";

Автор: AKAPEL 5.10.2009, 21:08
Amphiluke,спасибо, это мне и нужно было.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)