2012-09-28 28 views
0

我有一個簡單的函數構造函數,並且想要將DOM元素ID分配給其中一個屬性。當這是在構造函數之外完成時,你必須將ID放在引號IE中getElementById(「whatever」);如何將DOM元素ID分配給Javascript函數構造函數中的屬性

在我的構造函數中,我不確定是否需要這樣做,如何添加它們,以及如果我正確地格式化它。

<form id="form"> 
<input type="text" id="bookText" value="Book"> 
</form> 

<script> 

function Item(itemName,itemDomID){ 
this.itemName = document.getElementById(this.itemDomID); 
}; 

var mybook = new Item(book,bookText);  // new object. 


</script> 
+0

等等,我有點困惑。你想保存身份證嗎?因爲此刻,您正在將元素分配給itemName – Johan

+1

您的函數看起來像document.getElementById的無用包裝器。改述你的問題。 –

回答

1

我有一個簡單的函數的構造,並希望DOM元素 ID分配給屬性之一。當這是在 構造函數之外完成時,您必須將ID放在引號中IE getElementById(「whatever」);

元素ID是一個字符串,分配一個字符串對象屬性不需要的功能,只是一個分配:

mybook.book = 'bookText'; 

當使用變量值傳遞,只需使用的變量名稱。該表達式將被評估以返回該值。構造函數應該是(注改變原):

function Item(itemName, itemDomID){ 

    this[itemName] = document.getElementById(itemDomID); 

} 

注意使用方括號來的itemName值分配給新屬性的名稱,而不是文本字符串「ITEMNAME」。

所以調用構造函數時,字符串值可以傳遞:

var mybook = new Item('book', 'bookText'); 

值將在順序的功能被分配到變量,因此itemName值被指定爲「書」 itemDomID分配值「bookText」。

在構造函數中,新對象將得到一個名爲「書」與任何由document.getElementById('bookText')返回的值屬性,它要麼是某個元素的引用,或null如果與ID沒有元素被發現。

+0

怎麼回事:document.write(mybook.itemName);顯示未定義 – William

+0

因爲myBook沒有* itemName *屬性,所以屬性名稱被設置爲'itemName'的**值**,它是* book *。所以試試'mybook.book'。 – RobG

0
document.getElementById(this.itemDomID); 

這將返回JavaScript對象。你可以使用像

var refObj=document.getElementById(this.itemDomID); 

var objName = refObj.id;

1

你的構造函數參數應該是字符串嗎?
try this in jsfriddle

<form id="form"> 
<input type="text" id="bookText" value="Book"> 
</form> 

​function Item(itemName,itemDomID){ 
    this.itemName = document.getElementById(itemDomID).value; 
}; 

var mybook = new Item("book","bookText");  // new object. 
+0

我不打算爲DOM元素的.value傳遞,但感謝這一點無論如何。我無意中學到了一些東西。是的,它應該是字符串。 – William

相關問題