- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些有效的 SVG 代码,可以通过在形状上设置属性来处理鼠标事件:
function plot() {
...
shape.setAttributeNS(null, "onmouseover", "popup_on (evt,"+sindex+","+month+")");
shape.setAttributeNS(null, "onmouseout", "popup_off(evt,"+sindex+")");
}
但是,我需要更改此代码,因为 popup_on
和 popup_off
不再是静态函数,并且需要大量上下文,具体取决于调用它们的位置。我通过定义一个闭包并将函数名称作为属性值传递来处理此问题:
function plot(popup_on, popup_off) {
...
shape.setAttributeNS(null, "onmouseover", popup_on + "(evt,"+sindex+","+month+")");
shape.setAttributeNS(null, "onmouseout", popup_off + "(evt,"+sindex+")");
}
但是,这不起作用 - 弹出代码永远不会被触发。如果我检查 Firebug 或 Dragonfly 中的“形状”属性,它们似乎是正确的。 'shape' 具有 'onmouseover' 和 'onmouseout' 属性,该属性的值是 popup_on
和 popup_off
函数的完整源文本:
onmouseover=function popup_on(evt, sindex, month) {
...
}
但这些函数实际上并未运行。知道我做错了什么吗?谢谢。
感谢您的所有反馈。马克的回答不起作用; “function”被标记为语法错误。 'popup_on' 和 'popup_off' 不是字符串 - 它们实际上是闭包中的函数。不过,Sime 和 Erik 的答案确实有效,但有一个问题。
如果我将代码更改为:
shape.addEventListener("mouseover", function() {popup_on (evt, sindex, month);}, false);
然后,当 firebug 尝试执行 popup_on
(当鼠标点击时)时,它会提示“evt”未定义。如果我将 evt
更改为 window.evt
或 evt || window.evt
,那么我就不会收到此错误,但我仍然无法访问弹出处理程序中的事件:
// popup handler in closure
o["popup_on"] = function(evt, sindex, month) {
// both evt and window.evt are undefined on entry
evt = evt || window.evt;
// so evt is still undefined, but...
...
// I need to do this
var upright = (evt.clientY >= cy);
知道为什么吗?谢谢。
好的 - 已修复。答案是:
shape.addEventListener("mouseover", function(evt) {popup_on (evt, sindex, month);}, false);
shape.addEventListener("mouseout", function(evt) {popup_off(evt, sindex);}, false);
最佳答案
为什么不使用 shape.addEventListener("mouseout", function() {...}, false)
呢?请参阅here举一些例子。
如果您希望在函数中将事件对象命名为“evt”,您可以命名它(您可以给它任何您想要的名称),如下所示:shape.addEventListener("mouseout", function(evt ) {...}, false)
否则,事件变量在监听器函数内默认命名为“event”,而不是“evt”。这是一些困惑的根源。
关于javascript - 无法将函数作为值传递给 setAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8707192/
request.setAttribute 和 request.getSession().setAttribute() 有什么区别? 它们存储在哪里以及以什么格式? 最佳答案 区别: 当您使用reque
session.setAttribute 和 request.setAttribute 有什么区别? 最佳答案 范围,session属性住所有的session而request属性只在一个请求中 关于j
我一直热衷于重置我的一个 jsp 页面上的一些验证错误。这是一个我无法再联系到的人(死亡或无法联系)继承的项目。我有一个 jsp 页面,其中包含许多自定义标记库,其中更多页面被添加为选项卡,父页面具有
当您从请求和 getServletContext() 调用它们时,get/setAttribute() 之间有什么区别。我注意到你需要 RequestDispatcher rd = request.g
所以我正在学习操作 DOM,并且我注意到一件有趣的事情: 假设我想使用“.”设置元素的 name 属性。点符号: element.name = "someName"; console.log(docu
HttpServletRequest类的setAttribute()方法和HttpSession类的setAttribute()方法有什么区别? 在什么情况下使用? 最佳答案 一个在请求范围内设置一个
为什么我们要使用setAttribute()方法来设置ServletContext参数,因为我们可以通过在web.xml中设置参数并使用getInitParameter()来获取它们来完成相同的工作?
我在 setAttribute() 方面遇到问题。我已经搜索过互联网和这个网站,但他们没有解决我的问题。我想用 javascript 更改图片的宽度和高度,但它不起作用。请帮助我。
在学校,我的老师将我的代码更改为下面的示例它不起作用,我无法理解它是如何工作并修复它的。 function _$(e, attrs) { var el = document.createEle
我有三个元素,我正在尝试为每个元素设置属性: const foldable = document.getElementsByClassName('foldable') let result = Arr
我正在尝试使用 object3D.lookAt 属性更改图像的视角。目前我正在尝试使用组件的 update() 方法更改图像的方向。这是通过更新我的组件的 Lookat 属性来实现的。 functio
我有一些有效的 SVG 代码,可以通过在形状上设置属性来处理鼠标事件: function plot() { ... shape.setAttributeNS(null, "onmouseove
我使用的表单会根据您单击单选按钮的选项来显示一些 div。 问题是 div 设置为不显示,除非我选择一个选项。 所以我添加了以下函数,以确保如果显示 div,它将具有具有所需属性的形式。 所以我给出这
此代码嵌套在 ascx 控件中。 onclientclick 事件有效并且没有错误,但标签文本没有更改?我错过了什么?
同样,我在使用 setAttribute 时遵循我的引用书和在线引用:它根本不起作用; HTML:
这是一些 HTML: lorem Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eaque magnam expedit
我一直在以不同的方式创建元素,但不确定最佳方法。有什么区别: var myselect = document.createElement("select"); myselect.name="blah"
这里我稍微修改了代码 https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_doc_getelementsbyname_loop 来自
我在为另一个元素设置属性时遇到问题。 我正在使用带有 JS 和 HTML 的 PHP 代码,它看起来像: $value 你一定知道我有两个元素。我用于编写文本的第一个('content')和另一个('
我是 Javascript 的新手,我不知道如何在选定的选项上使用 setAttribute。 我的 html 中有一个 id = employee 的 select 元素(使用 javascript
我是一名优秀的程序员,十分优秀!