通过JS/jQuery访问和操作DOM中的子元素
Accessing and manipulating child elements in DOM by JS/jQuery
我在页面加载时访问我的元素时遇到了一个问题。
我已经简化了我的代码,但没有运气!
<div id="NavigationButtons">
<p id="pagenum">
10
</p>
</div>
JS:
function abi(){
var page = document.getElementById("NavigationButtons").getElementById("pagenum");
}
我尝试过不同的JSFiddle选项,如onload
, ondomready
,没有包裹头,没有包裹体…我也试过用jQuery写这个:
var p = ('#NavigationButtons > p#pagenum').text();
我在JS和jQuery之间搞混了。这越来越烦人了。
正如我在评论中所说的,你错过了jQuery版本中最重要的$:
选择器基本测试:
$(function(){
var p = $('#NavigationButtons > p#pagenum').text();
alert(text);
});
但是你真的需要从jQuery中连接你的按钮代码:
$(function(){
$('#abi').click(function() {
var p = $('#NavigationButtons > p#pagenum').text();
alert(p);
});
});
给你的按钮一个id:
<input id="abi" type="button"/>`
注:$(function(){ YOUR CODE HERE });
是$(document).ready(function(){ YOUR CODE HERE });
的快捷方式
http://jsfiddle.net/TrueBlueAussie/wK2FM/3/
*如果你打算使用jQuery 我建议你忘记getElementById
的存在:)*
更新:
由于您感兴趣的项目已经有一个id,您可以简化为:
$(function(){
$('#abi').click(function() {
var p = $('#pagenum').text();
alert(p);
});
});
JSFiddle: http://jsfiddle.net/TrueBlueAussie/wK2FM/4/
JavaScript版本说明:
Javascript不像jQuery那样把方法链接在一起。document.getElementById("NavigationButtons").getElementById("pagenum")
永远不会起作用。getElementById
只存在于文档上,所以尝试在第一次调用返回的DOM元素上再次调用它,将会给出一个错误。
当你的最终目标元素有一个id时,你可以这样做:
var page = document.getElementById("pagenum");
根据下面的注释添加:
JSFiddle: http://jsfiddle.net/TrueBlueAussie/wK2FM/5/
// Does not work as text is not a property of a DIV element
var page=document.getElementById("pagenum").text;
// This one actually works as innerHTML IS a property of a DIV (and of all HTML elements)
var page=document.getElementById("pagenum").innerHTML;
// Does not work as value is not a property of a DIV element
var page=document.getElementById("pagenum").value;
如果你想要合理的方法来访问属性,坚持使用jQuery。如果你必须在一个页面上使用任何 jQuery,你也可以用jQuery 来完成所有(因为代码通常会比在RAW JavaScript中更容易阅读和更短)
如果你想访问id为#pagenum
的元素,你可以直接这样做:
var page = document.getElementById("pagenum");
或jQuery
$('#pagenum')
您可以使用以下jQuery使用.find()
:
function abi(){
var page = $("#NavigationButtons").find("#pagenum").text();
}
您可以使用后代(如下所示),但find比它更快。
jQuery:
function abi(){
var page = $("#NavigationButtons #pagenum").text();
}
查找和派生选择器的结果:Link
如果你使用的是jquery,你需要做的很简单:
HTML:<input type="button" onclick="abi(this)"/>
Jquery: function abi(event){
$("#NavigationButtons p#pagenum").text()
}
<<p> 小提琴演示/strong> 但是我建议你这样写jquery事件:
HTML:<input type="button" id="btnAbi"/>
JQUERY: $(document).ready(function(){
$("#btnAbi").click(function(){
$("#NavigationButtons p#pagenum").text();
});
});
- 如何在DOM元素上按类型构建此函数
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 如何在使用Ractive.extend()时引用DOM元素
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- 如何'剪切'DOM元素并将其显示在其他位置
- 转换<a>使用jQuery将文本字符串转换为dom元素
- d3在数据更新时错误地附加了dom元素
- 访问VueJS中的DOM元素
- 在Meteor中如何查找DOM元素(渲染后)
- IE9-添加和删除DOM元素会破坏父keydown事件
- 未捕获错误:元素缓存中id为x的DOM元素与DOM中的元素不同
- 在 ng-if 编译后访问指令中的 DOM 元素
- spin.js/angular spinner:如何将spin定位到DOM元素中(包括plunker演示)
- 如何在dom元素中插入输入标记数据插件
- Mobile Safari、jQuery以及绑定到未来的DOM元素
- 从字符串创建dom元素时添加多个类
- 如何根据客户端的屏幕大小使用javascript更改DOM元素
- 为onClick-hander插入临时DOM元素