Javascript 如何避免将标记映射到hyperlink并调用onclick函数instadedHTMLPHPjs
我正在尝试制作一个4个按钮的图像,将其作为4个按钮映射到4个不同的函数,而不是默认的超链接(href=#)。Javascript 如何避免将标记映射到hyperlink并调用onclick函数instadedHTMLPHPjs,javascript,php,html,hyperlink,area,Javascript,Php,Html,Hyperlink,Area,我正在尝试制作一个4个按钮的图像,将其作为4个按钮映射到4个不同的函数,而不是默认的超链接(href=#)。 我希望在这个PHP页面中添加、编辑、删除或更新用户数据,而不是指向不同页面的显式超链接。 即使我不得不求助于其他页面,这些数据也需要通过post或get等功能或一些自己的功能提交。但问题是,在将此图像映射为4个不同的按钮,甚至删除href并添加onclick=myfunction()之后,它什么也不做,如果我添加href,它在单击后不会转到myfunction,而是转到href链接。 请
我希望在这个PHP页面中添加、编辑、删除或更新用户数据,而不是指向不同页面的显式超链接。
即使我不得不求助于其他页面,这些数据也需要通过post或get等功能或一些自己的功能提交。但问题是,在将此图像映射为4个不同的按钮,甚至删除href并添加onclick=myfunction()之后,它什么也不做,如果我添加href,它在单击后不会转到myfunction,而是转到href链接。
请帮忙
<html>
<head>
<title>Panel
</title>
<?php
require('connect.php'); //working connection
$queryU = "SELECT username FROM `user`";
$listU = $connection->query($queryU);
if ($listU->num_rows > 0) {
while ($rowu = $listU->fetch_assoc()) {
$y = $rowu['username']; //working script
}
}
?>
<style>
body {
background-image : url("main.jpg");
opacity : 40%;
font-family : AlphaMaleModern;
text-align : center;
color : #fff;
font-size : 26px;
}
.a {
height : 90%; width : 45%;
}
.img {
margin-top : 20%;
position : relative;
}
.list {
float : right;
position : absolute;
border : lime solid;
width : 50%;
z-index : -1;
position : static;
top : 10%;
height : 90%;
}
#userlist {
width : 100%;
opacity : 0.8;
font-family : AlphaMaleModern;
text-align : center;
font-size : 28px;
height : 100%;
}
.img:hover, #userlist:hover {
opacity : 1;
}
</style>
<script>
//test function 1 for on click call but not working
document.getElementById('aa').on(click, function (e) {
e.preventDefault();
alert("CLICKED");
}
);
//test function 2 for on click call but not working
function printr(ss) {
var x = document.getElementById('ss').name;
alert(x);
switch (x) {
case "aa":
alert("AA");
break;
case "b":
alert("B");
break;
case "c":
alert("C");
break;
case "d":
alert("D");
break;
}
</script>
</head>
<body>
<fieldset name="Users" class="a" style="float:right;">
<legend>USERS
</legend>
<div id="user" class="user" style="">
<img src="panel/panel.png" class="img" alt="" usemap="#Map1"/>
<map name="Map1" id="Map1">
<area alt="" title="" href="#" id="aa" onclick="printr(aa)"
shape="poly" coords="200,8,16,10,104,108"/>
<area alt="" title="" href="#" id="b" onclick="printr(b)"
shape="poly" coords="205,14,108,109,204,197"/>
<area alt="" title="" href="#" id="c" onclick="printr(c)"
shape="poly" coords="8,201,98,110,8,15"/>
<area alt="" title="" href="#" id="d" onclick="printr(d)"
shape="poly" coords="104,113,16,208,204,207"/>
</map>
<div class="list">
<select id="userlist" size="20">
<option>
<?php echo $y; ?>
</option>
<!--list of users from mysql database (working good)-->
</select>
</div>
</fieldset>
</div>
</body>
</html>
面板
身体{
背景图片:url(“main.jpg”);
不透明度:40%;
字体系列:AlphaMaleModern;
文本对齐:居中;
颜色:#fff;
字号:26px;
}
.a{
高度:90%;宽度:45%;
}
.img{
利润率最高:20%;
位置:相对位置;
}
.名单{
浮动:对;
位置:绝对位置;
边界:石灰固体;
宽度:50%;
z指数:-1;
位置:静态;
排名前10%;
身高:90%;
}
#用户列表{
宽度:100%;
不透明度:0.8;
字体系列:AlphaMaleModern;
文本对齐:居中;
字号:28px;
身高:100%;
}
.img:hover,#用户列表:hover{
不透明度:1;
}
//测试功能1的点击调用但不工作
document.getElementById('aa')。on(单击,函数(e){
e、 预防默认值();
警报(“点击”);
}
);
//测试功能2的点击调用但不工作
函数打印机(ss){
var x=document.getElementById('ss').name;
警报(x);
开关(x){
案例“aa”:
警报(“AA”);
打破
案例“b”:
警报(“B”);
打破
案例“c”:
警报(“C”);
打破
案例“d”:
警报(“D”);
打破
}
使用者
图片:
因为那个错误的注释结束(不是结束)——该注释下的每一行都被注释了
函数printr(ss)
未关闭。最后一个}
正在关闭开关
onclick=“printr(aa)”
而不是onclick=“printr('aa')”
。如果没有”
括号,则表示函数参数不存在变量aa
。用括号表示的是字符串我的代码版本:
<html>
<head>
<title>Panel
</title>
<style>
body{
background-image: url("main.jpg");
opacity:40%;
font-family: AlphaMaleModern;
text-align:center;
color:#fff;
font-size: 26px;
}
.a{
height:90%;
width:45%;
}
.img{
margin-top:20%;
position:relative;
}
.list{
float:right;
position:absolute;
border:lime solid;
width:50%;
z-index:-1;
position:static;
top:10%;
height:90%;
}
#userlist{
width:100%;
opacity: 0.8;
font-family:AlphaMaleModern;
text-align:center;
font-size:28px;
height:100%;
}
.img:hover,#userlist:hover{
opacity: 1;
}
</style>
<script>
function printr(ss)
{
switch (ss)
{
case "aa":
alert("AA");
break;
case "b":
alert("B");
break;
case "c":
alert("C");
break;
case "d":
alert("D");
break;
}
}
</script>
</head>
<body>
<fieldset name="Users" class="a" style="float:right;">
<legend>USERS
</legend>
<div id="user" class="user" style="">
<img src="https://i.stack.imgur.com/7A0Ky.png" class="img" alt="" usemap="#Map1" />
<map name="Map1" id="Map1">
<area alt="" title="" href="#" id="aa" onclick="printr('aa')" shape="poly" coords="200,8,16,10,104,108" />
<area alt="" title="" href="#" id="b" onclick="printr('b')" shape="poly" coords="205,14,108,109,204,197" />
<area alt="" title="" href="#" id="c" onclick="printr('c')" shape="poly" coords="8,201,98,110,8,15" />
<area alt="" title="" href="#" id="d" onclick="printr('d')" shape="poly" coords="104,113,16,208,204,207" />
</map>
<div class="list" >
<select id="userlist" size="20">
<option>
</option>
<!--list of users from mysql database (working good) -->
</select>
</div>
</fieldset>
</div>
</body>
</html>
面板
身体{
背景图片:url(“main.jpg”);
不透明度:40%;
字体系列:AlphaMaleModern;
文本对齐:居中;
颜色:#fff;
字号:26px;
}
.a{
身高:90%;
宽度:45%;
}
.img{
利润率最高:20%;
位置:相对位置;
}
.名单{
浮动:对;
位置:绝对位置;
边界:石灰固体;
宽度:50%;
z指数:-1;
位置:静态;
排名前10%;
身高:90%;
}
#用户列表{
宽度:100%;
不透明度:0.8;
字体系列:AlphaMaleModern;
文本对齐:居中;
字号:28px;
身高:100%;
}
.img:hover,#用户列表:hover{
不透明度:1;
}
函数打印机(ss)
{
开关(ss)
{
案例“aa”:
警报(“AA”);
打破
案例“b”:
警报(“B”);
打破
案例“c”:
警报(“C”);
打破
案例“d”:
警报(“D”);
打破
}
}
使用者
这并不是一个清晰的代码,但它现在正在工作。
顺便说一下,为了不打扰自己,我删除了php部分等。我希望你明白我做了什么。请记住,如果javascript中有错误,它将不会执行。我非常感谢您为解决错误所做的努力,但即使在删除错误后,主要问题仍然是一样的。正如我在脚本开始时在JS中测试了一个简单的alert()调用一样,它可以工作,但是任何图像映射上的onclick()都无法工作。请帮忙!!可能我没有列举一两个bug。您是否检查了JSFIDLE(答案末尾附近的链接)是否一切正常?对我来说,它适用于所有浏览器。唯一剩下的问题是,你已经从代码中删除了几行,这实际上阻碍了它的运行。这些是:函数printr(ss){var x=document.getElementById(“ss”).name;alert('x');为了保持简单,我删除了一些javascript代码。可能有一个我没有注意到的bug。