1

我正在尝试创建一个可以更改事件属性的通用 javascript 函数。

它的工作方式是

function fooFunction(sourceElement) 
{    
  var newName = sourceElement+'Span';    
  var newElement = document.getElementById(newName);
  //Important line
  newElement.property = "enter properties here";
}

我会用类似的东西来称呼它

<img src="foo.gif" id="foo" name="foo" onmouseover="fooFunction(this.id);"/>
<span id="fooSpan" name="fooSpan">some text here</span>

所以理论上,当悬停图像时,它应该改变我需要在 fooSpan 对象上改变的任何属性。它在 Opera 中工作,但在 IE 上它返回一个空对象。

有任何想法吗 ?

我的想法是我将拥有多个图像,这些图像会自动触发相关文本跨度(通常是 css 样式)上的属性更改。

4

4 回答 4

1

您确定您在 IE 中正确获取 ID 吗?也许传入的 ID 在 IE 中为空(也许 this.id 不起作用?)。

尝试这样称呼它:

<img src="foo.gif" id="foo" name="foo" onmouseover="fooFunction('foo');"/>

看看是否有帮助。我看不出 getElementById() 失败的任何原因,所以我唯一能想到的是这是一个 ID 问题。

于 2009-06-03T20:55:04.850 回答
0

可能这条线在 IE 中不起作用。“newElement.property”我不知道确切的原因。

您可以使用它而不是那条线

newElement.setAttribute(property,"在此处输入属性");

同时,我正在尝试找出错误背后的原因。

于 2009-06-04T04:12:03.480 回答
0

我的建议是做这样的事情。

function fooFunction(sourceElement,property,propertyValue) {    
  var newElement = document.getElementById(sourceElement);
  newElement.setAttribute(property,propertyValue);
};

你的 HTML 看起来像:

<img src="foo.gif" id="foo" name="foo" 
           onmouseover="fooFunction('fooSpan','class','mouseover_span');"/>
<span id="fooSpan" name="fooSpan">some text here</span>
于 2009-06-04T04:25:56.493 回答
0

我强烈建议您考虑使用 jQuery 的内置 attr() 方法,该方法完美地集成了您想要跨浏览器的功能并且非常易于使用。

使用您的示例,如果您想更改“foo”的“src”属性,您可以在一行代码中完成:

$("#foo").attr("src","images/whatever.png");

同样,如果您想在“fooSpan”内更改 html,您所要做的就是:

$("#fooSpan").html("something else");

您甚至可以将这些事件与比 onmouseover 属性提供更多灵活性的事件联系起来:

$(document).ready(function(){
$("#foo").mouseover(function(){
    $("#fooSpan").html("something else");
    $("#foo").attr("src","images/whatever.png");
    });
});
于 2010-05-17T18:11:49.907 回答