2014-04-01 44 views
2

下面的代碼工作正常:如何在函數中獲取id?

function createElement(element) { 
    var id = $(element).attr('id');//and do your stuff with the id 
} 
createElement('<div id="abc">Some content</div>'); 

,但我想用純JavaScript這樣的:

function createElement(element) { 
    var id = this.id;//returns undefined 
    console.log(id); 
} 
createElement('<div id="abc">Some content</div>'); 

我也試過element.id但仍然導致不確定的。那麼我怎樣才能得到與純JavaScript的ID abc?


我也試過這樣:

function createElement(element) { 
    var htmlObject = document.createElement('div'); 
    htmlObject.innerHTML = element; 
    var id = htmlObject.id;//and do your stuff with the id 
    console.log(id); 
} 
createElement('<div id="abc">Some content</div>'); 

但返回(空字符串)

+3

爲什麼你使用'this'? 'this'與'element'無關。 – user2357112

+0

那麼,我該怎麼辦? –

+1

除非你有一個非常有說服力的理由,否則通常最好堅持jQuery所提供的。我不知道「純JavaScript」是什麼意思,只是說「沒有擴展名的JavaScript」。 – tadman

回答

1

你幾乎有:

function createElement(element) 
{ 
    var div = document.createElement('div'); 
    div.innerHTML = element; 

    var id = div.firstChild.id; // use firstChild 
    console.log(id); 
} 
createElement('<div id="abc">Some content</div>'); 

Demo

1

對於較新的瀏覽器jQuery將使用的DOMParser內部,並且做這樣的事情

function createElement(element) { 
    var doc = new DOMParser().parseFromString(element, "text/html"); 
    var elem = doc.body.firstChild; 
    console.log(elem.id) 
} 

FIDDLE

這是使用內置解析器執行此操作的首選方式,但它在IE8及其以下版本中不受支持,您可能必須使用innerHTML等,因此您必須爲DOMParser添加一個回退瀏覽器是一個問題。