|
|
|
| есть js-функция search(ArrJS)
есть php-переменная $ArrForJS
$ArrForJS="{'user' : 'Иванов', 'book' : '4'}";
и есть <input type='hidden' id='test' value='".$ArrForJS."'>
вызов функции по событию onclick
так: search(".$ArrForJS.") - получается,
а так: search(document.getElementById('test').value) - не получается
Объясните, пожалуйста, почему.
Разве $ArrForJS не равно document.getElementById('test').value? | |
|
|
|
|
|
|
|
для: talka
(06.06.2009 в 20:26)
| | Приведите здесь кусочек кода, где есть этот <input> и где прописан вызов функции по onclick.
Только выводите не ваш начальный PHP-код, а код, полученный браузером (т.е. тот код, который можно посмотреть, нажав на кнопку "Вид --> Просмотр исходного кода"). | |
|
|
|
|
|
|
|
для: PAT
(06.06.2009 в 20:40)
| | Работает
<?php
$ArrForJS="{'user' : 'Иванов', 'book' : '4'}";
echo "<div onclick=\"search(".$ArrForJS.");\">test</div>";
?>
|
Не работает (из исходного кода)
<input type='hidden' id='test' value="{'user' : 'Иванов', 'book' : '4'}">
<div onclick="search(document.getElementById('test').value);">test</div>
|
| |
|
|
|
|
|
|
|
для: talka
(06.06.2009 в 21:49)
| |
<script>
function search(ArrJS) {
alert(ArrJS);
}
</script>
<?php
$ArrForJS="{'user' : 'Иванов', 'book' : '4'}";
echo "<input type='hidden' id='test' value=\"".$ArrForJS."\">";
echo "<div style='cursor:hand;' onclick=\"search(".$ArrForJS.");\">test</div>";
echo "<div style='cursor:hand;' onclick=\"search(document.getElementById('test').value);\">test2</div>";
?>
|
алерт test: [object Object] - правильно
алерт test2: {'user' : 'Иванов', 'book' : '4'} - нет
где-то здесь и ответ, видимо... Мне, правда, не видимо :( | |
|
|
|
|
|
|
|
для: talka
(06.06.2009 в 21:49)
| | 1. Беру ваш код :
<input type='hidden' id='test' value="{'user' : 'Иванов', 'book' : '4'}">
<div onclick="search(document.getElementById('test').value);">test</div>
|
2. Заменяю в нём всего одно слово:
<input type='hidden' id='test' value="{'user' : 'Иванов', 'book' : '4'}">
<div onclick="alert(document.getElementById('test').value);">test</div>
|
3. Запускаю в браузере, кликаю и констатирую - РАБОТАЕТ!!!
Алерт выдаёт строку, точно соответствующую той, коя записана в атрибуте VALUE инпута.
НИЧЕГО другого алерт показать и не может.
Тип данных, хранящихся в VALUE - всегда СТРОКА. И только СТРОКА.
Догадаться о том, что вы хотите видеть фактическую строку объектом браузер не может:-)
Ибо он не обладает (в отличие от вас) абстрактным мышлением. | |
|
|
|
|
|
|
|
для: PAT
(06.06.2009 в 23:26)
| | но почему тогда в функции алерт первого вариант "видит" объект? | |
|
|
|
|
|
|
|
для: talka
(06.06.2009 в 23:38)
| |
<?php
$ArrForJS="{'user' : 'Иванов', 'book' : '4'}";
echo "<input type='hidden' id='test' value=\"".$ArrForJS."\">";
echo "<div style='cursor:hand;' onclick=\"alert(".$ArrForJS.");\">test</div>";
echo "<div style='cursor:hand;' onclick=\"alert(document.getElementById('test').value);\">test2</div>";
?>
|
алерт test: [object Object]
алерт test2: {'user' : 'Иванов', 'book' : '4'}
вот этот момент я и прошу объяснить | |
|
|
|
|
|
|
|
для: talka
(06.06.2009 в 23:38)
| | Потому что ваш PHP-код делает следующее:
<input type='hidden' id='test' value="">
<script>
var s = {'user' : 'Иванов', 'book' : '4'};
document.getElementById ('test').value = "{'user' : 'Иванов', 'book' : '4'}";
alert (s); //видит ОБЪЕКТ
alert (document.getElementById ('test').value); //видит СТРОКУ
</script>
|
| |
|
|
|