属性値を変更できる Dojo 1.6 で Dojo 関数を作成しています。
function replaceAttributeDojo(obj, attrName, newValue) {
var value = dojo.getAttr(obj, attrName);
if (value !== 'undefined') {
//console.log('Found attribute '+attrName+' on object '+obj.attr('nodeName')+'[id='+obj.attr('id')+', name='+obj.attr('name')+', widgetid='+obj.attr('widgetid')+']');
if (value == '') {
//console.log('Attribute value is empty, removing the attribute');
//obj.removeAttr(attrName);
return;
}
var newAttrValue = value.replace(/[\d]+/g, newValue);
dojo.setAttr(obj, attrName, newAttrValue);
} else {
//console.log('Did not find attribute '+attrName+' on object '+obj.attr('nodeName')+'[id='+obj.attr('id')+', name='+obj.attr('name')+', widgetid='+obj.attr('widgetid')+']');
}
}
コードをトレースし、この行で失われた firebug を見つけます
var value = dojo.getAttr(obj, attrName);
そして、それは私に言っています
dojo.getAttr is not a function
関数は dojo.ready の外部で定義されていますが、内部で呼び出されdojo.ready()
ます。
dojo.ready() 内の関数を呼び出すセクションは次のとおりです。
dojo.query("div, input, select", row).forEach(function(){
replaceAttributeDojo(row, 'id' , index);
replaceAttributeDojo(row, 'name' , index);
replaceAttributeDojo(row, 'widgetid' , index);
});
同じページ内のすべてがdojo.ready()
正常に機能するのに、どうしてこれが可能になるのでしょうか?