将随机生成的值发送到javascript函数onclick

将随机生成的值发送到javascript函数onclick,javascript,dojo,Javascript,Dojo,我有一个场景,需要将随机生成的id传递给javascript函数,但javascript函数无法识别。Iam使用dojo增强网格。代码如下: function(value, rowIndex) { var Id = this.grid.getItem(rowIndex).ID; alert("ID+ " + Id);//retriving the id value correctly return "<img src

我有一个场景,需要将随机生成的id传递给javascript函数,但javascript函数无法识别。Iam使用dojo增强网格。代码如下:

function(value, rowIndex) {
            var Id = this.grid.getItem(rowIndex).ID;
            alert("ID+ " + Id);//retriving the id value correctly
            return  "<img src=../img/smiley.jpg width=\"20\" height=\"20\" onClick=\"showData(\''+Id +'\')\" class=\"display\">"  ;
        };

<script>
function showData(id){
alert(id);//unable to get the id here..
}
</script>
函数(值,行索引){
var Id=this.grid.getItem(rowIndex).Id;
警报(“ID+”+ID);//正确检索ID值
返回“”;
};
函数showData(id){
警报(id);//无法在此处获取id。。
}

提前谢谢。

听者的引语被弄乱了。我倾向于对HTML使用双引号,对脚本使用单引号,并根据需要嵌套:

return  '<img src="../img/smiley.jpg" width="20" height="20" onclick="showData(\'' + Id + '\');" class="display">';
返回“”;
此外,我更喜欢对所有属性名称使用小写,并引用所有值,而不仅仅是那些严格需要它的值


最后,按照惯例,以大写字母开头的变量名是为构造函数保留的,因此您应该在工作警报后使用
id
而不是
id

调用
showDate(id)
函数。如果要在不调用函数的情况下使用
Id
,则必须将
var Id
置于函数外部。当您试图在
showData
功能中向其发出警报时,您处于另一个作用域中。Javascript也是区分大小写的,因此您必须使用
Id
而不是
Id
@GuyY我无法在警报后调用showDate(Id)函数,因为我希望有onClick事件,当我单击图像时,应该调用该函数,将该Id传递给javascript函数,因为我必须使用该Id处理更多内容。这是他们的任何执行方式。谢谢。我不明白你的确切意思。但是,您是否已经用
lang.hitch
查看了
上的
?当我在Dojo中遇到范围问题时,我大部分时间都会使用此选项。@GuyT,谢谢。我试过了,但这对我来说不起作用..因为我有一个增强的网格,所以当我点击某个列时,它必须将该列的id传递给javascript函数,代码与我上面发布的代码类似。你的解决方案是什么?我也经常使用增强网格,但是dojo社区推荐
dgrid
jqGrid
。问题是,
enhancedGrid
有更多的特性(我需要很多),但它有点缺陷。我已经编写了4个补丁来满足我的需要(并解决了一些bug)。1.无限滚动,不带
JsonRest
。2.还可以使用箭头向下和页面向下3进行无限滚动。CTRL+space不起作用。4.当您将
ColumnReordering
设置为true并调整列大小时,它将使用错误的列大小(与标题相比)。感谢@RobG的建议