2011-08-01 9 views
0

要素の属性をプログラムで設定しようとしていますが、firebugはエラーを返し続けます。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メソッドを使用してください。

関連する問題