Javascript - onclick

Javascript - onclick

本文关键字:onclick Javascript      更新时间:2023-09-26

>第一次在这里发帖,但天知道我一直使用这个网站来搜索问题:P 好吧,我现在遇到了自己的问题,我似乎无法轻松搜索Google,在玩了大约2个小时之后,我终于决定发布一个问题,看看你们的想法。

我在这里要完成的是,当您将鼠标悬停在div 上时,该按钮会出现在div 上,单击该按钮时会打开一个编辑窗格。该按钮正确显示在div 上方,但由于某种原因,我似乎无法使 onclick 功能工作以挽救我的生命,哈哈。这是我正在使用的代码。如果还不够,请告诉我,我会再加一点酱汁。:P

function place_widget(name, properties){
//bbox
var pleft = properties[0];
var ptop = properties[1];
var width = properties[2];
var height = properties[3];
var pright = pleft + width;
var pbottom = pleft + height;
var bbox = [pleft, ptop, pright, pbottom];
boxes[name] = bbox;
//ID's
var id = 'widget_' + name;
var editspanid = id + "_editspan";
var editbuttonid = id + "_editbutton";
var editpaneid = id + "_editpane";
//Creating Elements
var div = "<div id='" + id + "' class='widget' onmouseover='widget_hover(event);' onmouseout='widget_out(event);'>";
var editbutton = "<a id='" + editbuttonid + "' href='#'><img onclick='toggleEdit;' src='../images/edit_button.png'></a>";
var editspan = "<span id='" + editspanid + "' class='editspan'>" + editbutton + "</span>";
var editpane = "<span id='" + editpaneid + "' class='editpane'>:)</span>";
div += editspan + editpane + "</div>";
body.innerHTML += div;
//Configuring Elements
var editspanelement = document.getElementById(editspanid);
var editbuttonelement = document.getElementById(editbuttonid);
editbuttonelement.onclick = alert; //Does nothing.
var editpaneelement = document.getElementById(editpaneid);
var mainelement = document.getElementById('widget_' + name);
mainelement.style.left = (pleft + leftmost) + "px";
mainelement.style.top = (ptop + topmost) + "px";
mainelement.style.width = width;
mainelement.style.height = height;
getContentsAJAX(name);
}

对不起,丑陋的代码:P有人知道为什么点击功能不起作用吗?

另外,一些额外的信息:如果我打开火虫并放入:

document.getElementById('widget_Text_01_editbutton').onclick = alert;

当我点击按钮时,我得到:

uncaught exception: [Exception... "Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)" location: "native frame :: <unknown filename> :: <TOP_LEVEL> :: line 0" data: no]

我不太确定这意味着什么。

谢谢!

你能尝试改变:

<img onclick='toggleEdit;' src='../images/edit_button.png'>

自:

<img onclick='toggleEdit();' src='../images/edit_button.png'>

另外,"警报"是你写的函数吗?

首先更改以下内容:

editbuttonelement.onclick = alert; //Does nothing.

对此:

editbuttonelement.onclick = function() {alert("Got a click");};

然后更改此设置:

var editbutton = "<a id='" + editbuttonid + "' href='#'><img onclick='toggleEdit;' src='../images/edit_button.png'></a>";

对此:

var editbutton = "<a id='" + editbuttonid + "' href='#'><img onclick='toggleEdit();' src='../images/edit_button.png'></a>";

你在点击什么? 图像、链接或跨度? 您知道哪个正在获取点击事件吗?

document.getElementById('widget_Text_01_editbutton').onclick = alert;

导致illegal invocation,因为它试图将this设置为其他内容(元素(,而不是window alert

alert.call( {} )
//TypeError: Illegal invocation
alert.bind( window ).call( {} )
//works

因此,请执行以下任一操作:

document.getElementById('widget_Text_01_editbutton').onclick = alert.bind( window );

甚至更好,因为上述方法仅适用于某些浏览器:

document.getElementById('widget_Text_01_editbutton').onclick = function(){alert();};

它将帮助您执行。

<img onclick='toggleEdit;' src='../images/edit_button.png'>