簡體   English   中英

javascript問題設置屬性

[英]javascript problem setting attribute

我正在嘗試以編程方式設置元素的屬性,但是Firebug不斷給出錯誤:obj.setAttribute不是一個函數。 我使用的是jQuery,因此我將展示一些額外的代碼,以便您可以查看上下文。

代碼如下:

$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>

任何想法為什么會這樣? 非常感謝你!

更新

我嘗試了這個:

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

它不再給出錯誤了。 但是,它也不修改屬性。 我不知道為什么 任何人?

ratingRender的第一個子節點是僅包含空格的文本節點:

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

如果您使用的是jQuery,為什么不使用... jQuery?

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

您的firstChild是空格。 關於MDN文檔的說明

你為什么不使用jQuery? 嘗試這個

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

在執行DOM操作時,將本機API與jQuery API混合在一起只會給您帶來麻煩。 jQuery使用包裝器允許您操作DOM,因此您無需執行setAttribute。 相反,請使用jQuery的attr方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM