0

如果在任何标签中找到特定文本,我想禁用该按钮。以下代码无法运行,因为aTags[i].innerText它始终不等于 searchText,这是错误的,因为标签具有内部文本 =“a”,而 searchText 变量具有“a”作为文本 - 我需要它在 IE 中运行

<html>
    <script language="javascript">
        $(document).ready(function () {
            var aTags = document.getElementsByTagName("label");
            var searchText = "a";
            var found;

            for (var i = 0; i < aTags.length; i++) {
                if (aTags[i].innerText == searchText) {
                    document.getElementById('choose').disabled=true;
                    break;
                }
                else
                {
                    alert("failed")
                }  
            }
        });
    </script>

    <label> a </label> <br/>
    <label> b </label> <br/>
    <label> c </label> <br/>

    <input type='button' value='choose' id='choose' />    
</html>
4

5 回答 5

1

由于您已经在使用 jQuery,因此您可以用更少的复杂性做您喜欢的事情。这将起作用:

(function ($) {
    var searchText = "a";
    $('label').each(function(){
        if ($.trim($(this).text()) === searchText) {
            $('#choose').prop('disabled', true);
        } 
    });
})(jQuery);
于 2014-04-15T12:44:20.660 回答
1

似乎应该有更简单的方法来使用 jQuery

$(function () {
    var searchText = "a";

    $('#choose').prop('disabled', function() {
        return $('label').filter(function(_,el) {
            return $.trim( $(el).text() ) === searchText;
        }).length > 0;
    });
});

小提琴

于 2014-04-15T12:25:39.800 回答
1

问题是您的标签包含" a "(带有空格),但您正在比较"a"(没有空格)。

如果您想忽略空格,可以使用 jQuery$.trim(...)将文本从innerText.

但是当您使用 jQuery 时,您可以显着减少该代码:

$(document).ready(function() {
    var searchText = "a";
    var found = false;
    $("label").each(function() {
        found = $.trim($(this).text()) === searchText;
        if (found) {
            return false; // No need to keep looking
        }
    });
    $("#choose").prop("disabled", true);
});
于 2014-04-15T12:26:09.583 回答
0

您必须修剪标签的文本。尝试:

if (aTags[i].innerText.trim() == searchText)

或没有trim方法:

if (aTags[i].innerText.replace(/^\s+|\s+$/g, '') == searchText)
于 2014-04-15T12:23:45.957 回答
0

如果您想匹配子字符串是否存在,您可以尝试使用

aTags[i].innerText.indexOf(searchText) > -1

代替

aTags[i].innerText == searchText
于 2014-04-15T12:25:19.863 回答