如何从JavaScript中删除数组中的空元素?
有一种简单的方法,还是我需要循环并手动删除它们?
基本上,我有一个iframe
嵌入在页面中,并iframe
有一些我需要从父页面调用的JavaScript例程.
现在相反的情况非常简单,因为你只需要打电话parent.functionName()
,但不幸的是,我需要完全相反.
请注意,我的问题是不会改变的源URL的iframe
,但是调用在定义的函数iframe
.
如何在Google Chrome JavaScript控制台中打印调试消息?
请注意,JavaScript控制台与JavaScript调试器不同; 它们具有不同的语法AFAIK,因此JavaScript调试器中的print命令在此处不起作用.在JavaScript控制台中,print()
将参数发送到打印机.
我在我的应用程序中使用textarea组件,并动态控制它们的高度.当用户键入时,只要有足够的文本,高度就会增加.这适用于IE,Firefox和Safari.
但是,在Safari中,右下角有一个"句柄"工具,允许用户通过单击和拖动来调整文本区域的大小.我还注意到stackoverflow的一个问题页面中的textarea问题.这个工具很混乱,基本上妨碍了.
那么,无论如何都要隐藏这个调整大小的句柄?
(我不确定"句柄"是否是正确的词,但我想不出更好的词.)
我需要将JSON中表示的一些JavaScript对象反序列化为适当的C#类.鉴于自动属性的优点,我宁愿在这些类中使用它们而不是只有字段.不幸的是,.NET序列化引擎(至少在默认情况下)完全忽略反序列化的自动属性,只关心支持字段,这显然不存在于JavaScript对象中.
鉴于没有标准的方法来命名支持字段,说实话,我甚至不想打扰"让我们创建一个看起来像C#支持字段的JavaScript对象"的方法,因为它听起来有点脏,唯一的方法如果我可以强制序列化引擎以某种方式忽略支持字段并直接使用属性,我可以将JavaScript字段序列化为C#auto-properties.不幸的是,我无法弄清楚这是如何完成的,或者是否可以完成.任何想法,将不胜感激.
编辑:这是一个例子:
使用Javascript:
function Cat()
{
this.Name = "Whiskers";
this.Breed = "Tabby";
}
var cat = new Cat();
Run Code Online (Sandbox Code Playgroud)
然后将其序列化为"{Name:'Whiskers'}".
C#类:
[Serializable()]
public class Cat
{
public string Name { get; set; }
public string Breed { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
而反序列化代码失败了:
new DataContractJsonSerializer(typeof(Cat)).ReadObject(inputStream);
Run Code Online (Sandbox Code Playgroud)
从例外情况可以看出它失败了,因为它正在寻找支持领域.
EDIT2:这是例外,如果有帮助(没有内部异常):
System.Runtime.Serialization.SerializationException
"数据合同类型'Test.Cat'无法反序列化,因为
<Name>k__BackingField, <Breed>k__BackingField
找不到所需的数据成员' ."
在C#或.NET中是否有一种方法可以在调用方法时触发事件的方法上创建属性?理想情况下,我可以在调用方法之前和之后运行自定义操作.
我的意思是这样的:
[TriggersMyCustomAction()]
public void DoSomeStuff()
{
}
Run Code Online (Sandbox Code Playgroud)
我完全不知道怎么做或者根本不可能,但是System.Diagnostic.ConditionalAttribute可能在后台做类似的事情.我不确定.
编辑:我忘了提到由于我的具体情况,性能不是一个问题.
是否可以在正则表达式中跳过捕获组中的几个字符?我正在使用.NET正则表达式,但这无关紧要.
基本上,我要找的是:
[随机文字] AB-123 [随机文字]
我需要捕捉'AB123',没有连字符.
我知道AB是2或3个大写字符,123是2或3位数,但这不是困难的部分.困难的部分(至少对我来说)是跳过连字符.
我想我可以单独捕获它们然后在代码中连接它们,但我希望我有一个更优雅的,仅正则表达式的解决方案.
有什么建议?
另一个新手(Common)LISP问题:
基本上在大多数编程语言中,函数接受变量的引用而不仅仅是值,即通过引用传递而不是传递值.让我们说,为了简单起见,我想编写一个LISP函数来接收变量并将变量的值增加一:
(defun increase-by-one (var)
(setf var (+ var 1)))
Run Code Online (Sandbox Code Playgroud)
现在显然问题是这个函数只增加了堆栈上变量副本的值,而不是实际的原始变量.我也试图通过使用宏来取得成效,虽然我有这种感觉,使用宏是正确的方法.
我在LISP中一直打到这堵墙,我确信必须有办法解决这个问题,或者在LISP中我有没有想过这个问题的方法完全不同?这样的事情是如何在LISP中完成的?
编辑:多人建议使用incf
.我只用这个例子以简单的方式演示问题,我实际上并没有寻找重新实现incf.但无论如何,谢谢你的建议.
新手Common Lisp问题在这里.
有没有办法重置环境状态?我的意思是,是否有一些命令使REPL恢复到启动后的状态,即uninterning所有变量,函数等.或者如果不是在Common Lisp标准中,是否有一些扩展在SBCL(我使用的实现)这样做?
(编辑:我知道在SLIME中,Mx slime-restart-inferior-lisp可以做到这一点,但我想知道是否有办法没有重新启动过程)