Javascript 如何从YUI沙盒获取数据
我想从YUI沙盒中获取数据并将其传递给另一个函数。例如,如果我有类似于:Javascript 如何从YUI沙盒获取数据,javascript,yui,Javascript,Yui,我想从YUI沙盒中获取数据并将其传递给另一个函数。例如,如果我有类似于: YUI().use('node','stylesheet', function (Y) { var sheet = Y.StyleSheet('#myStyle'); // Some logic... var styleSheetText = sheet.getCssText("h1"); }); console.log(styleSheetText); //still undefined 如
YUI().use('node','stylesheet', function (Y)
{
var sheet = Y.StyleSheet('#myStyle');
// Some logic...
var styleSheetText = sheet.getCssText("h1");
});
console.log(styleSheetText); //still undefined
如何在console.log中获取o值样式表文本?我现在不知道这是JavaScript问题还是YUI问题。两者都有。在JavaScript中,您无法在声明变量的函数之外看到该变量的值。如果在YUI().use()的回调函数内声明styleSheetText,则无法在该回调函数外看到其值 这也是一个YUI问题。YUI().use()的回调函数将异步执行,也就是说,执行时间是不可预测的,但总是在执行console.log()语句之后。因此,即使您将styleSheetText设置为全局,以避免变量可见性问题,它仍然会显示未定义
通常,将所有代码放在YUI()的回调函数中。use()。这可以解决两个问题。你能给我举个例子吗?我不知道你所说的回调函数是什么意思。任何YUI组件的示例都可以作为示例。回调函数是作为YUI()的最后一个参数提供的函数。use()。当有一个回调函数时,它通常是一个明确的信号,表明该操作是异步的,基本上,该函数会触发一个可能需要一些时间才能完成的操作,因此该函数是作为一种方式提供的,表示“当你处理完我的请求后,请给我回电话”,即名称。在浏览器中,您通常会开始执行代码以响应window.onload事件或类似事件,这样可以确保在代码尝试对DOM执行操作之前,DOM中的所有内容都已就绪。当您使用YUI时,YUI().use()包装是您在执行任何代码之前测试的又一个条件。因此,不要仅仅用YUI().use()语句包装对Y.StyleSheet的调用,而是用YUI().use()包装整个代码,就像用window.onload的侦听器包装一样。