Javascript获得价值

时间:2016-08-26 11:28:57

标签: javascript html

我有一个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); 
}

5 个答案:

答案 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内部的字符串有'",它将破坏事件处理程序。字符串可能永远不会包含这些字符,但如果它们有,那就麻烦了。