问题相当简单和技术性:
var it_works = false;
$.post("some_file.php", '', function(data) {
it_works = true;
});
alert(it_works); # false (yes, that 'alert' has to be here and not inside $.post itself)
Run Code Online (Sandbox Code Playgroud)
我想要实现的是:
alert(it_works); # true
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?如果没有可以$.post()返回要应用的值it_works?
将代码放入try-catch块而不是执行各种错误检查会更快吗?
例如..
function getProjectTask(projectTaskId) {
if (YAHOO.lang.isUndefined(projectTaskId) || YAHOO.lang.isNull(projectTaskId) && !YAHOO.lang.isNumber(projectTaskId)) {
return null;
}
var projectPhaseId, projectPhaseIndex, projectTaskIndex, projectPhases, projectPhase, projectTask;
if (!YAHOO.lang.hasOwnProperty(projectTaskPhaseMap, projectTaskId)) {
return null;
}
projectPhaseId = projectTaskPhaseMap[projectTaskId];
if (YAHOO.lang.isUndefined(projectPhaseId) || YAHOO.lang.isNull(projectPhaseId) || !YAHOO.lang.hasOwnProperty(scheduleData.ProjectPhasesMap, projectPhaseId)) {
return null;
}
projectPhaseIndex = scheduleData.ProjectPhasesMap[projectPhaseId];
if (YAHOO.lang.isUndefined(projectPhaseIndex) || YAHOO.lang.isNull(projectPhaseIndex) || !YAHOO.lang.hasOwnProperty(scheduleData.ProjectPhases[projectPhaseIndex])) {
return null;
}
projectPhase = scheduleData.ProjectPhases[projectPhaseIndex];
if (!YAHOO.lang.hasOwnProperty(projectPhase.ProjectTasksMap, projectTaskId)) {
return null;
}
projectTaskIndex = projectPhase.ProjectTasksMap[projectTaskId];
if (YAHOO.lang.isUndefined(projectTaskIndex) || YAHOO.lang.isNull(projectTaskIndex)) {
return null;
}
projectTask = scheduleData.ProjectTasks[projectTaskIndex]; …Run Code Online (Sandbox Code Playgroud) 我目前正在维护大量的JS文件,并且依赖性问题越来越多.现在我将每个函数放在一个单独的文件中,我手动维护一个数据库来计算函数之间的依赖关系.
这我想自动化.例如,如果我有函数f
Array.prototype.f = function() {};
Run Code Online (Sandbox Code Playgroud)
在另一个函数g中引用
MyObject.g = function() {
var a = new Array();
a.f();
};
Run Code Online (Sandbox Code Playgroud)
我希望能够检测到g正在引用f.
我该怎么做?我从哪里开始?我是否需要实际编写编译器,或者我可以调整Spidermonkey吗?还有其他人已经这样做了吗?
任何指示让我开始非常感谢
谢谢Dok
我正在编写一个Web应用程序(好吧,实际上它最终将是一个OS X Dashboard小部件,但我决定首先将其原型化为一个简单的网页),需要从本地JSON文件加载一些初始化数据.我的代码看起来像这样:
function loadDatos() {
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', 'datos.json', true);
xobj.onReadyStateChange = function () {
if (xobj.readyState == 4) {
var jsonTexto = xobj.responseText;
ProcessTheData(jsonTexto);
}
}
xobj.send(null);
}
Run Code Online (Sandbox Code Playgroud)
该函数从HTML文件的BODY标记中的onLoad()事件中调用.现在,从我在调试时看到的,函数被执行,但onReadytStateChange事件处理程序永远不会被调用.
我该怎么办?我认为使用XMLHttpRequest来访问本地文件有点奇怪,但是我看到处理这个问题的新教程似乎说它应该有效(我见过的99%的文档都谈到了如何从远程服务器加载JSON,而不是从本地文件加载JSON.
我正在使用Firefox 3.6.10进行测试,但我也尝试使用Safari 4.
我正在使用JavaScript并尝试对div进行偏斜效果.
首先,看看这个视频:http://www.youtube.com/watch?v = yy8Uy81smpE(0:40-0:60应该就够了).移动窗口时,视频显示了一些不错的变换(倾斜).我想要做的是同样的事情:当我移动它时扭曲div.
目前我只有一个简单的div:
<div id="a" style="background: #0f0; position: absolute; left: 0px; top: 0px;"></div>
Run Code Online (Sandbox Code Playgroud)
我使用CSS3的transform属性做了一个简单的偏斜变换,但是我的实现是错误的.有没有很好的教程或数学网站或资源来描述这背后的逻辑?如果我只知道逻辑和数学,我知道JavaScript和CSS足以实现.我试过阅读FreeWins源代码,但我不擅长C.
我接受任何足智多谋的答案或伪代码.我的拖动系统是一个更大的系统的一部分,因此,现在我发布了一些真正的代码,如果没有给你整个系统它是不行的(我现在不能做).因此,您无法按原样运行此代码.我使用的代码是这个(虽然略有修改),以证明我的想法:
/**
* The draggable object.
*/
Draggable = function(targetElement, options) {
this.targetElement = targetElement;
// Initialize drag data.
this.dragData = {
startX: null,
startY: null,
lastX: null,
lastY: null,
offsetX: null,
offsetY: null,
lastTime: null,
occuring: false
};
// Set the cursor style.
targetElement.style.cursor = 'move';
// The element to move.
this.applyTo = options.applyTo || targetElement; …Run Code Online (Sandbox Code Playgroud) $("#someDiv").attr("scrollHeight")适用于所有浏览器的jquery 1.3.2.但是在更新到jquery 1.6.1时,它只适用于IE9.Firefox 4.0.1,Google Chrome 11和Safari 5都返回undefined.
$("#someDiv").get(0).scrollHeight但仍适用于所有浏览器.
有人知道发生了什么吗?attr("scrollHeight")在最新的jquery(即版本1.6.1)中被打破了吗?
我必须处理大量图像.首先,我需要检查图像的大小是否大于50x60并适当增加坏图像的计数器.
我的问题是,速度n.width/ n.height在Internet Explorer 8极低.我查了一下n.offsetWidth,n.clientWidth但速度方面都是一样的.我不能使用n.style.width,因为这个值并不总是设置在<img />我感兴趣的标签上.
考虑以下代码:
使用Javascript
var Test = {
processImages: function () {
var fS = new Date().getTime();
var minimagew = 50,
minimageh = 60;
var imgs = document.getElementsByTagName('img');
var len = imgs.length,
isBad = 0,
i = len;
while (i--) {
var n = imgs[i];
var imgW = n.width;
var imgH = n.height;
if (imgW < minimagew || imgH < minimageh) {
isBad++;
}
} …Run Code Online (Sandbox Code Playgroud) 与jQuery .live()等效的Dojo是什么?
http://api.jquery.com/live/
我找到的唯一解决方案是dojo.disconnect事件处理程序,并在向页面添加动态标记后重新连接它们.
我试图弄清楚如何在原始的javascript(没有jQuery等)中找到具有特定文本的元素并修改该文本.
我解决方案的第一个化身......不够充分.我做的基本上是:
var x = document.body.innerHTML;
x.replace(/regular-expression/,"text");
document.body.innerHTML = x;
Run Code Online (Sandbox Code Playgroud)
天真的我以为我成功地飞扬了颜色,特别是因为它如此简单.所以我在我的例子中添加了一个图像,并认为我可以每5秒检查一次(因为这个字符串可能会动态地进入DOM)...并且图像每5秒闪烁一次.
哎呀.
所以,必须有一个正确的方法来做到这一点.一种专门挑出特定DOM元素并更新该DOM元素的文本部分的方法.
现在,总是"递归搜索孩子,直到你找到最深的孩子用字符串"方法,我想避免.即便如此,我仍然怀疑"将innerHTML更改为不同的东西"是更新DOM元素的正确方法.
那么,在DOM中搜索字符串的正确方法是什么?更新DOM元素文本的正确方法是什么?