Включен php файл, вызывающий функцию Javascript - PullRequest
0 голосов
/ 11 мая 2010

Вот сделка. У меня есть index.php, который ссылается на внутренний файл JS в своем заголовке. Затем index.php включает другой файл .php, который выводит это: + add file. addFile () - это функция Javascript, определенная во внешнем файле JS.

При этом ничего не происходит, включенный php не «видит» функцию JS. Инкапсуляция JS во включенном PHP заставляет все это работать. Но я не хочу так делать.

Есть идеи?

EDIT:

вот источник

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Archie</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <link rel="stylesheet" href="/screen.css" type="text/css" media="screen"/>
        <script src="/lib/js/archie.js" type="text/javascript"></script>
    </head>
    <body>
        ...
        ...
        //included php starts here
        <form action="/lib/course.php" method="post">
            <fieldset>
                    <div id="addFileLocation"></div>
                <a href="#" onClick="addFile()">+ add file</a>          
                <input type="hidden" id="addFileCount" value="0"/>
            </fieldset>
        </form>
        //ends here
        ...
        ...
    </body>
    </html>

и JS:

<script type="text/javascript">
    //Dynamically add form fields

    //add file browser
    function addFile() {
        var location = document.getElementById('addFileLocation');
        var num = document.getElementById('addFileCount');
        var newnum = (document.getElementById('addFileCount').value -1)+ 2;
        num.value = newnum;
        var newname = 'addFile_'+newnum;
        var newelement = document.createElement('input');
        newelement.setAttribute('name',newname);
        newelement.setAttribute('type','file');
        location.appendChild(newelement);
    }

</script>

Ответы [ 3 ]

1 голос
/ 11 мая 2010

Посмотрев на пример кода, возможно, ваш href = "#" коротко замкнул обработчик onClick. Что произойдет, если вы измените якорь на:

            <a href="javascript:addFile();">+ add file</a>  
1 голос
/ 11 мая 2010

Возможно, что файл не был "загружен" браузером в тот момент, когда вызывается функция. Вот почему я использую функцию jQuery $ (document) .ready (). Если вы заключите вызов addFile в функцию, аналогичную jQuery «document ready» (которая просто ожидает загрузки всего документа браузером для выполнения кода js), то все ваши функции должны быть там. Что происходит, когда вы ждете, пока все это будет загружено, а затем вручную вызываете эту функцию в адресной строке браузера?

0 голосов
/ 12 мая 2010

Понял. Глупый я, я забыл удалить пару <script></script> из внешнего файла js. Спасибо за вашу помощь, Рич!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...