Javascript-目标DOM在一种情况下工作,而不是在另一种情况
Javascript - target DOM work in one case not another
我有一个javascript
,当按下Ctrl
+Enter
时,它将调用CtrlEntInsertData()
:
function KeyPress(e) {
var evtobj = window.event? event : e
if (evtobj.keyCode == 13 && evtobj.ctrlKey) {
CtrlEntInsertData();
}
}
document.onkeydown = KeyPress;
function CtrlEntInsertData() {
var target = document.querySelector("input");
var tarpos = getPosition(target); //!!<-- This work!
target.setAttribute('data', 10); // Error line
console.log(tarpos.x+" "+tarpos.y); //!!<-- This return x, y of target
console.log(target); //!!<-- NULL
}
function getPosition(element) {
var xPosition = 0;
var yPosition = 0;
while(element) {
xPosition += (element.offsetLeft - element.scrollLeft + element.clientLeft);
yPosition += (element.offsetTop - element.scrollTop + element.clientTop);
element = element.offsetParent;
}
return { x: xPosition, y: yPosition };
}
这是我的HTML
:
<div class="input" data="0" ></div>
我得到一个错误:
TypeError:null不是对象(正在评估"target.setAttribute")
但当我把它用于getPosition()
时,它确实给了我一些回报。为什么会这样,以及如何让它发挥作用?
此选择器
document.querySelector("input");
找到标签CCD_ 7的第一个元素。
如果要按类别input
选择元素,则需要使用
document.querySelector(".input");
请参阅W3Schools关于CSS选择器的参考。
这是工作代码。您应该准确地选择元素,尽管我使用了selectByClassName,但我建议您选择ById
function CtrlEntInsertData() {
var target = document.getElementsByClassName("input")[0];//selects first element of this class
var tarpos = getPosition(target);
target.setAttribute('data', 10);
console.log(tarpos.x+" "+tarpos.y);
console.log(target);
}
相关文章:
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 为什么jQuery代码段在没有IFrame的情况下可以工作,而在有IFrame时却不能工作
- AngularJS绑定没有'在没有填充父范围的情况下无法工作
- 如何使多个工作在这种情况下
- AJAX函数在没有警报的情况下无法工作
- 表单验证工作不正常,在不检查条目的情况下继续
- GET在POST不工作XMLHttpRequest的情况下正常工作
- JavaScript while循环没有'不能在有条件的情况下工作
- 如何停止两个按钮执行相同的工作?在这种情况下,它们都会滚动到顶部
- 在什么情况下,应该.deep.equal失败,但使用JSON.stringify进行比较工作正常
- 如何使html链接标签可以在没有标签的情况下工作
- Javascript变量在没有var的情况下工作
- Jquery脚本在没有警报的情况下无法工作
- 无论如何都要获取文档.在不删除整个页面的情况下写入即可工作
- jQuery点击功能只工作一次(新情况)
- Jquery在不触发事件的情况下部分工作
- 在没有调用函数的情况下,返回如何在Javascript中工作
- 位置管理器在没有互联网的情况下无法工作
- 有没有一种方法可以让jQuery日期选择器在没有年份的情况下工作
- 如何从控制台调用该方法以查看其工作情况