Я работаю над дополнением для Confluence. Я использую Apache Velocity и Js. Когда я распечатываю свой шаблон, я не получаю возврата из своего JS-файла, в котором я использую jQuery. Как я могу правильно установить связь между этими двумя? Спасибо!
jQuery(function ($) {
var initmyConfluenceMacro = function ()
{
$(".myConfluenceMacro").each(function()
{
var html = "wadup";
var dayDates = $(this).find("input.dayDates").val();
html = html + dayDates;
$(this).html(html);
});
};
$(document).ready(function()
{
initmyConfluenceMacro();
});
});
#requireResource("confluence.web.resources:jquery")
#requireResource("com.atlassian.tutorial.myConfluenceMacro:myConfluenceMacro-resources")
My variables : $myCustomVar
My variable js:
<div class = "myConfluenceMacro">
<fieldset class = "parameters hidden">
<input type = "hidden" class = "dayDates" value = "YO! Was up dude?">
</fieldset>
</div>
@Pointy убеждаюсь, что он действительно готов
Вам нужно отладить и выяснить, почему его не находят. Я предполагаю, что что-то загружается динамически, и вы пытаетесь найти это до того, как оно появится на странице. console.info и отладчик - ваши друзья.
@epascarello На самом деле я хочу передать значение из .vm в js. Значение уже установлено. Но все равно ничего не получаю. Может быть, есть лучший способ установить связь между .js и .vm? Я не могу найти ни одного хорошего примера, где я мог бы увидеть передачу переменных с обеих сторон.
Что ж, одна вещь, которую вы можете исследовать, - это console.info($(".myConfluenceMacro").length) до вызова .each(). Это скажет вам, содержит ли DOM какие-либо экземпляры содержимого макроса после расширения.
@Pointy Я пробовал это: $ (document) .ready (function () {var html = "Я ЗДЕСЬ"; $ (this) .html (html); // initmyConfluenceMacro ();}); а я все равно ничего не получаю :(
@Pointy Я не вижу файл журнала :( Это не мой экземпляр слияния, поэтому у меня нет доступа к журналу. Я могу только загрузить банку напрямую и увидеть результат ...
Вы просматриваете полученный контент в браузере? Вот где идет console.info().
О, спасибо! @Pointy Я всегда открывал файл журнала и смотрел. Спасибо за совет!
@Pointy Я получаю следующее сообщение об ошибке: «Ошибка при запуске пакетного сценария».
Что ж, если в вашем сценарии есть какая-то ошибка, это, безусловно, объясняет, почему он не работает. Ошибки JavaScript могут быть немного запутанными, но ошибка должна точно сказать вам, что она считает неправильным: синтаксическая ошибка, исключение, что угодно; а также где в коде произошла ошибка.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я справился. Вот так, он работает, и я получаю HTML обратно!
$(document).ready(function(){
$(".myConfluenceMacro").each(function(){
$(this).html("Hello <b>world!</b>");
});
});
<script type = "text/javascript">
#include( "templates/currencyDetail.js")
</script>
<body>
<div class = "myConfluenceMacro">
</div>
Нет смысла вкладывать установку
$(document).ready()в "готовый" обработчик.