我正在建立一个网站,根据它的时间确定数组的值.我写了这个糟糕的(功能)脚本,我想知道我是否可以让它更简洁.我开始使用case/switch语句,但是在使用多个条件时遇到了麻烦.这是肮脏的行为:
if ($now < november 18th) {
$array_to_use = $home;
}
elseif (november 18th < $now && $now < november 21st ) {
$array_to_use = $driving;
}
elseif (november 21st < $now && $now < november 22nd) {
$array_to_use = $flying;
}
...
...
...
elseif (february 1st < $now) {
$array_to_use = $arrived;
}
else {
$array_to_use = $default;
}
Run Code Online (Sandbox Code Playgroud)
时间表实际上更复杂,其中有13个elseif陈述.有人可以确认我只是编码器的阻塞,有更好的方法吗?
编辑:我将Unix时间戳更改为粗略的实际时间,因此更容易理解我在做什么(希望如此)
编辑2:请原谅当前损坏的Javascript时钟,但这是我正在处理的网站:
时间表.
每个阵列都基于我的位置,根据它的时间有15个"它们当前".这是一个具有已知开始/结束时间的小问题域,因此灵活性不是关键,只需将其全部写入.您可以看到时间是如何连续的,并且一次只需要选择一个字符串数组.
如何使用addEventListener()为HTML表单的Submit按钮分配处理程序,类似于分配按钮的'onclick'属性,而不触发表单的默认submit()行为?
我可以毫不费力地为"提交"按钮的"onclick"属性分配自定义功能.自定义函数执行各种步骤,然后创建Ajax请求对象并使用它将数据发送到服务器.不会触发默认的submit()行为.
submitButton.onclick = function() {
mySubmit();
return false;
};
function mySubmit() {
//do stuff
notTheDefaultUrl = generateNonStandardUrl();
request = GetStandardAjaxRequestThingamabob();
request.open("POST", notTheDefaultUrl, true);
request.onreadystatechange = myHandler;
request.send(formData);
return false;
}
Run Code Online (Sandbox Code Playgroud)
但是使用addEventListener(),浏览器提交请求两次 - 一次在Ajax请求对象下,再次使用默认的HTML表单submit()行为.(我可以告诉b/c mySubmit函数将数据发送到与默认值不同的URL - 但默认和Ajax URL都出现在服务器日志中.)
var func = window['mySubmit'];
submitButton.addEventListener('click', func, false);
Run Code Online (Sandbox Code Playgroud)
我知道分配给按钮的函数必须返回'false'以防止触发默认的submit()行为.我认为mySubmit()做到了这一点,并且我试图通过addEventListener编写传入的函数来更明确地返回false(而不是'func','function(){mySubmit(); return false}')但是这些dosn也没工作.
那我该怎么做?
UPDATE
对Peter的评论提出了一些浏览器兼容性问题; 另外,IE不支持addEventListener().此代码解决了这些问题 我在Firefox和IE 8中测试过它.
function func( event ) {
if ( event.preventDefault ) { event.preventDefault()};
event.returnValue = false;
// do whatever
}
if (submitButton.addEventListener) {
submitButton.addEventListener('click', func, false);
}
else …Run Code Online (Sandbox Code Playgroud) 我知道这样做的反制方法.我想知道是否有一个很好的和紧凑的方式来做到这一点.
我有一个第三方服务器,它有一个传统的ASP页面,它接收表单数据.从我的网页上我有一个PHP脚本,它使用curl将字段发送到ASP页面.除非用户在文本中包含撇号字符,否则一切正常.在后端,它被收到"\".甚至更奇怪的是它只能从我的托管网站上做到这一点.当我在本地测试它工作正常.
以下是发送数据的PHP代码段:
$datatopost = array ();
foreach($_POST as $key => $data) {
$datatopost[$key] = $data;
}
$ch = curl_init("http://my.server.com/validate.asp");
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $datatopost);
$result = curl_exec($ch);
Run Code Online (Sandbox Code Playgroud) 我已经看到至少两种方法在ASP.NET Web应用程序中包含外部log4net配置文件:
在AssemblyInfo.cs文件中具有以下属性:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log.config", Watch = true)]
Run Code Online (Sandbox Code Playgroud)
在Global.asax.cs中调用XmlConfigurator:
protected void Application_Start()
{
XmlConfigurator.Configure(new FileInfo("Log.config"));
}
Run Code Online (Sandbox Code Playgroud)
这样做的最佳做法是什么?
假设我想在AOP方法中使用依赖注入框架,目标是生成代码模块.共享接口所有权的最佳实践是什么?所有权我指的是为了使用接口而需要引用的代码体.
我的第一个猜测是,在AOP中,您将定义一个接口的类库,按方面命名.例如:company.aspect.logging.ILogger.然后,每个模块将引用此库,并避免在ILogger的实现中涉及任何代码也定义ILogger.
最佳做法?
我想坚持一个非常简单的字符串.例如"abc".最简单的方法是什么?我不想使用SqlLite数据库.
当你想要适应的所有东西都是一个持有字段而不是方法或函数的类时,使用适配器模式是否是最好的设计?
例如,以下是解决此问题的最佳方法吗?我正在使用C#,如果这会对你的答案产生任何影响.
NewClass
private Guid _guidId;
AdpaterClass : NewClass
private Guid _guidId;
LegacyClass : LegacyBaseClass
private Guid _guidId;
private String _stringDescription;
private DateTime _dateTimeValue;
Run Code Online (Sandbox Code Playgroud)
我为什么要这样做?
我正在尝试将LegacyClass和另一个类降低到相同的基线,以便我可以使用单个常用方法对_guidId进行排序/过滤.常用方法将引入一个Guid列表,检查_GuidId并查看它是否匹配,然后基于此执行某些功能.我的目标不是多次编写相同的排序/过滤功能,因为它们几乎完全相同.
谢谢你的建议.
我需要保存一个ActiveRecord对象的副本,所以我使用的是:
@original = Model.find(params[:id])
@copy = @original.clone
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将其保存到Postgres时:
PGError:错误:列"id"中的空值违反了非空约束
在控制台中:
@ copy.id
=>无
如何让ActiveRecord不在INSERT语句中发送id列?
更新:
我做了一个小改动后问题就消失了:
@new = Model.new(params[:model])
@original = Model.find(x)
@clone = @original.clone
@new.foreign_key_id = @clone.foreign_key_id
Run Code Online (Sandbox Code Playgroud)
我用最后一行替换了:
@new.foreign_key_id = @original.foreign_key_id
Run Code Online (Sandbox Code Playgroud)
此更改从INSERT语句中删除了"id".在成功完成此更改后,我立即恢复了代码并尝试重现错误.我一直无法重现错误.也许是13日星期五?
我有一个QGroupBox,里面有几个QRadioButtons,在某些情况下我想要取消选中所有单选按钮.似乎在进行选择时无法做到这一点.你知道我可以做到这一点的方法,或者我应该添加一个隐藏的radiobutton并检查onen以获得所需的结果.
c# ×2
php ×2
activerecord ×1
ajax ×1
aop ×1
asp-classic ×1
asp.net ×1
curl ×1
exception ×1
iphone ×1
java ×1
javascript ×1
log4net ×1
optimization ×1
persistence ×1
postgresql ×1
qt ×1
try-catch ×1