Передача переменных Javascript - PullRequest
4 голосов
/ 18 мая 2011

Я пытаюсь передать переменную в JavaScript. Я создаю ссылку следующим образом, и все, кажется, работает.

label.innerHTML = '<a href="#" onclick="show_box(this);"> link</a>';

Однако, когда я создаю ссылку следующим образом, где ссылка также передает соответствующий объект, я получаю следующую ошибку из firebug -> «missing] after list list»

label.innerHTML = '<a href="#" onclick="show_box(this,'+object+');"> link</a>';

Является ли это приемлемым способом передачи объекта в функцию. Проблема в том, что я создаю эту ссылку внутри функции. Функция создает подобные ссылки на основе объекта, который передается ей. Поэтому я не могу иметь этот «объект» в качестве глобальной области видимости.

Ответы [ 3 ]

7 голосов
/ 18 мая 2011

Вы строите сценарий, объединяя строки, поэтому вы можете работать только со строками, и object будет автоматически преобразован в строку.

Вместо этого используйте DOM.

var link = document.createElement('a');
link.href = "#"; // Have a more sensible fall back for status bar readers and middle clickers
link.appendChild(document.createTextNode(' link');
link.addEventListener('click',function () { show_box(this, object); },false);
label.appendChild(link);

… но используйте библиотеку, которая абстрагирует нестандартные модели событий, которые есть в некоторых браузерах.

1 голос
/ 18 мая 2011

То, что вы пытаетесь сделать, это передать содержимое object на вывод. Поскольку это объект, строковое представление будет выглядеть примерно так: [object Object]. Выходной HTML будет выглядеть так:

<a href="#" onClick="show_box(this, [object Object]);">link</a>

, что недействительно. Не пытайтесь объединить объект, просто передайте его в качестве другого аргумента функции, например this. Или, что еще лучше, используйте jQuery:

<!-- somewhere in the head, or at least after the object is defined -->
<script type="text/javascript">
$(function() {
    $('#thelink').click(function() { show_box(this, object); });
});
</script>

...

<a href="#" id="thelink">link</a>
0 голосов
/ 18 мая 2011

Если ваш объект представляет собой простую переменную, такую ​​как числовая или строковая переменная, тогда это будет Ok, но если вы передаете html-объект, он не будет работать, потому что это будет что-то вроде ниже

...