我有以下功能
function hello() {
alert("hi!");
}
Run Code Online (Sandbox Code Playgroud)
拿这段代码:
var elem = document.getElementById("btn");
elem.onclick = hello;
Run Code Online (Sandbox Code Playgroud)
我的问题可能有点难以理解,所以请耐心看看:这段代码与普通调用有什么区别,或者是什么使得这段代码需要引用函数变量而不是常规调用?(hello();)
我怎么知道我应该在哪里提供函数的引用,以及什么时候我应该实际调用它?
我知道这很容易在jQuery或任何其他框架中完成,但这不是重点.如何在纯JavaScript中"正确"绑定点击事件?我知道怎么做内联(我知道这很可怕)
<a href="doc.html" onclick="myFunc(); return false">click here</a>
Run Code Online (Sandbox Code Playgroud)
这导致我的javascript为一个支持JS的浏览器执行,并且链接为没有javascript的人正常运行?
现在,我如何以非内联方式执行相同的操作?
我的JavaScript应用程序遇到了棘手的问题.
如果我写这样的元素:
<li onClick="alert(this.tagName)"></li>
Run Code Online (Sandbox Code Playgroud)
我得到"李".
但是,如果我这样做:
<li onClick="foo()"></li>
Run Code Online (Sandbox Code Playgroud)
"foo()"的位置是:
function foo(){ alert(this.tagName); }
Run Code Online (Sandbox Code Playgroud)
我得到"未定义".
我不知道"这个"应该如何适用于附加功能.但是,我感到困惑,因为"这个"没有拿起元素,但显然是默认为"窗口".我无法弄清楚为什么会这样.
有人有解释吗?
我想使用Windows Shift和Ctrl键选择多行,例如Windows中的多个文件夹选择.
从所选行的表中我必须得到第一列(学生ID)并传递到服务器端C#并从数据库中删除这些记录.
我在javascript中编写了一个代码,但是类名未应用于<tr>on Shift或Ctrl+ 左键单击.
HTML
<table id="tableStudent" border="1">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Class</th>
</tr>
</thead>
<tbody>
<tr onmousedown="RowClick(this,false);">
<td>1</td>
<td>John</td>
<td>4th</td>
</tr>
<tr onmousedown="RowClick(this,false);">
<td>2</td>
<td>Jack</td>
<td>5th</td>
</tr>
<tr onmousedown="RowClick(this,false);">
<td>3</td>
<td>Michel</td>
<td>6th</td>
</tr>
<tr onmousedown="RowClick(this,false);">
<td>4</td>
<td>Mike</td>
<td>7th</td>
</tr>
<tr onmousedown="RowClick(this,false);">
<td>5</td>
<td>Yke</td>
<td>8th</td>
</tr>
<tr onmousedown="RowClick(this,false);">
<td>6</td>
<td>4ke</td>
<td>9th</td>
</tr>
<tr onmousedown="RowClick(this,false);">
<td>7</td>
<td>7ke</td>
<td>10th</td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
JavaScript的
var selectedrow;
function …Run Code Online (Sandbox Code Playgroud) 我有一个<img>元素,我正在改变它的src属性.该元素onload附加了一个处理函数.每次我更改src属性和图像加载时,应该运行处理函数.
在Chrome和Safari中,如果我分配与之前相同的src,则不会运行处理函数.之前像以前我试过分配相同的SRC imgElement.src='',imgElement.src= null,imgElement.src='notExistingFile.jpg'并且它都没有工作.
请帮忙.以前有人有这个问题吗?
编辑:它通过执行imgElement.src =''工作,然后分配与以前相同的src:
imgElement.src = '';
imgElement.src = 'image.jpg';
Run Code Online (Sandbox Code Playgroud) 分配函数window.onerror似乎是一种非常直接的方式来开始处理页面上的代码中的错误.但是,确保不覆盖预先存在的错误处理程序非常重要,因此通常的做法是保持对先前值的引用并将其作为新函数的一部分进行调用.举个例子:
var old_onerror = window.onerror;
window.onerror = function() {
// do something
if (old_onerror) {
old_onerror();
}
};
Run Code Online (Sandbox Code Playgroud)
我可以在网上找到的大多数文档/博客文章/等建议做这样的事情.他们为什么不建议为事件添加事件处理程序'error'呢?这允许在触发其中一个事件时调用多个函数,并且不需要笨拙地维护对其他错误处理程序的引用.
window.addEventListener('error', function() {/* do something */});
Run Code Online (Sandbox Code Playgroud)
编辑:我考虑过遵循关于这个主题的标准建议,但error事件window似乎是一个相当特殊的情况(例如,参见JQuery 显然缺乏对它的支持(在该页面上搜索"onerror")).我特意寻求洞察为什么onerror似乎是一个特例.
我在html中动态添加一个按钮,如下所示:点击该按钮,我想调用一个Javascript函数:
var but = document.createElement("button");
but.value="delete row";
but.setAttribute("onclick","callJavascriptFunction()");
//this is not working
but.onclick="callJavascriptFunction()"
//this is also not working
document.getElementById("but").onclick="callJavascriptFunction()"
//this is also not working
but.id="but"+inc;
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题?Plz帮助我.,提前谢谢
我正在将Selenium WebDriver与java.awt.Robot结合使用,以更好地模拟用户与Web应用程序的交互.是的,我知道这可能是不必要的,但我服务的客户要求它.
目前事情进展顺利,但我有一个小问题,我似乎找不到一个好的方法来获取屏幕位置的网页元素.标题栏,菜单栏,导航栏等内容都会将内容向下推到物理屏幕上(Robot从中获取坐标),但对Selenium报告元素的位置没有影响.
当我调用:element.getLocation();在Selenium WebElement上时,它总是给我相对于HTML内容呈现窗格的位置,而不是浏览器窗口本身.
更好的例证是:driver.findElement(By.tagName("body")).getLocation();无论窗口的实际屏幕位置如何,始终返回0,0.
现在我通过在最大化窗口后添加垂直和水平偏移来攻击它,但是这些在不同的浏览器之间是不一样的(例如,IE的顶部装饰占据了比Firefox更多的空间),并且对于每个用户可能是不同的如果他们有书签工具栏,搜索栏等添加.
是的,我知道我可以在全屏模式下运行,但是如果可能的话,我宁愿不这样做.
有没有办法使用WebDriver以可靠的方式获取元素的物理屏幕位置?
我有一个有趣的问题,我认为我已经掌握了它,但我想确定.我有一个调用名为remove()的函数的链接.除Chrome以外的所有浏览器都没有该功能的问题.但是,点击的链接在Chrome中消失了,即使我简化了下面示例中的功能.我见过这个问题:不能在javascript中使用"下载"作为函数名.但是,在链接中,我没有看到任何关于"删除"作为保留关键字的内容.我的问题是,我是关于这个关键字的正确吗?如果是这样,我可以在任何地方找到Google关键字列表吗?我搜索过,并没有发现这是其他地方的问题.
<a href="javascript:void(0)" onclick="remove()">Remove</a>
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
function remove(){
alert("Hi");
}
Run Code Online (Sandbox Code Playgroud) 通过使用"onclick""onmousedown"作为HTML元素的属性,我有点困惑.
如:
<button onclick="my_JS_function()"></button>
Run Code Online (Sandbox Code Playgroud)
要么
<div onmousedown="my_another_JS_funciton"></div>
Run Code Online (Sandbox Code Playgroud)
但有些人说只有"正确"的方式才能增加"听众"
document.getElementById("my_id").addEventListener("onclick", my_JS_function, false);
Run Code Online (Sandbox Code Playgroud)
这样做的更"支持"的方式是什么?