У меня проблемы с вызовом функции из php, у меня правильный код, но по какой-то причине функция не вызывается, кто-нибудь может увидеть причину, почему не из этого кода. Заранее спасибо.
Код кажется хорошим, и, насколько я знаю, он должен запускать вызов функции, однако я довольно новичок в php, поэтому я могу где-то что-то не так, но я не получаю ошибок от php или jscript, поэтому я не уверен, что я что-то упустил Вот. Идея кода состоит в том, чтобы изменить класс меню навигации.
<script>
function removeleftnav(){
document.getElementById('leftnav').classList.remove("leftnavin");
document.getElementById('leftnav').classList.add("leftnavout");
document.getElementById('html').style.width="window.innerwidth";
document.getElementById('mainwrap').classList.remove("mainwrap");
document.getElementById('mainwrap').classList.add("mainwrapnonav");
document.getElementById('centralcolumn').style.left = "0%";
document.getElementById('centralcolumn').style.width="100%";<?php $showingleftnav="no";?>;
console.log("$phpNO"+"<?php echo $showingleftnav; ?>");
document.getElementById('leftnavform1').value = ("<?php echo $showingleftnav; ?>");
document.getElementById('leftnavform2').value = ("<?php echo $showingleftnav; ?>");
document.getElementById('leftnavform3').value = ("<?php echo $showingleftnav; ?>");
document.getElementById('leftnavform4').value = ("<?php echo $showingleftnav; ?>");
}</script><script>
function retrieveleftnav(){document.getElementById('leftnav').classList.add("leftnavin");
document.getElementById('leftnav').classList.remove("leftnavout");
document.getElementById('html').style.width="window.innerwidth";
document.getElementById('mainwrap').classList.add("mainwrap");
document.getElementById('mainwrap').classList.remove("mainwrapnonav");
document.getElementById('centralcolumn').style.left = "0%";
document.getElementById('centralcolumn').style.width="83%";
<?php $showingleftnav="yes";?>;
console.log("$phpYES"+"<?php echo $showingleftnav; ?>");
document.getElementById('leftnavform1').value = ("<?php echo $showingleftnav; ?>");
document.getElementById('leftnavform2').value = ("<?php echo $showingleftnav; ?>");
document.getElementById('leftnavform3').value = ("<?php echo $showingleftnav; ?>");
document.getElementById('leftnavform4').value = ("<?php echo $showingleftnav; ?>");
}
</script><?php echo "should be changing here"; ?>
<?php if ($showingleftnav=="yes") { echo" <script>
function () { retrieveleftnav(); }; </script> "; };
if ($showingleftnav=="no") { echo" <script>
function() {removeleftnav(); }; </script> "; };
?>
Здесь нужно помнить пару вещей. Во-первых, PHP будет запускать этот файл сверху вниз, чтобы сгенерировать для вас HTML-страницу. В вашем коде $showingleftnav
будут всегда равно «да» к тому времени, как вы дойдете до нижней части страницы. Это связано с тем, что код PHP будет выполняться на сервере до запуска JavaScript в браузере.
Похоже, что вы хотите вызвать определенную функцию JS на основе значения этой переменной PHP. Чтобы это работало, я бы предложил вам использовать что-то более динамичное, например ПОЛУЧИТЬ переменной и передать это значение через URL, а не жестко кодировать его значение в скрипте.
Тем не менее, я думаю, что реальная проблема заключается в том, что ваши вызовы JavaScript на самом деле не вызывают ваши методы JS.
Чтобы получить то, что вам нужно, я бы предложил что-то более похожее на конец файла (опять же, используя параметр GET, а не жестко заданный):
<?php
if ($_GET['showingleftnav'] == "yes") {
echo " retrieveleftnav();";
} else {
echo " removeleftnav();";
}
Других решений пока нет …