Новости Joomla

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

0 Пользователей и 1 Гость просматривают эту тему.
  • 16 Ответов
  • 1380 Просмотров
*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
Пытаюсь динамически сформировать текст в модуле. Для тестов взял простой код (с w3schools.com) и поместил его в tmpl/default.php:
Код
<html>
<body>

<p id="demo">Click the button to make a BUTTON element with text.</p>

<button onclick="myFunction()">Try it</button>

<script>

function myFunction()
{
var btn=document.createElement("BUTTON");
var t=document.createTextNode("CLICK ME");
btn.appendChild(t);
document.body.appendChild(btn);
};

</script>

</body>
</html>



Если выполнить этот код вне модуля, то все работает. А этот же код внутри модуля не выполняется - кнопка "CLICK ME" не добавляется.
Буду признателен за помощь.



*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
Раз никто не ответил, то несколько изменю (упрощу ?) вопрос. Проблема возникла при написании модуля на AJAX. Все работает, кроме куска кода, где на javascript требуется изменять элементы DOM. В частности, не работает функция getElementById. Поэтому ищу первопричину. Может быть, такая постановка проблемы известна специалистам по Joomla  и есть для нее решение ?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
зачем в модуле <html> и <body>?
это прописывается в шаблоне
*

varX

  • Живу я здесь
  • 2467
  • 141 / 5
  • разработка компонентов
Такая постановка проблемы не достаточна, чтобы выявить первопричину.  Исходя из того, что вы меняете DOM через AJAX, причин может быть неограниченное множество. Приведите код полностью.
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
выкиньте <html><body> и остальное в модуль flexi custom mode пихайте! или в любой другой модуль, где можно скрипты ставить! джед вам в помощь!
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
1. Насчет AJAX - думаю, нет смысла усложнять постановку задачи. У меня не работает и простой модуль, где из javascript выполняется работа с DOM. Дайте, пожалуйста, если можете пример модуля, где работает динамический вывод текста из javascript в модуле (аналогичный моему тестовому примеру).
2. Я пробовал вставить этот код
Код
<p id="demo">Click the button to make a BUTTON element with text.</p>

<button onclick="myFunction()">Try it</button>

<script>

function myFunction()
{
var btn=document.createElement("BUTTON");
var t=document.createTextNode("CLICK ME");
btn.appendChild(t);
document.body.appendChild(btn);
};

</script>

в модули "Any copde" и "Custom javascript" и везде не добился нужного результата: "CLICK ME" не появляется.


*

varX

  • Живу я здесь
  • 2467
  • 141 / 5
  • разработка компонентов
Правильно, что ничего не появляется.
appendChild(t); - t у вас разве обьект?
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
Просьба взять этот код вне Joomla и выполнить его. Все отлично работает: CLICK ME появляется.
*

varX

  • Живу я здесь
  • 2467
  • 141 / 5
  • разработка компонентов
Просьба взять этот код вне Joomla и выполнить его. Все отлично работает: CLICK ME появляется.

Выполняться он может по разным причинам, но вовсе не обязан этого делать. Вот так обязан:
Код: javascript
function myFunction(){
var btn=document.createElement("BUTTON");
btn.innerHTML="CLICK ME";
document.body.appendChild(btn);
};
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
1. Я привык доверять сайту w3schools.com и сам проверил свой тестовый код. Вот мой тестовый пример с этого сайта:
http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_document_createelement2

Ваш код работает у меня вне joomla: CLICK ME появляется. А вы можете проверить ваш код внутри модуля Joomla ? Если он у вас работает (CLICK ME появляется), то значит проблема у меня.  

2. Я проверил работу вашего кода внутри модулей flexi custom mode, any code и custom javascript: везде CLICK ME у меня не появляется. У меня возникло подозрение, что, возможно, какой-то plugin "портит картину" и надо будет поэтапно отсекать подозрительные плагины.
« Последнее редактирование: 29.09.2013, 22:49:50 от FIORD_CMS »
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
2. Я проверил работу вашего кода внутри модулей flexi custom mode, any code и custom javascript: везде CLICK ME у меня не появляется. У меня возникло подозрение, что, возможно, какой-то plugin "портит картину" и надо будет поэтапно отсекать подозрительные плагины.
угу, включить консоль FireBug или что там используется для отладки и смотреть на предмет ошибок JS
*

fsv

  • Живу я здесь
  • 2781
  • 411 / 2
У меня не работает и простой модуль, где из javascript выполняется работа с DOM.
...Я пробовал вставить этот код
Код
<p id="demo">Click the button to make a BUTTON element with text.</p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction()
{
var btn=document.createElement("BUTTON");
var t=document.createTextNode("CLICK ME");
btn.appendChild(t);
document.body.appendChild(btn);
};
</script>
в модули "Any copde" и "Custom javascript" и везде не добился нужного результата: "CLICK ME" не появляется.

