请务必阅读以下所有评论.不推荐使用Object.Watch和Object.Observe.请参阅Elliot B对更新(截至2018年6月)方法的评论.
我一直在寻找一种简单的方法来监控对象或变量的变化,我发现Object.Watch
,Mozilla浏览器支持这种方式,但IE不支持.所以我开始四处寻找,看是否有人写过某种等价物.
关于我发现的唯一一件事是jQuery插件,但我不确定这是不是最好的方法.我当然在大多数项目中都使用jQuery,所以我并不担心jQuery方面......
无论如何,问题是:有人能告诉我一个jQuery插件的工作示例吗?我有问题让它工作......
或者,是否有人知道任何可以跨浏览器工作的更好的替代品?
答案后更新:
谢谢大家的回复!我试过这里发布的代码:http: //webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html
但我似乎无法使其与IE一起工作.下面的代码在Firefox中运行良好,但在IE中没有任何作用.在Firefox中,每次Object.Observe
更改Object.watch()
时watcher.status
都会调用in ,您可以在页面上看到输出.在IE中,这不会发生,但我可以看到document.write()
更新值,因为最后一次watcher.watch()
调用显示正确的值(在IE和FF中).但是,如果没有调用回调函数,那那就毫无意义...... :)
我错过了什么吗?
var options = {'status': 'no status'},
watcher = createWatcher(options);
watcher.watch("status", function(prop, oldValue, newValue) {
document.write("old: " + oldValue + ", new: " + newValue + "<br>");
return newValue;
});
watcher.status = 'asdf';
watcher.status = '1234';
document.write(watcher.status + "<br>");
Run Code Online (Sandbox Code Playgroud) 我今天早上一直在寻找,我找不到任何简单的解决方案...基本上,我想捕获输入元素的变化,但也知道以前的值.
这是一个更改事件和最简单形式的输入元素.显然,我可以使用$(elem).val()来获取新值,但是我是否因为获得之前的值而缺少一个偷偷摸摸的方法?我没有在jQuery API中看到任何东西来执行此操作,但也许有人已经完成了这个并且有一些提示?
<script>
$(document).ready(function(){
$('#myInputElement').bind('change', function(){
//var oldvalue = ???
var newvalue = $(this).val();
});
});
</script>
<input id="myInputElement" type="text">
Run Code Online (Sandbox Code Playgroud)
我不反对编写我自己的解决方案,我只是想确保我不在这里重新创建轮子.
我必须支持其他人编写的 Access .mdb 文件。此 .mdb 中的按钮功能之一调用删除外部 MSSQL 数据库中的某些数据。一切都非常简单,但我以前从未见过这种语法:
DELETE
tblEquipmentConnections.SourceEquip,
tblEquipmentConnections.EquipmentConnectionID
FROM tblEquipmentConnections
WHERE
tblEquipmentConnections.SourceEquip = [Forms]![frmEquipment]![EquipmentID];
Run Code Online (Sandbox Code Playgroud)
那和这个有什么不同吗?
DELETE
FROM tblEquipmentConnections
WHERE
tblEquipmentConnections.SourceEquip = [Forms]![frmEquipment]![EquipmentID];
Run Code Online (Sandbox Code Playgroud)
我找不到指定特定列执行任何操作的情况 - 但我没有在 Access 上花费太多时间,所以我不确定 SQL 语法有多么不同......
谢谢!
我正在尝试根据视图获取列表中的项目数.到目前为止我尝试的每种方法只返回列表的总计.我已经尝试了搜索时遇到的每一种方法,一切都以相同的结果结束.
这是我尝试过的方法之一:
SPWeb web = SPContext.Current.Web;
SPView view = web.GetViewFromUrl("url to my view");
int count = view.ParentList.GetItems(view).Count;
Run Code Online (Sandbox Code Playgroud)
我的列表有28个项目,但我正在引用的视图过滤它并显示四个项目.我希望我的数量是4,而不是28 - 但28是我一直得到的.
这是我尝试过的另一种方法:
SPSite site = SPContext.Current.Site;
SPWeb web = site.OpenWeb();
SPQuery MyQuery = new SPQuery();
MyQuery.Query = "<Query><Where><Eq><FieldRef Name='strStatus' /><Value Type='Text'>submitted</Value></Eq></Where></Query>";
IEnumerable<SPListItem> results = web.Lists["Requests"].GetItems(MyQuery).Cast<SPListItem>();
// results.Count() is 28... should be 4
Run Code Online (Sandbox Code Playgroud)
所以在这个方法中,我正在跳过视图并尝试传入CAML查询.在U2U中测试我的查询时,按预期返回四个结果...
更大的图片是我在自定义菜单控件的OnMenuItemDataBound事件处理程序中执行此操作.我不知道这是否会产生重大影响,但我想要的是,每个项目链接到特定列表中的视图,将显示链接旁边该视图中的项目数.
任何想法为什么我得到一个列表总数而不是过滤总数?谢谢!
我正在寻找有关在C#中表示此JSON对象的最佳方法的建议.
为了清楚起见,我不是要尝试从现有的JSON字符串转换为C#对象 - 这是从头开始.我可以想象我正在尝试创建的JSON,但不确定如何翻译...
[
{
"EquipmentID": "ASD2F",
"ConnectionIDs":[
{ "ConnectionID": "HD4GH" },
{ "ConnectionID": "KAFD3" },
{ "ConnectionID": "NA3AF" }
]
},
{
"EquipmentID": "GAE31",
"ConnectionIDs":[
{ "ConnectionID": "HJA03" },
{ "ConnectionID": "FGVA1" },
{ "ConnectionID": "GHAD8" }
]
}
]
Run Code Online (Sandbox Code Playgroud)
这基本上是一个EquipmentID数组,每个EquipmentID包含一个ConnectionID数组.我一直在修补一些包含数组,列表等的不同类......但我似乎无法解决任何问题.我知道这应该非常简单,所以提前感谢帮助!
javascript ×2
jquery ×2
c# ×1
dom-events ×1
events ×1
forms ×1
html ×1
json ×1
ms-access ×1
sharepoint ×1
spquery ×1
sql ×1