Javascript:有没有一种方法可以像C#一样找到控件?
请不要使用jQuery解决方案!我还在学习JavaScript 我有一个函数,它根据给定的Javascript:有没有一种方法可以像C#一样找到控件?,javascript,c#,Javascript,C#,请不要使用jQuery解决方案!我还在学习JavaScript 我有一个函数,它根据给定的复选框控件分解一些DOM元素 function highlightRow(chk) { var cell = chk.parentNode; var row = cell.parentNode; var tbody = row.parentNode; var
复选框
控件分解一些DOM元素
function highlightRow(chk) {
var cell = chk.parentNode;
var row = cell.parentNode;
var tbody = row.parentNode;
var rows = tbody.children;
var hrow = rows[0]; //get header row
--> var hCbox = hrow.getElementsByID("cbHDR"); //get 'cbHDR' checkbox that's in the header
if (chk.checked) {
addClass(row, 'selected-row');
}
else {
removeClass(row, 'selected-row');
}
..etc
}
我遇到的问题是显示的线条
var hCbox=hrow.getElementsByID(“cbHDR”)
如何查找基于给定元素的元素,例如本例中的Gridview的HeaderRow
上面的返回值为null。事实上,我甚至不知道它是否运行,因为我不确定getElementsByID()
是否纯粹是文档
对象的方法
我正在尝试避免使用文档。获取。。。在我的例子中,它检索4个GridView中的所有标题复选框。我正在尝试仅基于HeaderRow查找标题复选框。
感谢您在纯javascript中使用querySelector在包含元素上通过标记名查找元素。因此,如果您已经获得了对gridview的dom元素的引用(例如,使用getElementById),该引用在名为
gridview
的变量中捕获,那么:
let headerRow = gridView.querySelector('HeaderRow');
顺便说一句,let是es6语法。因此,如果您担心旧浏览器的兼容性,请改用
var
。正确的方法是document.getElementById(“cbHDR”)
。此外,如果您使用ASPX页面,请确保您具有静态客户端id,否则您需要使用document.getElementById(“”
“事实上,我甚至不知道它是否运行,因为我不确定getElementsByID()
是否纯粹是document对象的方法。”;它只在文档上
。它的大写形式也不同。您可以通过查看浏览器的控制台了解这一点。更新的问题@tetsuyayamamoto您可以提供GridView
标记详细信息吗?我发现您需要这样的东西:var grid=document.getElementById(“”)代码>然后使用var headerCheckBox=tbl.rows[n].cells[n].getElementsByTagName(“输入”)[0].id(n=row/column index)获取标题复选框值。@tetsuyayayamamoto这正是我试图避免的-硬编码路径。我还是在下面回答。谢谢。我刚才也发现了那个鬼鬼祟祟的功能。querySelector()。谢谢