2013-04-17 2 views
0

Я получаю следующее сообщение об ошибке с помощью инструментаФункция Java Script не определена

Uncaught ReferenceError: searchRequests is not defined searchProcess.php:174 onclick.

хром разработчика Когда я нажимаю на гиперссылке, полученной из engine.php, я не получаю уведомление от функции searchRequests. Я не уверен, в чем проблема, я ценю любой совет. Вот мой код:

searchProcess.php

<?php 
include '../include/engine.php'; 
?> 

<html> 
<head> 
<script type="text/javascript" src="../jQuery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 

    var instrID; 
    var cat; 

    $(window).load(function(){ 

    }); 

    var newheight = $(window).height(); 


    function searchRequests(instr) 
    { 

     alert("in searchResults"); 
     instrID = instr; 
     alert(instrID); 

    } 

    }); 

</script> 
</head> 
<body> 
<?php 
    drawSearchResults($var1, $var2, $var3, $var3, $var4); 
?> 
</body> 
</html> 

engine.php

<?php 
function drawSearchResults($var1, $var2, $var3, $var4, $var5) 
{ 
while($row = mysql_fetch_assoc($result)) 
{ 
    echo ("<tr>"); 
     echo ("<td id='InstrumentID'><a href='javascript:void(0);' onclick='searchRequests($row[InstrumentID])'>$row[InstrumentID]</a></td>"); 
    echo ("</tr>"); 
} 
?> 
+5

Переместить 'function searchRequests' куда-нибудь вне' $ (document) .ready() ' –

+0

или, может быть, исправить путь jQuery? – HamZa

ответ

2

Проблема в том, что функция searchRequests не входит в объем за пределами $(document).ready(). Переместите его за пределы $(document).ready().

В общем, вы не должны вставлять свой javascript в html. Гораздо приятнее:

$('#InstrumentID a').click(someFunctionThatIsInScope); 

И вы можете поместить этот код в $(document).ready() блоке. Кроме того, функция, которую вы вызываете, получит объект события, который вы можете использовать для получения любых значений, которые могут потребоваться из разметки.

+1

спасибо за помощь! – user908759

0

Поскольку это является частным. Вы скрываете его из глобальной области действия, так как он находится внутри готовой функции. Не используйте встроенные обработчики событий, используйте для() для присоединения событий!

Смежные вопросы