我有一个foreach循环,我正在用DOM编写一些href(s)
:
var href = document.createElement("a");
href.setAttribute("href", uid);
基本上我有X href,我想要在用户点击href
时触发javascript函数。
我尝试添加onclick
事件......
href.setAttribute("onclick","displayer("+uid+");");
uid变量:
var uid = String(Nuid);
即使是一个字符串,我也可以清楚地看到Firebug中的确定(console.log
)
但是,当我点击该链接时,Firebug说:
wall.php:1 Uncaught ReferenceError: hEIsrMeIN4M5OoLYTlGUQg9paL73 is not defined
它指向<!DOCTYPE HTML>
这不是错误。
Javascript函数没什么特别的......
function displayer(uid){
window.alert(uid);
}
答案 0 :(得分:5)
此:
sqlContext.registerDataFrameAsTable(spark_clean_df, 'table1')
sqlContext.sql(select * from table1 where ...)
产生这个:
"displayer("+uid+");"
这是无效的语法,因为该字符串不是标识符。由于它是一个字符串,因此需要用引号括起来。像这样:
displayer(hEIsrMeIN4M5OoLYTlGUQg9paL73);
答案 1 :(得分:2)
我希望使用addEventListenner
并从uid
属性中获取href
值。
function displayer(event) {
var uidElem = event.target.getAttribute('href');
alert(uidElem);
}
var href = document.createElement("a");
href.setAttribute("href", uid);
href.textContent = "Text Content"
href.addEventListener('click', displayer)
答案 2 :(得分:1)
执行此操作 a b c
1 1 1 2
2 2 20 18
3 3 3 6
4 4 4 8
5 5 50 45
答案 3 :(得分:0)
这是因为类型错误。
href.setAttribute("onclick","displayer("+uid+");");
会产生如下锚标记:
<a href="abc123" onclick="displayer(abc123)">
您设置为显示器函数预先填充的参数不是字符串,在运行时我们将查找未定义的变量。
如果我们更新此行以包含您的UID周围的字符串引号,那么一切都应该没问题。
href.setAttribute("onclick","displayer('"+uid+"');");
这将导致:
<a href="abc123" onclick="displayer('abc123')">
将字符串值传递给onclick函数。
答案 4 :(得分:0)
使用addEventListener添加事件,不要将它们设置为属性。
href.addEventListener("click", function() { displayer(uid); });
您的代码无效的原因是它将其添加为属性。当它渲染时它呈现为
<a href="xxxxxx" onclick="displayer(hEIsrMeIN4M5OoLYTlGUQg9paL73)">...
所以当你点击它时,它正在寻找变量hEIsrMeIN4M5OoLYTlGUQg9paL73
,而不是字符串。
那你需要做什么?包裹它引用所以它是一个字符串。
href.setAttribute("onclick","displayer('"+uid+"');");
现在为什么这个解决方案很糟糕。好吧,首先添加事件的正确方法是使用addEventListener。第二,如果uid内部的字符串有'
或"
,它将破坏事件处理程序。字符串可能永远不会包含这些字符,但如果它们有,那就麻烦了。