проблема с использованием getElementById (). getValue в FBJS / Facebook! - PullRequest
3 голосов
/ 13 марта 2011

Я использую этот код для генерации скрытого HTML-кода в Facebook:

echo "<div id=\"y257y\" style=\"display:none;\">".$fdesc."</div>";

И я пытаюсь вернуть этот элемент в JS, используя следующий код

newVal=document.getElementById('y257y').getValue();

Но я получаю сообщение об ошибке: Undefined

Может ли кто-нибудь любезно помочь мне?

Спасибо.

- Ahsan

Ответы [ 2 ]

4 голосов
/ 13 марта 2011

Вместо:

newVal = document.getElementById('y257y').getValue();

попробуйте использовать:

newVal = document.getElementById('y257y').innerHTML;

Используете ли вы какую-либо библиотеку JavaScript, такую ​​как jQuery или Prototype?Если вы используете jQuery:

newVal = $('#y257y').html();

Другие предложения:

Используйте скрытый элемент формы:

echo "<input type=hidden id=y257y value=\"$fdesc\">";

и в JavaScript:

newVal = document.getElementById('y257y').value;

Или просто выведите тег <script>:

echo "<script>newVal = \"$fdesc\";</script>";

, и нет необходимости находить значение в DOM - оно уже в JavaScript.

0 голосов
/ 13 марта 2011

Попробуйте использовать текстовую область? Поскольку, по крайней мере, у вас может быть метод getValue, если вам действительно повезет:

$fdesc = str_replace('<', '&lt;', $fdesc);
$fdesc = str_replace('>', '&gt;', $fdesc);

echo "<textarea id=\"y257y\" style=\"display:none;\">".$fdesc."</textarea>";
newVal=document.getElementById('y257y').getValue();
newVal = newVal.replace("&gt;", ">")
newVal = newVal.replace("&lt;", "<")

Но что-то подсказывает мне, что это не сработает для вас, Facebook может не понравиться. Кажется проще просто сделать это:

$fdesc = <<<EOD
 <div>Here is your html</div>
 <p>And some more </p>
EOD;

$fdesc = str_replace("'", "\'", $fdesc);   //Escape single quotes
$fdesc = str_replace("\n", "";', $fdesc);   //Get rid of line breaks

 echo "var fdesc = '$fdesk';";
...