删除所有tabindex属性到html元素的最佳方法是什么?

时间:2012-06-26 09:53:16

标签: html gwt tabindex

从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");

            }

        }

3 个答案:

答案 0 :(得分:7)

我不完全确定你在问什么。您想要删除选项卡索引属性。你要么:

  • 在HTML中手动将tabindex属性设置为-1。
  • 使用您已有的代码。
  • 或在other thread
  • 中使用简化的JQuery版本

也许我误解了你想要达到的目标?

修改

好吧或许这个:

$(document).ready(function(){
    $('input').removeAttr("tabindex");
});

这应该删除它而不是将其设置为-1 ...希望如此。对不起,如果我再次误解了!

JQuery removeAttr Link

答案 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' );