为什么JQuery找不到我的元素?

5

更新:我真的没注意到大小写不匹配。我为此挣扎了30多分钟,而你们在不到5分钟内就看出了我的问题!谢谢你们帮我避免了很多痛苦 - 我对编程还比较新,需要学会注意这些小细节,但是非常感谢,我甚至没有想到过 :)

对不起大家 - 之前有点误导,因为我忘记在我的问题中加上引号,但我可以向您保证,我知道Jquery的选择器需要引号,我一直在使用它们...

<div id='question' style="background-color:#DAE2E8;border-color:#A2B3C7;border-width:1px;border-style:solid"><br /> 
    <table id='searchtable' border='0'>
        <tr>
            <td><span class="label">Question ID:</span><input id='QuestionId' type='text'/></td>
            <td><span class="label">Question Title:</span><input id='QuestionTitle' type='text'/></td>
            <td><span class="label">Original URL:</span><input id='OriginalURL' type='text'/></td>
            <td><span class="label">Original Title:</span><input id='OriginalTitle' type='text' /></td>
            <td><span class="label">Chronic ID:</span><input id='ChronicID' type='text' /></td>   
        </tr><tr>
            <td><span class="label">Expert Name:</span><input id='ExpertName' type='text'/></td>  
            <td><span class="label">Topic ID:</span><input id='TopicID' type='text'/></td>
            <td><span class="label">Channel ID:</span><input id='ChennelID' type='text''/></td>
            <td><span class="label">Funded: </span><input id='IsFunded' type='text'/></td>
            <td><span class="label">Funded Partner:</span><input id='FundedPartner' type='text'/></td>
        </tr><tr>
            <td><input type="submit" value="Submit" onclick='ApplyNewFilters(this)' /></td>
        </tr>  
    </table>
</div>

以下是我的HTML代码(它在一个aspx页面中)- 我尝试使用$("#QuestionID").val()来获取值,但它无效。我还尝试了$("input#QuestionID").val()


你能在控制台输出错误吗?如果你尝试 console.log($("#QuestionID")); 应该会返回一些东西。 - SpYk3HH
不确定如何记录错误。现在它只告诉我它是未定义的。 - egucciar
@gdoron 我对JQuery非常陌生。我的背景是C#,所以Javascript仍然是另一个世界。你有没有关于如何访问/查看DOM和如何使用JQuery进行调试的好资源? - egucciar
你的代码中是否还有其他带有 QuestionId 的元素?也要检查一下。 - zod
如果 console.log($("#QuestionID")); 的结果是 undefined,那么问题就在于你的 JavaScript 在 $("#QuestionID") 可用之前运行了。换句话说,可能当你调用 JavaScript 时,输入框还没有显示在屏幕上? - SpYk3HH
刚看到答案,是的,一定要记得使用精确的大小写。 :P - SpYk3HH
7个回答

11

可以尝试使用:

$("#QuestionId").val()

注意引号和大小写的精确匹配。

这里有一个示例


抱歉,我刚刚编辑了我的帖子,因为我一开始忘记放引号了。不,这绝对不是问题所在。我一直在使用引号 >< 我以前已经通过ID选择过东西,所以我不知道发生了什么。 - egucciar
请注意大小写 QuestionIDQuestionId - D - Selvakumar Arumugam
谢谢,这就是问题所在。我再也不会犯这个错误了!我是一个Jquery的初学者,所以我不确定是我自己的问题,还是我使用了错误的东西,或者与HTML有关...非常感谢你。 - egucciar
1
如果不确定,就复制并粘贴变量名。即使看起来没问题,在你盯着屏幕太久后很容易犯错。 - D'Arcy Rittich

4
你确定你在使用正确的大小写吗? $("#QuestionId").val() 应该可以工作。
如果没有,请检查你的火狐浏览器控制台选项卡,看看页面中是否有一些脚本错误。

不是引号的问题,而是大小写的问题!!哇,我已经为此奋斗了至少30分钟。现在我知道我再也不会犯这样的疏忽了。非常感谢你的注意 :) - egucciar

3

输入的id应为QuestionId而非QuestionID。


2
选择器是区分大小写的,因此您拼错了“Id”。
$("#QuestionId").val()

应该可以正常工作。


1

尝试在该行中更正双引号

<input id='ChennelID' type='text''/>

1

看一下

<td><span class="label">Channel ID:</span><input id='ChennelID' type='text''/></td>

这个

<td><span class="label">Channel ID:</span><input id='ChennelID' type='text' /></td>

你在末尾多打了一个撇号

如果你在使用中出现问题,

<asp:TextBox /> 

你必须在JavaScript中创建一个变量,并将其赋值为ASP客户端ID的值。

var ChannelID = <%=txtChannelID.ClientID %>

其中clientid是文本框的名称


1

你的选择器缺少引号。应该是$('#QuestionId').val()或者$('input#QuestionId').val()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接