Javascript getElementById () - PullRequest
       9

Javascript getElementById ()

1 голос
/ 03 июня 2009

Я пытаюсь создать общую функцию 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 ]

1 голос
/ 04 июня 2009

Вы уверены, что правильно получаете идентификатор в IE? Может быть, переданный идентификатор является пустым в IE (возможно, this.id не работает?).

Попробуйте назвать это так:

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

и посмотрим, поможет ли это. Я не вижу никакой причины, по которой getElementById () не будет работать, поэтому я могу думать только о том, что это проблема с ID.

0 голосов
/ 17 мая 2010

Я бы настоятельно рекомендовал вам рассмотреть возможность использования встроенного в jQuery метода attr (), который прекрасно интегрирует желаемую функцию во всех браузерах и невероятно прост в использовании.

Используя ваш пример, если вы хотите изменить свойство "src" на "foo", вы можете сделать это в одной строке кода:

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

Точно так же, если вы хотите изменить html WITHIN "fooSpan", все, что вам нужно сделать, это:

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

Вы даже можете привязать их к событиям, которые обеспечат вам большую гибкость, чем свойство onmouseover:

$(document).ready(function(){
$("#foo").mouseover(function(){
    $("#fooSpan").html("something else");
    $("#foo").attr("src","images/whatever.png");
    });
});
0 голосов
/ 04 июня 2009

Мое предложение было бы сделать что-то вроде этого.

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>
0 голосов
/ 04 июня 2009

Может быть, эта строка не будет работать в IE. "NewElement.property" Я не знаю точную причину.

Вы можете использовать это вместо этой строки

newElement.setAttribute (свойство, «введите свойства здесь»);

Тем временем я пытаюсь выяснить причину ошибки.

...