2009-11-25 67 views
0

最近我在頁面中添加了很多javascript,但是都以經典的座椅風格來學習。當我想讓自己的網頁去做某些事情時,我會Google和實驗,直到獲得我想要的結果。可以螢火蟲告訴我一個對象的JavaScript名稱?

我經常在我的網頁,我想激活/關閉,隱藏,顯示等對象,但是 - 已經錯過了嚴格的介紹JavaScript的 - 我不知道這些東西是如何被命名。我點擊螢火蟲打開的對象,期待看到對象的一些完全合格的名稱,但沒有喜悅。我只需要能夠做一些類似form.button.value =「something」的東西,並且需要知道該對象的名稱。

任何想法?

謝謝。

+0

在JavaScript中,甚至函數可以是匿名的。你能用一些代碼來解釋你在做什麼時遇到麻煩嗎? – Nosredna 2009-11-25 23:28:33

回答

1

而你正在運行的JavaScript代碼,您必須在當前範圍內的所有局部變量,所以如果你有以下代碼:

var myObject = New Object(); 
myObject.Person = New Object(); 
myObject.Person.Name = "Mark"; 
myObject.Person.Gender = "Male"; 
myObject.Name = "object1"; 

...您的根對象是myObject的,你可以通過點符號來引用後代對象。

但是,由於在瀏覽器中實現了DOM,因此您還通過this關鍵字繼承了window對象。事實上,您可以將簡單情況下的this關鍵字取消,即當您未使用關閉時。因此,只需使用函數名即可訪問頂層的Javascript函數。

如果你想訪問特定的元素,就像你想要的那樣,你需要學習DOM,而不是使用你所建議的語法(聽起來像20世紀90年代的Javascript)。您需要知道的根元素是HTMLDocument對象,可通過document屬性進行訪問。您可以使用文檔元素的getElementById方法發現具有特定Id(而不是Name)屬性的元素。當然,如果你從一開始就爲你的元素提供了一個獨特的ID,它會有所幫助。您也可以遞歸地使用childNodes集合來手動遍歷元素,直到找到所需的元素。或者,如果您確實無法提供Id,則也可以使用getElementsByTagName方法,該方法附加到DOM中的每個元素。

實施例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 
<HTML> 
<HEAD> 
    <TITLE></TITLE> 
    <META NAME="Generator" CONTENT="TextPad 4.6"> 
    <META NAME="Author" CONTENT="?"> 
    <META NAME="Keywords" CONTENT="?"> 
    <META NAME="Description" CONTENT="?"> 
    <SCRIPT LANGUAGE="Javascript"> 
     <!-- 

     function DoSummat() 
     { 
      var divInside = document.getElementById("Inside"); 
      divInside.textContent = "This text will appear inside."; 
     } 

     //--> 
    </SCRIPT> 
</HEAD> 

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?"> 
<FORM> 
    <INPUT TYPE="BUTTON" onclick="DoSummat();" NAME="MyButton" VALUE="Press Me"> 
</FORM> 
<DIV ID="Outside"> 
    <DIV ID="Middle"> 
     <DIV ID="Inside"></DIV> 
    </DIV> 
</DIV> 
</BODY> 
</HTML> 
0

你的問題非常模糊,所以我不能給你你需要的答案。如果這是你的意思,那麼它們不能被「激活」/「停用」,並且它們沒有「名稱」(它們可以具有name屬性)。

例如,給定:

var foo = {}; 

foo可變恰好有一個值,該值是一個對象。該對象不是變量(具有「名稱」的對象)。鑑於:

bar = foo; foo = null; 

foo現在null和FOO舉行的對象現在存儲爲bar

0

你將無法做到這一點。變量名不與變量綁定,並且它們不在函數之間傳遞。你能做的最好是寫一個函數來獲得一個字符串並將解決回一個變量:

function printVar(name) { 
    console.log(name + ": " + window[name]); 
} 

當然,有事情不對的一個很多。我建議你只是做兩個記錄電話:

console.log("foo"); 
console.log(foo); 

,或者使用printf風格的語法:

console.log("foo: %o", foo); 
1

元件使用id屬性一般鑑定。例如:

<input type="submit" id="saveButton" value="Save" /> 

可以使用getElementById方法得到一個引用元素:

var b = document.getElementById('saveButton'); 
b.value = 'Saving...'; 
1

嘛,因爲你給了form.button.value="something"例子,我猜你想控制HTML對象。您可以爲它們分配一個ID,例如:< form id =「my_form」...然後通過JS獲取元素id,因爲該函數甚至稱爲getElementById()。

document.getElementById('my_form').button.value = 'something';