相关的HTML:
<div id="suggestedEmailDiv">
Did you mean <a class="suggestedEmailClass">
<span id="suggestedEmailAddressSpan" class="address"></span>
@
<span id="suggestedEmailDomainSpan" class="domain"></span>
</a>?
</div>
相关的javascript:
console.log("suggestion.address ", suggestion.address);
console.log("suggestedEmailAddressSpan ", $('suggestedEmailAddressSpan'));
// here's where it goes wonky:
$('suggestedEmailAddressSpan').text(suggestion.address);
相关日志:
[Log] suggestion.address qwew (btadmin, line 195) <-- suggestion.address has a value
[Log] suggestedEmailAddressSpan (btadmin, line 198) <-- it is a defined span!!
<span id="suggestedEmailAddressSpan" class="address"></span>
[Error] TypeError: undefined is not a function (evaluating '$('suggestedEmailAddressSpan').text(suggestion.address)')
suggested (btadmin, line 205)
responder (prototype.js, line 5597)
我知道我错过了一些简单而重要的东西......这是什么?
感谢您的帮助!!
答案 0 :(得分:3)
好的,我能想到的最接近的是 jQuery未加载。
它给出的是你的日志没有返回一个jQuery对象。 jQuery返回一个类似于数组的对象,它在控制台上看起来就像一个括号内的元素列表。您可以通过在此StackOverflow页面中的控制台上执行$('body')
来验证这一点(因为SO使用jQuery:P),您应该看到类似的内容:
[<body class="question-page new-topbar">…</body>]
现在,当没有加载jQuery时,可能会产生两件事:
$
为undefined
,导致该错误。
某些浏览器(例如Chrome)本身具有映射到document.querySelector
的$
函数。如果没有加载jQuery,则不会覆盖$
全局。该错误是因为您在text()
的结果上调用了querySelector
,这是与提供的选择器匹配的第一个DOM元素。
另一种可能的情况是,其他东西占据了$
全局。症状可能包括成功加载jQuery,但$
不是jQuery。但如果发生这种情况,你的日志就不会提供太多线索。
要解决您的问题,请确保在脚本之前加载jQuery。此外,将回调内的脚本放在回调到$(document).ready()
的内部,这样就可以在DOM完全加载后运行脚本。
此外,您的选择器错误。 ID的选择器以#
开头。 然而 ,为jQuery提供错误的选择器不应该出错,因为调用错误的选择器将返回一个仍然具有.text()
方法的空jQuery集。 / p>
答案 1 :(得分:0)
您在查询中缺少ID选择器,它应该是这样的
$("#suggestedEmailAddressSpan")
详细了解JQuery selector
答案 2 :(得分:0)
选择ID使用
$('#suggestedEmailAddressSpan')
用于课堂使用
$('.suggestedEmailClass')
对于jquery,最好在就绪函数之间编写代码:
$(document).ready(function() {
//your code
});