2012-03-08 2 views
0

Я не понимаю здесь область действия. У меня есть кнопка при нажатии, показывает диалог с текстовым полем. Внутри этого текстового поля я заполняю его URL-адресом, который затем можно скопировать для настройки камеры.jquery function scope

<button id="axis-details" onclick="apikey('<?php echo $result_cameras[$i]["camera_hash"]; ?>');">API Key</button> 

function apikey(camerahash) 
{ 
    var $key = "http://myhost.com/notify.php/" +camerahash; 
    return $key; 
} 

$(document).ready(function() { 
    var $dialog = $('<div></div>'); 
$dialog.append('Please copy this key for camera setup: ') 
     .append('<p><textarea id=\"textbox\">'+apikey(camerahash)+'</textarea></p>') //ERROR here that camerahash is not defined 
     .append('<p>For more information see: <a href=\"http://www.myhost.com/forum/2-quickstart-docs\">setup</a></p>'); 
$dialog.dialog({ 
    autoOpen: false, 
    title: 'API Key' 
}); 

$('#axis-details').click(function(e) { 
    e.preventDefault(); 
    $dialog.dialog('open'); 
}); 
}); 

Функция apikey (camerahash) возвращает значение, которое я ожидаю. Я получил ошибку, указанную выше, что camerahash не определен. Что я делаю не так?

+0

В своем коде вы никогда не инициализировать 'camerahash' не так забыть что-то? –

+0

ошибка, указывающая, что camerahash не определен, потому что camerahash не определен ... не уверен, насколько яснее, чем может получить – jbabey

ответ

2

Я думаю, что это то, что вы на самом деле хотите:

<button id="axis-details">API Key</button> 

function apikey(camerahash) 
{ 
    var $key = "http://myhost.com/notify.php/" +camerahash; 
    return $key; 
} 

$(document).ready(function() { 
    var $dialog = $('<div></div>'); 
$dialog.append('Please copy this key for camera setup: ') 
     .append('<p><textarea id=\"textbox\">'+apikey(<?php echo $result_cameras[$i]["camera_hash"]; ?>)+'</textarea></p>') //ERROR here that camerahash is not defined 
     .append('<p>For more information see: <a href=\"http://www.myhost.com/forum/2-quickstart-docs\">setup</a></p>'); 
$dialog.dialog({ 
    autoOpen: false, 
    title: 'API Key' 
}); 

$('#axis-details').click(function(e) { 
    e.preventDefault(); 
    $dialog.dialog('open'); 
}); 
}); 
+0

Хотелось бы, чтобы все было так просто. Код php проходит через цикл, чтобы распечатать camera_hash. Спасибо за помощь, я думаю, у меня есть большая проблема. – Tom

+0

@TomPepernic Посмотрите на это: http://jsfiddle.net/tUQbQ/ – Lazarus

2

Она определяется только в функции apikey, вам необходимо также передать его в из метода JQuery,

.append('<p><textarea id=\"textbox\">'+apikey('<?php echo $result_cameras[$i]["camera_hash"]; ?>')+'</textarea></p>') 

Или еще проще, измените функцию не нужно вход,

function apikey() 
{ 
    var $key = "http://myhost.com/notify.php/" +'<?php echo $result_cameras[$i]["camera_hash"]; ?>'; 
    return $key; 
} 
+0

Или еще проще, не используйте функцию! – Archer

+0

@ Арчер действительно: P – Andrew