[英]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.