我需要以某种方式使这个函数接受参数。
function dataOut(name2) {
var names = name2.value;
document.getElementById("output2").innerHTML = names;
//even document.getElementById("output2").innerHTML= "blablabla";
//just to show that it works
}
该函数将从:
调用dbase.php
...
echo "<td><a href='javascript:dataOut(this.value)'>" . $row['FirstName'] . "</a></td>";
...
我在显示表格时没有问题。该链接确实显示其各自的“$ row ['FirstName']”,它们是来自数据库的字符串。我试着使用非参数函数:
function dataOut(){}
echo "<td><a href='javascript:dataOut()'>" . $row['FirstName'] . "</a></td>";
这些工作正常。
如果我尝试传递参数,该函数将不会执行任何操作;即使我只是想在函数的注释部分中打印随机字符串。如果我将鼠标悬停在该表中创建的链接上,我会看到:
javascript:dataOut(firstname)
//where first name is the value of the $row['FirstName']
我尝试过的替代方案:
echo "<td><a href='javascript:dataOut(this.value)'>" . $row['FirstName'] . "</a></td>";
echo "<td><a href='javascript:dataOut($row['FirstName'])'>" . $row['FirstName'] . "</a></td>";
echo "<td><a href='javascript:dataOut('" . $row['FirstName'] .'")'>" . $row['FirstName'] . "</a></td>"; //this give me undefined variable error
echo "<td><a href='javascript:dataOut(". $row['FirstName']. ")'>" . $row['FirstName'] . "</a></td>"; // this no error
任何帮助将不胜感激。更多的我也尝试<a onclick=dataOut ....>
也不起作用。
答案 0 :(得分:2)
您不应该尝试通过连接引号和纯字符串来创建JavaScript字符串。使用json_encode()
代替保证输出有效的JavaScript表达式:
echo "<td><a href='javascript:dataOut(".json_encode($row['FirstName']).")'>" . $row['FirstName'] . "</a></td>";
另一方面,使用javascript:
网址通常是一个坏主意。如果没有适用于没有JavaScript的人的正确网址,请更好地使用onclick="dataOut(...); return false;"
并使用有用的 href值或#
。当然,最好是正确注册事件而不是使用内联事件,并将数据存储在data-
属性中,但这将更偏离主题。