gpt4 book ai didi

javascript - dojo.getAttr 不是一个函数

转载 作者:行者123 更新时间:2023-12-02 18:54:18 25 4
gpt4 key购买 nike

我正在用 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() 内同一页面上的所有内容都工作正常,所以这怎么可能?

最佳答案

如果 obj 是 DOM 节点:

var val = dojo.attr(node, attrName); // getter

dojo.attr(node, attrName, newValue); // setter

http://dojotoolkit.org/reference-guide/1.6/dojo/attr.html

如果 obj 是一个小部件:

var val = widget.get(attrName); // getter

widget.set(attrName, newValue); // setter

http://dojotoolkit.org/reference-guide/1.8/dijit/_WidgetBase.html

关于javascript - dojo.getAttr 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15532660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com