А где вы новую кнопку пытались увидеть? В модуле? Посмотрите в подвале сайта, там их пачка будет после нескольких кликов.
У меня в модуле ваш код работает, но добавляет, естественно, в конец body.
А так - в модуле:
Код: javascript
<button onclick="myFunction()">Try it</button>
<div id="mydiv"></div>
<script>
function myFunction()
{
var btn=document.createElement("BUTTON");
var t=document.createTextNode("CLICK ME");
btn.appendChild(t);
//document.body.appendChild(btn);
document.getElementById("mydiv").appendChild(btn);
};
</script>
Веб-разработка: заказ. Только новая разработка.
*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
Спасибо. Все заработало. Теперь можно двигаться дальше. Не могли бы вы подсказать(надеюсь, что мой вопрос не украдет у вас слишком много времени), как правильно вставить аналогичную Javascript-функцию в php-код в модуле (в файл tmpl/default.php)? Я пытался вставить следующим образом (вызов функции myFunction1 в функции getData), но она не отрабатывает (в приведенном коде много отладочно-тестового вывода - просьба строго не судить, я не являюсь опытным web программистом):
Код
<?php 

echo

"<script language='javascript'>

      var XMLHttpRequestObject = false;
      var responseText;

      if (window.XMLHttpRequest) {
        XMLHttpRequestObject = new XMLHttpRequest();
      }
      else  if (window.ActiveXObject)
      {
        XMLHttpRequestObject = new
        ActiveXObject('Microsoft.XMLHTTP');
      }

      function getData(dataSource)
      {
    myFunction1();

if(XMLHttpRequestObject) {

          XMLHttpRequestObject.open('GET', dataSource);

          XMLHttpRequestObject.onreadystatechange = function()
          {

            if (XMLHttpRequestObject.readyState == 4 &&
              XMLHttpRequestObject.status == 200) {
responseText = XMLHttpRequestObject.responseText;
alert(responseText);
            }
          }

          XMLHttpRequestObject.send(null);
        }
      }

</script>";

$add_val_text="2";
$mod_link='/modules/mod_show_currency/tmpl/get_currency.php?add_value_text='.$add_val_text;

$output='<div id="show_currency"> <p >'.date("d/m/Y H:i:s").'</p> </div>';

// Call AJAX function getData
echo  "<script language='javascript'> getData('$mod_link'); </script>";


echo $add_val_text;
echo $output;


?>

<button onclick="myFunction()">Try it</button>
<div id="mydiv"></div>

<button onclick="myFunction1()">Show currency</button>
<div id="show_currency_id"></div>

<script>

function myFunction()
{
var btn=document.createElement("BUTTON");
var t=document.createTextNode("CLICK ME");
btn.appendChild(t);
document.getElementById("mydiv").appendChild(btn);
};


function myFunction1()
{
var btn1=document.createElement("BUTTON");
var t1=document.createTextNode("New currency");
btn1.appendChild(t1);
document.getElementById("show_currency_id").appendChild(btn1);
};
</script>

*

fsv

  • Живу я здесь
  • 2781
  • 411 / 2
Я пытался вставить следующим образом (вызов функции myFunction1 в функции getData), но она не отрабатывает

Переместите следующий код вверх, над всем остальным кодом, указанным в последнем вашем посте.
Код: javascript
<button onclick="myFunction()">Try it</button> 
<div id="mydiv"></div>
<button onclick="myFunction1()">Show currency</button>
<div id="show_currency_id"></div>
<script>
function myFunction() {
var btn=document.createElement("BUTTON");
var t=document.createTextNode("CLICK ME");
btn.appendChild(t);
document.getElementById("mydiv").appendChild(btn);
};
function myFunction1() {
var btn1=document.createElement("BUTTON");
var t1=document.createTextNode("New currency");
btn1.appendChild(t1);
document.getElementById("show_currency_id").appendChild(btn1);
};
</script>
Должно заработать.

[spoiler title=Пожелания...]Убирайте отладочную информацию из кода.
Невозможно читать код, форматируйте.
Приводите тексты ошибок из консоли. Тут этого было бы достаточно.[/spoiler]
Веб-разработка: заказ. Только новая разработка.
*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
Спасибо, но вы не совсем поняли мою проблему. По нажатию кнопки "New currency" функция myFunction1 и уменя вызывается нормально. Меня же интересует неработоспособность этой функции из функции getData:
Цитировать
(вызов функции myFunction1 в функции getData), но она не отрабатывает
*

fsv

  • Живу я здесь
  • 2781
  • 411 / 2
Понял. Я не про кнопку "New currency". А именно про
интересует неработоспособность этой функции из функции getData:
Работает. Вы попробовали перенести код? Вы не используете обработчик загрузки страницы. И хотите в одной функции использовать другую, еще не прочитанную.
Веб-разработка: заказ. Только новая разработка.
*

FIORD_CMS

  • Захожу иногда
  • 119
  • 3 / 0
Замечательно - заработало. Я благодарен за очень конструктивную помощь.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема с логином на сайт через Iphone

Автор AdmiralSFF

Ответов: 4
Просмотров: 2617
Последний ответ 13.08.2022, 13:19:41
от AdmiralSFF
Проблема с переносом Joomla сайта с хостинга на денвер

Автор 62411

Ответов: 4
Просмотров: 2145
Последний ответ 21.02.2022, 20:22:11
от arma
Проблема Adobe Flash Player

Автор MamontFirst

Ответов: 5
Просмотров: 1548
Последний ответ 23.01.2021, 21:25:23
от MamontFirst
Проблема с редактированием материалов

Автор olesya

Ответов: 15
Просмотров: 3336
Последний ответ 12.07.2020, 12:46:06
от NataliS
Проблема со страницей "Общие настройки" - Joomla 2.5

Автор sultan7

Ответов: 20
Просмотров: 2864
Последний ответ 20.10.2019, 18:24:21
от sultan7