2012-03-08 104 views
0

我不理解函数范围。点击时我有一个按钮显示一个带有textarea的对话框。在那个textarea里面,我用一个网址填充它,然后有人可以为他们的相机设置进行复制。jquery函数范围

<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'没有你忘了什么? – 2012-03-08 16:20:52

+0

指出camerahash未定义的错误是因为camerahash没有定义......不知道可以得到多少明确 – jbabey 2012-03-08 16:25:54

回答

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 2012-03-08 18:13:50

+0

@TomPepernic看看这个:http://jsfiddle.net/tUQbQ/ – Lazarus 2012-03-09 10:55:31

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 2012-03-08 16:26:06

+0

@阿彻的确如此:P – Andrew 2012-03-08 16:27:43