2011-08-01 118 views
0

我試圖以編程方式設置元素的屬性,但螢火蟲不斷給出錯誤:obj.setAttribute不是一個函數。我使用jQuery,所以我將顯示一些額外的代碼,以便您可以看到上下文。javascript問題設置屬性

的代碼如下:

$j(function(){ 
    function callback(response) { 

     if (response.status == 200) { 
      var data = response.responseBody; 
      console.log(data) 
      if (data.length > 0) { 
       var artistData = $j.parseJSON(data); 
       var marker = new google.maps.Marker({ 
         position: new google.maps.LatLng(artistData.location.lat, artistData.location.lng), 
         map: map 
        }); 

       var obj = document.getElementById('ratingRender').firstChild; 
       obj.setAttribute("model", "[artist: deftones, rating: 4.0, artistID: 1]"); 
       document.getElementById('recommendedList').appendChild(obj); 
      } 
     } 
     } 

    $j.atmosphere.subscribe('${resource(dir: '/atmosphere/recommend')}', 
     callback, 
     $j.atmosphere.request = {transport: 'streaming'}); 

    $j('#buttonPost').click(function() { 
     var searchedArtist = '${search.artist}'; 
     $j.get('${createLink(action: "recommend")}?artist=' + searchedArtist); 
    }); 
}); 

和ratingRender DIV:

<div id="ratingRender" style="display: none"> 
    <g:render template="/artist/rate" model="[artist: deftones, rating: 3.0, artistID: 1]" /> 
</div> 

任何想法,爲什麼會出現這種情況? 非常感謝!

UPDATE

我試着用這樣的:

var obj = $('#ratingRender').children().eq(0); 
obj.attr("model", "[artist: deftones, rating: 4.0, artistID: 1]"); 

,並沒有給出錯誤了。但是,它也不會修改該屬性。我不知道爲什麼。任何人?

+0

我認爲它*可能與這個事實有關,這不是一個有效的屬性,也不是一個有效的元素。 –

回答

0

爲什麼不使用jquery?試試這個

var obj = $('#ratingRender').children().eq(0); 
obj.attr("model", "[artist: deftones, rating: 4.0, artistID: 1]"); 
0

ratingRender第一個孩子是隻含有空格的文本節點:

var obj = document.getElementById('ratingRender').firstChild; 
obj.setAttribute("model", "[artist: deftones, rating: 4.0, artistID: 1]"); 
0

如果你使用jQuery,爲什麼不使用jQuery的...?

var obj = $("#ratingRender").children().first(); 
obj.attr("model", "[artist: deftones, rating: 4.0, artistID: 1]"); 
0

當你在做DOM操作時,將本地API與jQuery API混合只會讓你陷入困境。 jQuery使用包裝來允許你操作DOM,所以你不需要做setAttribute。相反,使用jQuery的attr方法。