我有一个非常简单的问题,其解决方案结果并非如此简单.
我想在 a 的每个选项前面添加图像selectfield.为了更准确,我想将图像添加到pickerit触发器,还要添加到selectfield的当前值.
为了简单起见,我将创建一个小例子:
比方说,你希望用户在钻石,心形,黑桃和俱乐部这四种扑克牌套装中选择一种.要支持视觉识别,您需要在每个套装名称前面添加相应的符号,因此它看起来像这样:

我首选的一个sencha触摸组件,可以自然地从一组给定的选项中进行选择selectfield.不幸的是,它似乎只能显示纯文本,仅此而已.在深入了解sencha触摸源之后,我终于提出了半个解决方案.基本上,我传递了selectfield一个自定义defaultPhonePickerConfig,其中相应的picker(用于selectfield显示选项)用于分配自定义itemTpl.在itemTpl没有休息,也就是增加了一些HTML来显示图像:
defaultPhonePickerConfig: {
listeners: {
initialize: function() {
var slots = this.query('pickerslot');
Ext.each(slots, function(slot) {
slot.setItemTpl('<img src="someImage.jpg"> {text}');
});
},
change: function() {
// reconstruct the selectfield's change handler,
// since it gets overwritten
var iconSelect = Ext.Viewport.query('#IconSelect')[0];
iconSelect.onPickerChange.apply(iconSelect, arguments);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个解决方案的工作小提琴可以在这里找到.
我的解决方案并不是那么糟糕,但是有一个轻微的cosmetical问题,这对我来说是不可接受的:图标只显示在 …
我正在尝试解析我大学提供的课程安排,以便将信息导入某种日历.可以在此处看到时间表的示例:http:
//www.asw-berufsakademie.de/fileadmin/download/download/Sked%20Stundenplan/WIA13-7.%20Block.html
在我看来,自动生成的HTML内容是一团糟,很难掌握.例如,表格主要是用rowpans和colspans构建的(代码中的单元格位置与浏览器中的实际视觉位置相比似乎是部分任意的).
我已经尝试过的:
现在我不认为传统的HTML解析会让我走得太远,至少不会在可接受的开发时间内.我正在寻找的是从复杂的HTML表中获取信息的其他方法,例如YQL,或者可以使用col-/rowspans对这些表进行规范化的实用程序.因为我没有任何具体的想法,我主要是要求提供一些其他方法的提示或提示.
是否有其他更合适的方法来解析这些表格,还是我坚持使用传统的HTML解析?
编辑:
代表请求,我将粘贴一个原始代码示例...
本星期:

此代码的结果:http:
//pastebin.com/BJduUVtU
编辑2:
由于一些解析讨论,我还将添加我的PHP代码.这是我第一次使用PHP,所以它不是很复杂.它应该更深入地了解我在理论上解析表格的程度.实际工作发生在函数parseSkedTable()中,请专注于此.此外,我想指出评论中出现的"双重课程"一词,它描述了两个不同的课程同时发生(课程将在这样的时刻分开).这些课程的一个例子可以在第二周找到:http:
//www.asw-berufsakademie.de/fileadmin/download/download/Sked%20Stundenplan/WIB14-4.%20Block.html
它看起来像这样:

该周的相应HTML代码也可以在这里访问:http:
//pastebin.com/gLTWz5KU
现在PHP代码(我很难翻译评论,因为我已经用我的第一语言努力表达它们了...我希望它们可能仍然有用):http:
//pastebin.com/Nzi8m2v8
更新
到目前为止,我的解析问题已经有了一些解决方案,每个解决方案都使用JavaScript.由于JavaScript(由于能够使用浏览器呈现的数据而在这里特别强大)似乎是从HTML检索可靠信息的唯一有效方法,我现在正在寻找一种方法来实现某种无头浏览器或渲染引擎在我的免费服务器上x10hosting.com.遗憾的是,我既不能安装softaculous提供的软件,也不能使用PHP的exec()命令.
任何想法将不胜感激!
为了完整起见,我将发布两个解决方案,直到现在:
Pierre Dubois的jQuery解析器:
(function($){$(document).ready(function(){
var _pe = window.pe || {
fn : {}
};
var tblNumber = 0; // Just a incremental number to identify the schedule item …Run Code Online (Sandbox Code Playgroud)我想使用Fn+ S来模拟Ctrl+ S,到目前为止这是我的代码:
#InstallKeybdHook
#Persistent
SC126 & s::
Send ^{s}
return
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道Fn密钥的扫描码.
我该怎么找到它?
我正在尝试使用 AutoHotkey 读取 Windows CMD 的标准输出。例如,我想将setAHK 内的控制台命令的输出存储在变量中。我不久前已经实现了它,这让我更加困惑为什么它现在不起作用。
在 AHK 论坛中,有一个关于CMDret 的相当老的线程,这是一个基于 DLL 的功能,可以完全满足我的需求。第一个问题是找到一个可用的下载,因为帖子中的所有链接都已失效。Google 给了我另一个网站,托管v3.1.2。虽然似乎有一个较新的版本(分别是v3.2.1 4d Beta),但我检查了它并测试了一个简单的示例:
msgbox % CMDret(COMSPEC " /C set")
CMDret(CMD)
{
VarSetCapacity(StrOut, 10000)
RetVal := DllCall("cmdret.dll\RunReturn", "str", CMD, "str", StrOut)
Return, %StrOut%
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,MsgBox 中什么也没有包含。然后我检查了RetVal哪个值为0;随附的自述文件说:
如果函数失败,返回值为零。
再往下写着:
注意:当前只有 32 位控制台应用程序可以使用此 dll 版本的 CMDret(v3.1.2 或更低版本)。需要 command.com 的调用可能不会产生任何输出,并且可能会崩溃。为了避免这种情况,我在下载中包含了一个名为“cmdstub.exe”的文件(在 Win9x 文件夹中)。当调用16 位控制台应用程序以启用返回输出时,应使用此文件 。
总之,我不确定问题是什么。我的机器运行在 64 位上。但自述文件中的相应条款是否应该仅排除 16 位系统,还是仅包括 32 位系统?
如果计算架构可能不是问题所在,那么问题可能是什么? …
我基本上试图从特定索引处的整数中删除一点.也就是说,我不想取消/清除这一点; 我实际上想剥离它,以便每个更高的位向下移动,替换其位置的相应位.在视觉上,可以将其与从数组中删除元素或从字符串中删除字符进行比较.
为清楚起见,举例说明:
1011011 (original number)
^ index = 2
0101111 (result)
10000000000000000000000000000001
^ index = 31
00000000000000000000000000000001
1111111111111111111111111111110
^ index = 0
0111111111111111111111111111111
Run Code Online (Sandbox Code Playgroud)
我充满自信地开始转移一些东西,并提出了以下Java方法......
public static int removeBit(int num, int i) {
int out = (num >>> (i + 1)) << i;
out |= (num << (32 - i)) >>> (32 - i);
return out;
}
Run Code Online (Sandbox Code Playgroud)
...除了一些极端情况外,几乎总是有效的:
10000000000000000000000000000001 (= Integer.MAX_VALUE - 1)
^ index = 31, results in:
10000000000000000000000000000001
1011011
^ index = 0, results in:
1111111
Run Code Online (Sandbox Code Playgroud)
换句话说,如果索引是0或31(最小或最高位),我的方法将输出垃圾.
我似乎无法绕过它,这就是为什么我要问: …
因为有时,我需要使用键盘上不存在的特殊字符将文本翻译成不同的语言,例如\xc4\xb1, \xc5\x9f, \xc3\xb1, \xc4\x9f。
我创建了一个脚本,将->AutoHotKey的组合转换为,以与其他字符相同的方式。^ + ^ + s\xc5\x9f
该脚本工作正常,但仅当第一个字符之前的字符^是空格或第一个字母时才有效。例如,当输入ma^^n<- 时,这不会改变我的角色,而^^n<- 会改变它。
这是脚本,我在创建脚本时指定我只学习了这种语言:
\n\n:*c:^^S::\nSendUnicodeChar(0x015E)\nReturn\n\n:*c:^^s::\nSendUnicodeChar(0x015F)\nReturn\n\n:*c:^^i::\nSendUnicodeChar(0x131)\nReturn\n\n:*c:^^I::\nSendUnicodeChar(0x130)\nReturn\n\n:*c:^^g::\nSendUnicodeChar(0x011F)\nReturn\n\n:*c:^^G::\nSendUnicodeChar(0x011E)\nReturn\n\n:*c:^^n::\nSendUnicodeChar(0x00F1)\nReturn\n\n:*c:^^N::\nSendUnicodeChar(0x00D1)\nReturn\n\n:*c:^^c::\nSendUnicodeChar(0x00E7)\nReturn\n\n:*c:^^C::\nSendUnicodeChar(0x00C7)\nReturn\n\n; Find the corresponding letter from the unicode\n; and send the input back\nSendUnicodeChar(charCode)\n{\n VarSetCapacity(ki, 28 * 2, 0)\n EncodeInteger(&ki + 0, 1)\n EncodeInteger(&ki + 6, charCode)\n EncodeInteger(&ki + 8, 4)\n EncodeInteger(&ki +28, 1)\n EncodeInteger(&ki +34, charCode)\n EncodeInteger(&ki +36, 4|2)\n\n DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)\n}\n\nEncodeInteger(ref, val)\n{\n DllCall("ntdll\\RtlFillMemoryUlong", …Run Code Online (Sandbox Code Playgroud) autohotkey ×3
javascript ×2
bit ×1
bit-shift ×1
cmd ×1
extjs ×1
html ×1
html-table ×1
html5 ×1
java ×1
php ×1
sencha-touch ×1
web-scraping ×1