当你点击按钮"投票"
时,我基本上就是这样做的。此刻我
clients.php
<?php
$clientInfo = "SELECT * FROM Clients ORDER BY Client ASC";
$stmt = sqlsrv_query($conn, $clientInfo);
echo "<div style='width: 100%; display: inline-block;'>";
while ($client = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
{
echo "<div class='clientid' style='height: 50px; font-size: 18px; vertical-align: middle; display: inline-block; width: 100%'>" .
"
<div style='width: 35%;'></div>
<div onclick=\"voteUp()\" style='display: inline-block; width: 5%;'>
<span style='font-size: 20px;' class='hover-cursor fa fa-chevron-up vote-up'></span>
</div>" .
"<div class='hover-cursor hvr-underline-reveal' style='width: 20%; display: inline-block;' data-clientid='{$client['ClientID']}'>" . $client['Client'] . "</div>" .
"<div onclick=\"voteDown()\" style='display: inline-block; width: 5%;'>
<span style='font-size: 20px; text-align: right;' class='hover-cursor fa fa-chevron-down vote-down'></span>
</div>
<div style='width: 35%;'></div>
</div>
<br />";
}
echo "</div>";
?>
如上所示,有一个用于voteUp()函数的onclick。
在我的页面底部,我有
<script type="text/javascript" src="scripts/scripts.js"></script>
并在 scripts.js (我从点击div运行php文件的教程中获得了voteUp()的位)
$(document).ready(function()
{
$('.pull-me').click(function()
{
$('.panel1').slideToggle('fast')
});
$('.pull-me').click(function()
{
$('.panel2').slideToggle('fast')
});
$('.pull-me').click(function()
{
$('.panel3').slideToggle('fast')
});
$("#selection-box1").change(function()
{
document.location.href = $(this).val();
});
$(".output").click(function ()
{
var noteid = $(this).data("noteid");
var templatenoteid = $(this).data("templatenoteid");
var variablenoteid = $(this).data("variablenoteid");
if ($(this).data("noteid"))
{
$("#right-box").load("noteContent.php", {noteid: noteid});
}
else if ($(this).data("templatenoteid"))
{
$("#right-box").load("templateNoteContent.php", {templatenoteid: templatenoteid});
}
else
{
$("#right-box").load("variableContent.php", {variablenoteid: variablenoteid});
}
});
var modal = document.getElementById('login-box');
window.onclick = function(event)
{
if (event.target == modal)
{
modal.style.display = "none";
}
}
//This script votes up and down for the client
function voteUp()
{
$.get("voteup.php");
return false;
}
function voteDown()
{
$.get("votedown.php");
return false;
}
});
最后在 voteup.php
<?php include 'connectionDetails.php'; ?>
<?php
if (isset($_POST['clientid']))
{
$voteup = "UPDATE Clients SET Pos = (SELECT MAX(Pos) FROM Clients) + 1 WHERE ClientID = " . $_POST['clientid'];
$stmt = sqlsrv_query($conn, $voteup);
}
else
{
echo "No ClientID";
}
?>
当我点击投票按钮这是DIV时onclick =&#34; voteUp()&#34;
为什么我在控制台中出现错误&#34; ReferenceError:voteUp未定义&#34;
答案 0 :(得分:2)
你已经确定了方法。
相反,您可以将它们附加到窗口,以便可以从任何地方访问。
window.voteUp = function()
{
$.get("voteup.php");
return false;
}
window.voteDown = function()
{
$.get("votedown.php");
return false;
}
答案 1 :(得分:1)
为什么不使用jQuery而不是内联JS?给你的div课程:
<div class="voteup" data-clientid="{$client['ClientID']}">...</div>
然后使用jQuery代替onclick()
,因为它会更清晰:
$(document).on('click', '.voteup', function(){
var clientid = $(this).data('clientid');
$.get("voteup.php", { clientid: clientid });
return false;
})
由于您已经在使用jQuery,这将帮助您保持标记更清晰,让您可以更轻松地对标记和JavaScript进行更改。
此外,这将删除范围问题,以便您不必添加命名空间。
我看到的另一个问题是你没有将$_POST['clientid']
传递给voteup.php,所以你的查询永远不会运行。您可以在data-client-id
声明中加入div
,但您必须在PHP中将测试更改为:
if (isset($_GET['clientid']))
因为您将通过GET请求发送值。
答案 2 :(得分:0)
为什么我在控制台中收到错误提示“ReferenceError:voteUp未定义”
范围。
voteUp()
和voteDown
在启动块中定义(在{}
的{{1}}内,因此在此块之外无法使用。
您需要将两个功能移到外面:
$(document).ready(function() ...