我有一个页面,我的组合框有数百个元素,这使我很难选择我想要的一个项目.有没有一个好的Javascript替代品,会做得更好
<select id="field-component" name="field_component">
<option selected="selected">1</option><option>2</option>...
</select>
Run Code Online (Sandbox Code Playgroud)
是否有"智能感知"的东西 - 像自动完成?
我刚开始使用jQuery,各种来源建议以下内容应该用于通过ID引用元素:
$("#imgThumbnail")
Run Code Online (Sandbox Code Playgroud)
理论上可以做出这样的事情:
$("#imgThumbnail").src;
Run Code Online (Sandbox Code Playgroud)
但是我的测试表明$("#imgThumbnail")返回数组之类的东西,需要以下内容:
$("#imgThumbnail")[0].src;
Run Code Online (Sandbox Code Playgroud)
每当我尝试通过ID(即var oObj = $("#someobjectid")[0];)引用某些内容时,我是否真的需要通过数组的索引来引用?
您是否知道一种良好的跨浏览器方式来了解文本行的宽度,以便您可以准确地将其打破以适应固定宽度?
假设您想要打破一个长文本,因为它不会溢出固定宽度的容器,但是您希望该行可能最接近边界,因此猜测插入s的位置并不是一个干净的解决方案.
我想调查一下,我想这可以通过一个不可见的div然后在其中打印线并使用Javascript检查div的宽度或类似的东西来完成.
有没有人做过这样的事情?
*(重点不是自动换行,这只是我现在想到的应用程序,但知道文本的宽度是我想要的)
我动态地向DOM添加<a>(链接)标记:
var link = document.createElement('a');
link.href = 'http://www.google.com/';
link.onclick = function () { window.open(this.href); return false; };
link.appendChild(document.createTextNode('Google'));
//someDomNode.appendChild(link);
Run Code Online (Sandbox Code Playgroud)
我希望链接在新窗口中打开(我知道它很糟糕,但它是必需的).我也尝试使用"target"属性,但我也有这个解决方案的错误行为.
我的代码在IE和Firefox中运行良好,但返回false在Safari,Chrome和Opera中不起作用.通过不工作我的意思是在打开新窗口后遵循链接.
我想我可能是因为Google Maps V3环境......
编辑:要查看实际页面上的行为:
欢迎任何帮助!
Edit2:问题出在函数"MakeInfoWindowContent"中,它位于"gmaps3.js"中.我不使用DOM来创建元素(我使用字符串),因为必须将此HTML字符串传递给Google Maps(对于信息窗口 - 气球).实际上,在两个不同的地方创建了相同的链接.左边的一个,用DOM功能创建(如本问题所示),适用于所有浏览器,气球中有一个用HTML字符串创建,这个在Safari,Chrome和Opera中效果不佳(链接是在新窗口打开之后,即使返回false也是如此).
编辑3:仍然不知道为什么会发生这种情况......如果有人有想法,请告诉我!
我在这里的第一篇文章 我想制作一个水平菜单,子菜单在鼠标悬停时向下滑动.我知道我可以使用jQuery,但这是练习我的javascript技能.
我使用以下代码:
var up = new Array()
var down = new Array()
var submenustart
function titleover(headmenu, inter)
{
submenu = headmenu.lastChild
up[inter] = window.clearInterval(up[inter])
down[inter] = window.setInterval("slidedown(submenu)",1)
}
function slidedown(submenu)
{
if(submenu.offsetTop < submenustart)
{
submenu.style.top = submenu.offsetTop + 1 + "px"
}
}
function titleout(headmenu, inter)
{
submenu = headmenu.lastChild
down[inter] = window.clearInterval(down[inter])
up[inter] = window.setInterval("slideup(submenu)", 1)
}
function slideup(submenu)
{
if(submenu.offsetTop > submenustart - submenu.clientHeight + 1)
{
submenu.style.top = submenu.offsetTop - 1 + "px"
}
} …Run Code Online (Sandbox Code Playgroud) 我不太确定如何描述我想做的事情,但我确信我之前在很多网站上都看过它.
基本上,当有人点击链接时,它应该显示一个包含一些文本的元素,并使网站的其余部分变暗,以便用户将焦点指向元素.它也不应该让用户点击调暗区域,因为通知需要在确认之前进行确认.
我在我的网站上使用jQuery,所以如果它更容易,我很乐意使用它.
我知道之前已经问过这个问题,但似乎没有一个答案可以解决这个问题.我正在测试一个AJAX网页,它通过javascript更新DOM中的元素.
每分钟,都会查询服务器以获取新数据,并相应地更新DOM.据我所知,Chrome中此页面的内存使用量增长,但不会太多(它开始大约40 MB,最大可能达到80 MB).但是,在Firefox中,内存使用量大约为120 MB,可以扩展到400 MB以上.我已经使用Firebug逐步完成了Javascript,当通过我的Javascript方法更新DOM时,内存似乎扩展得最多.
DOM操作很简单,例如:
var myTable = document.createElement("table");
var thead = document.createElement("thead");
var tr = document.createElement("tr");
var th = document.createElement("th");
th.appendChild(document.createTextNode("column1"));
tr.appendChild(th);
for(var test in obj.testObjs){
th = document.createElement("th");
th.appendChild(document.createTextNode(obj.testObjs[test].myVar));
tr.appendChild(th);
}
Run Code Online (Sandbox Code Playgroud)
在将新数据附加到DOM中的节点之前,我首先清除现有数据.我已经尝试了很多方法,包括这里描述的内容:如何在没有内存泄漏的情况下删除DOM元素?
以及一个简单的方法,例如:
function clearChildren(node){
if(node != null){
while (node.hasChildNodes()) node.removeChild(node.firstChild);
}
}
Run Code Online (Sandbox Code Playgroud)
我还读过(循环添加/删除DOM节点导致JavaScript中的内存泄漏?)浏览器只有在达到某个级别时才开始收集垃圾?可以证实吗?由于记忆力不断增长,我觉得我的电脑在一段时间后运行缓慢.
我觉得必须有一个解决方案,因为我测试过的执行相同功能步骤的商业网站不会导致内存使用增长.
任何帮助将不胜感激.
谢谢.
我正在使用JavaScript在HTML页面上创建基本的图形时钟显示.我正在使用标准DOM机制更新数字图形(仅在必要时更新每个数字):
digitOne.src = "file/path/one.png";
Run Code Online (Sandbox Code Playgroud)
时钟工作正常,但我想知道是否所有或某些浏览器每次更改src属性时都会盲目地从我的站点获取图像,而不是将副本缓存在RAM中.我担心在某些情况下,也许在较旧的浏览器中,查看图形时钟会不断创建数据流量,并通过我的月度数据限额来咀嚼.
所以我希望有人可以告诉我这是否存在风险,或者指出我在JavaScript中交换图形的机制,这保证了现有图像将从内存中使用而不是每次触发网络获取.
(我一直在寻找一个明确的答案,但找不到一个.自1999/2000以来我没有使用过JavaScript作为DHTML,所以我有点落后于时代.至少不再需要写了每个JavaScript函数的两个版本,一个用于IE4/5,另一个用于Netscape 4.)
以下jQuery语句对我有用。但我不知道这是否是跨平台独立的?
$("input[name='confirmed']").attr("checked",false);
Run Code Online (Sandbox Code Playgroud)
它正在开发最新版本的狐狸。如果我错了,请纠正我?谢谢
dhtml ×10
javascript ×8
html ×6
jquery ×3
dom ×2
xhtml ×2
ajax ×1
attr ×1
combobox ×1
css ×1
firefox ×1
google-maps ×1
memory-leaks ×1
menubar ×1
performance ×1
setinterval ×1