Javascript函数,用于在变量在页面之间传递时更改其值

Javascript函数,用于在变量在页面之间传递时更改其值,javascript,Javascript,我正在开发一个基于内部网络的人力资源系统,这样我们的人力资源部门就可以跟踪和报告某些事情。大多数页面都涉及根据员工ID进行的搜索。他们还可以选择单击一个链接,打开一个弹出窗口,根据员工的姓氏搜索员工ID。这就是问题所在。在弹出页面上,他们单击所需的员工ID,然后将其提交回搜索页面。我很确定这在测试期间运行得很好,但后来我将搜索后面的SQL表更改为包含整个员工池的SQL表,并开始时不时地发现奇怪的结果。经过测试,我发现这是在Javascript函数提交ID时发生的。我不明白为什么会发生这种情况,因

我正在开发一个基于内部网络的人力资源系统,这样我们的人力资源部门就可以跟踪和报告某些事情。大多数页面都涉及根据员工ID进行的搜索。他们还可以选择单击一个链接,打开一个弹出窗口,根据员工的姓氏搜索员工ID。这就是问题所在。在弹出页面上,他们单击所需的员工ID,然后将其提交回搜索页面。我很确定这在测试期间运行得很好,但后来我将搜索后面的SQL表更改为包含整个员工池的SQL表,并开始时不时地发现奇怪的结果。经过测试,我发现这是在Javascript函数提交ID时发生的。我不明白为什么会发生这种情况,因为函数非常简单,而且我没有在测试和最终测试之间更改代码。它只对一些员工进行测试,所以它可能总是这样做,而我只是没有碰巧测试过与之合作的任何人

function submitssn1(ssn) 
{
    window.opener.location.href="hr_main.php?empID=" + ssn; 
    window.close();
}
下面是用于启动该功能的代码

<td><a href="javascript:submitssn1(' . $row["PersonID"] . ')"><Font 
face=verdana size=2>' . $row["PersonID"] . '</font></a></td>';  
”;
当您按姓氏搜索时,它会调出正确的员工ID。当我在提交函数之前回显ID时,它也是正确的。但是,提交到另一个页面的是另一个ID。您可以手动复制ID并将其返回到另一个页面,搜索工作正常。我已经没有什么想法可以查了,在网上也找不到类似的东西。如有任何想法或建议,将不胜感激


*我知道密码很旧。我正在做的一部分就是更新它。我只是想问,是否有人知道为什么我会得到Javascript的奇怪功能,提交一个不同的数字,然后它的参数。这很奇怪,因为它在某些情况下会这样做,但不是在所有情况下都会这样做。

与其打开窗口发送GET请求,不如尝试使用ajax,或者至少使用隐藏帧。Ajax是一种在后台运行并返回请求结果(错误、数据等)的现代方法。打开“发送”窗口是不可靠的,因为在自动关闭之前,您不知道数据是否已发送

尝试使用div而不是表。甚至还有像桌子一样的div可以使用。有一些在线工具可以将简单的表转换为div。表用于表格数据,而不是标记

正如Ryan指出的,您最明显的问题是,您正在函数中声明一个参数

<td><a href="javascript:submitssn1(' . $row["PersonID"] . ')"><Font 
face=verdana size=2>' . $row["PersonID"] . '</font></a></td>';  
我应用了一个CSS类来替换字体标记

基本上,您应该学习CSS,使用它而不是字体和表标记,学习ajax(使用jQuery很容易),并使用javascript调试器(它们通常随浏览器提供)来告诉您所犯的错误,比如重新声明变量

Javascript:

function submitssn1(ssn) 
{
    //var ssn; //why redeclare the variable that is declared as a function parameter above?
    window.opener.location.href="hr_main.php?empID=" + ssn; 
    window.close();
}
CSS:

HTML:


使用
$row[…]
可以请求一个PHP值,但使用的是JavaScript,您需要使用
@BillBonney为什么在向同名函数传递参数时要声明名为ssn的局部变量?当我在提交函数之前回显ID时,我看不到一个
回显
?请不要再使用
。在过去的20年里,它一直被弃用。@RyanWilson不确定这不是我的代码,在我开始这个项目之前,我对Javascript不是特别熟悉。我会做更多的PHP。对不起,我的问题不太清楚。我只关心为什么我的Javascript中会出现奇怪的结果。我很清楚CSS是如何工作的,这段代码已经过时了。我正在将这个90年代编写的代码转换成一个更现代的系统。我关心的是让它在功能上正常工作,然后我会检查并更新代码。就使用divs而言,这是表格数据。您按姓氏搜索,它将生成一个员工表,其中员工的姓氏在搜索条件中。
<td class="empID">
    <a href="javascript:submitssn1(' . $row["PersonID"] . ')">
        ' . $row["PersonID"] . '</a>
</td>'; 
echo $_GET['ssn'];