为什么我的Javascript函数在HTML中调用时不能运行/工作?
所以我尝试了很多方法来调用函数本身。我对PHP/Javascript相当陌生,所以我正在努力边学边用 我做了一个函数来检查某个复选框是否被选中。我想让函数做的是,如果选中复选框,则将页面重定向到另一个页面,如果未选中,则显示一个警告框 我通过javascript函数传递的变量来自我的PHP代码,所以我想我的问题可能与这两种语言如何相互作用有关 这是我的密码。我从SQL数据库中获取各种变量,并将其存储在PHP变量中。我在PHP代码中的注释行之后调用该函数:为什么我的Javascript函数在HTML中调用时不能运行/工作?,javascript,php,html,Javascript,Php,Html,所以我尝试了很多方法来调用函数本身。我对PHP/Javascript相当陌生,所以我正在努力边学边用 我做了一个函数来检查某个复选框是否被选中。我想让函数做的是,如果选中复选框,则将页面重定向到另一个页面,如果未选中,则显示一个警告框 我通过javascript函数传递的变量来自我的PHP代码,所以我想我的问题可能与这两种语言如何相互作用有关 这是我的密码。我从SQL数据库中获取各种变量,并将其存储在PHP变量中。我在PHP代码中的注释行之后调用该函数: 功能检查已接收(已接收,邮件){ 如果
功能检查已接收(已接收,邮件){
如果(已接收==已检查){
window.location.assign('https://someurl.php?email="邮件",;
}否则{
警惕(“LOL,不怎么样”);
}
}
在javascript中,不要编写
if (received == checked){
但是
您想将收到的变量与字符串“checked”
进行比较。
通过PHP,received
变量接收值“checked”
或“unchecked”
然后通过javascript函数调用将其转换为HTML。必须使用如下字符串调用javascript函数
checkReceived(“string”、“string”)
所以在PHP中它变成了
echo“checkReceived(\'string\,\'string\”)代码>
和PHP变量
echo“checkReceived(\“$var1\”,\“$var2\”)代码>
在您的代码中,它变成:
$strHTML .= "<td><button id='emailButton' onclick='checkReceived(\"$received\", \"$email\")'>$email</button></td>";
问题是当从php连接html时。调用函数时应使用转义序列(例如,单击checkbox('Received',“$ticketNumber”)\“
)
$strHTML=“$dateSubmitted”;
$strHTML.=“$department”;
$strHTML.=“$courseNo”;
$strHTML.=“$instructorName”;
$strHTML.=”;
$strHTML.=”;
//$strHTML.=”;
$strHTML.=“.$email.”;
$strHTML.=“打印”;
$strHTML.=”;
在javascript函数中,如果(checked==“checked”)
加上引号,我将从注释中扩展我的答案,并给出更好的解释
首先,在JS中,不要将变量与选中的进行比较,而要与@PaulH提到的“选中的”
(即字符串)进行比较
因此,您的JS应该如下所示:
function checkReceived(received, profEmail){
if (received == "checked"){
window.location.assign('https://someurl.php?email=' + profEmail);
} else{
alert("LOL HOW ABOUT NO");
}
}
现在,对于PHP,在行中,$strHTML.=''.$email.''
您没有将$received
和$email
变量的输出包装在引号(“
)中。这是必要的,因为它会打印HTML,将字符串传递给JS函数。因此您的PHP代码需要如下所示:
<?php
//This loop populates the ticket display using the records in the database
while($recordSet->EOF == false){
$ticketNumber = $recordSet->Fields['TicketNumber'];
$dateSubmitted = $recordSet->Fields['DateSubmitted'];
$department = $recordSet->Fields['Department'];
$courseNo = $recordSet->Fields['CourseNumber'];
$instructorName = $recordSet->Fields['InstructorName'];
$received = ($recordSet->Fields['Received']) ? "checked" : "unchecked";
$sendReminder = ($recordSet->Fields['SendReminder']) ? "checked" : "unchecked";
$email = $recordSet->Fields['Email'];
$CC = $recordSet->Fields['CC'];
$strHTML = "<tr><td>$dateSubmitted</td>";
$strHTML .= "<td>$department</td>";
$strHTML .= "<td>$courseNo</td>";
$strHTML .= "<td style='word-break: break-all'>$instructorName</td>";
$strHTML .= "<td align='center'> <input type='checkbox' ".$received." class='receivedCheckbox' onchange='checkboxClicked(\"Received\", ".$ticketNumber.")'/> </td>";
$strHTML .= "<td align='center'> <input type='checkbox' ".$sendReminder." class='sendReminderCheckbox' onchange='checkboxClicked(\"SendReminder\", ".$ticketNumber.")' data-email='".$email."'/> </td>";
//$strHTML .= "<td style='word-break: break-all;' align='center'> <a href='javascript:checkReceived($received, $email)'>".$email."</a></td>";
$strHTML .= "<td><button id='emailButton' onclick='checkReceived(\"$received\", \"$email\")'>".$email."</button></td>";
$strHTML .= "<td align='center'> <button onclick=\"window.open('https://someurl.php?ticketNumber=".$ticketNumber."')\">Print</button> </td>";
$strHTML .= "</tr>";
echo $strHTML;
$recordSet->MoveNext;
}
?>
if(received==checked){
what's“checked”?它是一个字符串,我在这里发布时忘了做那个更改,但我已经将它更改为(received==checked).Hey,实际上我已经做了此更改,但不幸的是,它仍然不起作用。您是否查看了浏览器的调试器JavaScript控制台以查找错误?是的,我查看了,我在调用函数时不断收到一个“语法错误:无效或意外标记”。是否可能发生类型不匹配?我已在问题console.log()中添加了$strHTML当我执行该函数时,不会显示任何内容。它只是再次向我传递错误。您可能需要执行此操作$strHTML.=''.$email.;
,以便您的HTML像email@email.ca
checkReceived(received, profEmail){
console.log(received, profEmail);
}
$strHTML = "<tr><td>$dateSubmitted</td>";
$strHTML .= "<td>$department</td>";
$strHTML .= "<td>$courseNo</td>";
$strHTML .= "<td style='word-break: break-all'>$instructorName</td>";
$strHTML .= "<td align='center'> <input type='checkbox' ".$received." class='receivedCheckbox' onchange=\"checkboxClicked('Received', ".$ticketNumber.")\"/> </td>";
$strHTML .= "<td align='center'> <input type='checkbox' ".$sendReminder." class='sendReminderCheckbox' onchange=\"checkboxClicked('SendReminder', ".$ticketNumber.")\" data-email='".$email."'/> </td>";
//$strHTML .= "<td style='word-break: break-all;' align='center'> <a href='javascript:checkReceived($received, $email)'>".$email."</a></td>";
$strHTML .= "<td><button id='emailButton' onclick=\"checkReceived('$received', '$email')\">".$email."</button></td>";
$strHTML .= "<td align='center'> <button onclick=\"window.open('https://someurl.php?ticketNumber=".$ticketNumber."')\">Print</button> </td>";
$strHTML .= "</tr>";
function checkReceived(received, profEmail){
if (received == "checked"){
window.location.assign('https://someurl.php?email=' + profEmail);
} else{
alert("LOL HOW ABOUT NO");
}
}
<?php
//This loop populates the ticket display using the records in the database
while($recordSet->EOF == false){
$ticketNumber = $recordSet->Fields['TicketNumber'];
$dateSubmitted = $recordSet->Fields['DateSubmitted'];
$department = $recordSet->Fields['Department'];
$courseNo = $recordSet->Fields['CourseNumber'];
$instructorName = $recordSet->Fields['InstructorName'];
$received = ($recordSet->Fields['Received']) ? "checked" : "unchecked";
$sendReminder = ($recordSet->Fields['SendReminder']) ? "checked" : "unchecked";
$email = $recordSet->Fields['Email'];
$CC = $recordSet->Fields['CC'];
$strHTML = "<tr><td>$dateSubmitted</td>";
$strHTML .= "<td>$department</td>";
$strHTML .= "<td>$courseNo</td>";
$strHTML .= "<td style='word-break: break-all'>$instructorName</td>";
$strHTML .= "<td align='center'> <input type='checkbox' ".$received." class='receivedCheckbox' onchange='checkboxClicked(\"Received\", ".$ticketNumber.")'/> </td>";
$strHTML .= "<td align='center'> <input type='checkbox' ".$sendReminder." class='sendReminderCheckbox' onchange='checkboxClicked(\"SendReminder\", ".$ticketNumber.")' data-email='".$email."'/> </td>";
//$strHTML .= "<td style='word-break: break-all;' align='center'> <a href='javascript:checkReceived($received, $email)'>".$email."</a></td>";
$strHTML .= "<td><button id='emailButton' onclick='checkReceived(\"$received\", \"$email\")'>".$email."</button></td>";
$strHTML .= "<td align='center'> <button onclick=\"window.open('https://someurl.php?ticketNumber=".$ticketNumber."')\">Print</button> </td>";
$strHTML .= "</tr>";
echo $strHTML;
$recordSet->MoveNext;
}
?>