从html元素中删除所有tabindex属性的最佳方法是什么? GWt似乎把这个属性放在代码中的任何地方都没有设置。它将tabindex设置为-1。
我将下面的代码视为有效,但它很繁琐,因为我必须根据其标记名称搜索每个元素,这会减慢页面加载速度。还有其他建议吗?我更喜欢不使用javascript的解决方案,因为我是新手。
NodeList<Element> input = this.getElement().getElementsByTagName("input");
if(input.getLength()>0)
{
for(int i=0; i<=input.getLength(); i++)
{
input.getItem(i).removeAttribute("tabIndex");
}
}
NodeList<Element> div = this.getElement().getElementsByTagName("div");
if(div.getLength()>0)
{
for(int i=0; i<=div.getLength(); i++)
{
div.getItem(i).removeAttribute("tabIndex");
}
}
答案 0 :(得分:7)
我不完全确定你在问什么。您想要删除选项卡索引属性。你要么:
也许我误解了你想要达到的目标?
修改强>
好吧或许这个:
$(document).ready(function(){
$('input').removeAttr("tabindex");
});
这应该删除它而不是将其设置为-1 ...希望如此。对不起,如果我再次误解了!
答案 1 :(得分:0)
我终于明白了。
我尝试了Javascirpt / jquery,但他们无法删除tabindexes,因为页面尚未完全渲染 - 我的面板在window.load
之后以编程方式放置。我所做的是利用RootPanel.class
gwt(已经使用过,但我不知道)。
任务:要删除所有带有-1值的tabindex,为所有脚本标签添加type =“tex / javascript”,为样式标签添加=“text / css”,对所有img标签添加alt。这些都是为了html验证。
我不确定这是最好的方法,它肯定会加速缓慢加载,但客户坚持要我这样做。所以这就是:
RootPanel mainPanel = RootPanel.get(Test_ROOT_PANEL_ID);
Widget widget = (Widget) getEntryView();
mainPanel.add((widget));
// Enable the view disable the loading view. There should always be
// the loading panel to disable.
Element mainPanelelement = DOM.getElementById(Test_ROOT_PANEL_ID);
Element loadingMessage = DOM.getElementById(LOADING_MESSAGE);
Element parent = loadingMessage.getParentElement();
if(parent!=null)
{
//i had to use prev sibling because it is the only way that I know of to access the body //tag that contains the scripts that are being generated by GWT ex.bigdecimal.js
Element body = parent.getPreviousSibling().getParentElement();
if(body!=null)
{
NodeList<Element> elms = body.getElementsByTagName("*");
if(elms.getLength()>0)
{
Element element=null;
for(int i=0; i<=elms.getLength(); i++)
{
if(elms.getItem(i)!=null)
{
element = elms.getItem(i);
if(element.getTagName().compareToIgnoreCase("script")==0)
element.setAttribute("type", "text/javascript");
else if(element.getTagName().compareToIgnoreCase("style")==0)
element.setAttribute("type", "text/css");
else if(element.getTagName().compareToIgnoreCase("img")==0)
{
if(element.getAttribute("alt")=="")
element.setAttribute("alt", element.getAttribute("title")!=" " ? element.getTitle() : " " );
}
else
{
if(element.getTabIndex()<=0)
element.removeAttribute("tabindex");
}
}
}
}
}
}
DOM.setStyleAttribute((com.google.gwt.user.client.Element) loadingMessage, "display", "none");
DOM.setStyleAttribute((com.google.gwt.user.client.Element) mainPanelelement, "display", "inline");
// Change cursor back to default.
RootPanel.getBodyElement().getStyle().setProperty("cursor", "default");
}
答案 2 :(得分:0)
使用querySelectorAll函数返回文档中元素的列表(使用与指定选择器组匹配的文档节点的深度优先预先遍历)。 / em>的
function removeTagAttibute( attributeName ){
var allTags = '*';
var specificTags = ['ARTICLE', 'INPUT'];
var allelems = document.querySelectorAll( specificTags );
for(i = 0, j = 0; i < allelems.length; i++) {
allelems[i].removeAttribute( attributeName );
}
}
removeTagAttibute( 'tabindex' );