使用Javascript更改Nested Span类
Change Nested Span class using Javascript
当使用Javascript将span类嵌套在按钮元素中时,我在更改span类时遇到问题。
我正试图让它看起来像这样http://www.bootply.com/128062#我已经验证了CSS的工作原理。
HTML
<button id="submitbutton" class="btn btn-primary btn-lg" type="submit" onclick="onclickFunction();">
<span id ="submit_span" class=""></span> Submit</button>
JavaScript
function onclickFunction() {
document.getElementById('submitbutton').className = 'btn btn-lg btn-warning';
document.getElementById('submitbutton').innerHTML = 'Loading...';
document.getElementById('submit_span').className = 'glyphicon glyphicon-refresh glyphicon-refresh-animate';
}
当您写入按钮的.innerHTML
时,您正在销毁<span>
元素。
相反,选择按钮的.lastChild
,并更新其.data
(假设文本位于此处)。
function onclickFunction() {
document.getElementById('submitbutton').className = 'btn btn-lg btn-warning';
document.getElementById('submitbutton').lastChild.data = 'Loading...';
document.getElementById('submit_span').className = 'glyphicon glyphicon-refresh glyphicon-refresh-animate';
}
如果您只是将this
传递到函数中,那么您的代码会更短、更干净。
function onclickFunction(btn) {
// The button element
btn.className = 'btn btn-lg btn-warning';
// The last text node in the button
btn.lastChild.data = 'Loading...';
// The first element (span) in the button
btn.firstElementChild.className = 'glyphicon glyphicon-refresh glyphicon-refresh-animate';
}
.btn.btn-lg.btn-warning {
background: orange
}
.glyphicon {
padding: 10px;
background: red;
}
<button onclick="onclickFunction(this);" id="submitbutton" class="btn btn-primary btn-lg" type="submit">
<span id="submit_span" class="">x</span> Submit
</button>
根据需要调整更新的图元。不确定你预期的东西会去哪里。
正确的顺序应该是:
function onclickFunction() {
document.getElementById('submitbutton').className = 'btn btn-lg btn-warning';
document.getElementById('submit_span').innerHTML = 'Loading...';
document.getElementById('submit_span').className = 'glyphicon glyphicon-refresh glyphicon-refresh-animate';
}
斜视提供的答案并不遥远,但并不正确。我也不得不把它改成这个。上一个
// The first element (span) in the button
btn.firstChild.className = 'glyphicon glyphicon-refresh glyphicon-refresh-animate';
之后
btn.firstElementChild.className = 'glyphicon glyphicon-refresh glyphicon-refresh-animate';
我在chrome中找到了这一点,检查元素,检查DOM属性,展开控制台中的按钮,您将看到firstElementChild。
相关文章:
- 使用Clipboard.js复制span文本
- Nested Q.all nodejs
- Javascript nested if
- 将<span样式>凯迪托
- 兰吉 |如何在 span 标签上使用单击事件删除突出显示的文本
- 当DIV中的文本高亮显示时,如何获得DIV中Span的值?(Javascript)
- 使用Javascript从整个网页中删除具有特定类的所有span标记
- Javascript/jQuery:用HTML span标记替换单引号中的文本
- 使用Javascript更改Nested Span类
- 用类javascript包装span标记中字符串中的字符索引
- 全局屏幕span onclick触发一个事件javascript
- jQuery将文本从span标记复制到另一个span标记
- 排序<李><Ul>根据<span>内部<李>
- '对于'循环,替换span标记的问题
- 如何隐藏空<span>在IE中使用javascript.(注意,在其他浏览器中工作正常)
- 使用jquery将单个换行符替换为span元素
- 使用JS将页面中的每个字母设置为随机颜色.为什么在页面的每个打开标记之前总是有一组额外的span标记
- 当我想在span标记中呈现文本时,看到span标记
- 如何选择span标记内的所有内容,包括span标记本身
- 点击功能在<span>