2009-06-03 274 views
1

我試圖創建一個通用的JavaScript函數,可以改變事件的屬性。Javascript getElementById()

它的工作方式是

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樣式)的屬性更改。

+0

您應該重新輸入因丟失而插入的代碼,因爲您沒有將其標記爲代碼。 – 2009-06-03 20:01:28

+0

其實我試圖改變樣式屬性。但該對象無效。感謝您及時的回覆。 – mtranda 2009-06-03 20:02:55

+2

你能發佈你使用的實際代碼嗎?而不是'newElement.property'。 – 2009-06-03 20:07:23

回答

1

你確定你在IE中正確得到ID嗎?也許在IE中傳入的ID是空的(也許this.id不起作用?)。

嘗試調用它像這樣:

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

,看看有沒有什麼幫助。我沒有看到getElementById()會失敗的原因,所以我唯一能想到的就是它是一個ID問題。

0

可能是這條線在IE中不起作用。 「newElement.property」 我不知道確切的原因。

你可以用它來代替該行

newElement.setAttribute(財產, 「在這裏輸入性」);

與此同時,我試圖找出錯誤背後的原因。

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> 
0

我強烈建議你考慮使用jQuery的內置ATTR()方法,跨瀏覽器,你想完美的功能集成,並是令人難以置信使用方便。

使用你的例子,如果你想改變「SRC」屬性「富」,你可以在一個單一的代碼行做到這一點:

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

同樣,如果你想改變的HTML範圍內「fooSpan」,所有你需要做的是:

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

你甚至可以配合這些給將會給你比的onmouseover屬性更多的靈活性事件:

$(document).ready(function(){ 
$("#foo").mouseover(function(){ 
    $("#fooSpan").html("something else"); 
    $("#foo").attr("src","images/whatever.png"); 
    }); 
});