【发布时间】:2015-11-10 14:18:34
【问题描述】:
我试图在单击按钮时在按钮附近显示一个浮动 div,并在我点击其中的“关闭”跨度时隐藏该 div。这是我的代码:
<style>
#noteDiv {display:none; position: absolute;}
</style>
<script>
function showNote(e) {
var x = 0, y = 0;
if (!e) e = window.event;
if (e.pageX || e.pageY) {
x = e.pageX;
y = e.pageY;
}
else if (e.clientX || e.clientY) {
x = e.clientX + document.body.scrollLeft
+ document.documentElement.scrollLeft;
y = e.clientY + document.body.scrollTop
+ document.documentElement.scrollTop;
}
var noteDiv = document.getElementById("noteDiv");
noteDiv.style.display = "block";
noteDiv.style.left = (x+20)+"px";
noteDiv.style.top = (y)+"px";
}
function hideNote() {
document.getElementById("noteDiv").style.display = "none";
}
</script>
<div id='noteDiv'>
<div style="margin: 5px; float: right; font-size: smaller"><span onclick="hideNote()">Close</span></div><br clear="all">
<div>Note Content</div>
</div>
<?php
echo "<button type ='button' onClick = 'showNote();'>Note</button>";
?>
它确实隐藏了 div,但是当我单击“Note”按钮时,noteDiv 不显示。
出了什么问题?
谢谢!迈克尔·拉兹洛。我想我发现了问题,但我不知道如何处理。
我相信这是javascript peice,因为如果我注释掉这部分:
if (e.pageX || e.pageY) {
x = e.pageX;
y = e.pageY;
}
else if (e.clientX || e.clientY) {
x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
}
按钮效果很好(尽管位置在屏幕的左角,因为 x 和 y 为 0)。
我错过了什么吗?
对于Sunil的建议,我暂时把class部分去掉,把onClick改成onclick,现在回显好了,谢谢Sunil!
再次感谢 Michael Laszlo!是的,你是对的!我需要给按钮一个 ID,否则 e 无法传递给函数!现在我的代码也可以工作了!
我的页面上有很多这样的按钮,我需要生成一个 var 来验证它们,然后我认为它应该可以工作。如果有问题,应该是另外一个问题了,哈哈,关于php的。
非常感谢 Michael Laszlo 和 Sunil,您为按钮设置 id 和从浏览器检查代码的建议对您有很大帮助!我从你们那里学到了宝贵的东西!
【问题讨论】:
-
您是否在浏览器的开发人员工具中检查了 html?这将告诉您 Note 按钮是否使用正确的 html 呈现。使用您的原始代码来获取它。然后很容易知道出了什么问题。
-
您的问题是嵌入的 $classStr,它导致浏览器无法识别 onclick 属性,因此不会触发 onclick 的代码。
-
在您的情况下,使用 $classDir 呈现不正确 html 的原因可能是 apache Web 服务器未正确配置 php。所以这实际上是一个 php 问题,而不是一个 JavaScript 问题。
-
能贴一下req_COMP类的代码吗?这应该是某处定义的一些 CSS。您的类 CSS 可能存在一些问题。
-
另外,查看呈现的脚本。可能是您的页面中的 JavaaScript 未正确呈现,因此无法识别 showNote 函数。
标签: javascript html