如果你看一下渲染HTML,你会看到这个问题:你getReport
调用如下:
getReport(XYZ);
我猜你想周围的报价,因此:
return '<a href="javascript:void(0);" onclick="getReport(\''+type+'\'); return false;"></a>';
...这雷德ERS:
getReport('XYZ');
Live example
有点更深奥的,但是当你输出onclick
属性作为HTML源的一部分,它当然是一个HTML属性,这意味着可以使用字符实体。所以,你可以使用"
实体:
return '<a href="javascript:void(0);" onclick="getReport("'+type+'"); return false;"></a>';
Live example
我指出这一点,并不是因为我推荐它(我不知道),但因为它要记住什么的真的事情是非常有用的onclick
属性。这是我强烈建议使用适当的事件处理程序的原因之一(例如,通过addEventListener
/attachEvent
,或者甚至只是在实例化后才指定给a
元素的onclick
属性)。
需要注意的是这样做的这种方式也是对内容的record.data['name']
很敏感很重要。例如,考虑如果不是XYZ
它是Tom's
会发生什么。上面的第一个选项的输出将是
getReport('Tom's');
......这显然是一个问题。同样,如果文本中有反斜杠,它将被视为结果中的转义字符等。 —有点雷区。
如果你都不可能改变你的renderLink
所以它返回一个实际的实例a
元素,而不是一个字符串,这就是我想要做的:
function createLink(value, meta, record)
{
var type = record.data['name']; // Grab value as of when we were called
var link = document.createElement('a');
link.href = "javascript:void(0);";
link.onclick = function() { // Or even better, addEventListener/attachEvent
getReport(type);
return false;
};
return link;
}
创建该链接和封闭访问type
而不会将其变成文本并再次返回。 (如果你不熟悉闭包,请不要担心,closures are not complicated。)
Live example
你如何将这个HTML插入到DOM中? –
什么是record.data ['name']? – Shyju
它返回到extjs网格 – pm13