我正在为客户构建网站,并使用预构建主题作为起点。它带有一个 js 文件,该文件具有用于移动导航的点击功能,一切正常,但是当我为 jQuery 添加脚本标记时,移动导航中断并且控制台出现此错误:
Uncaught TypeError: Cannot set property 'onclick' of null 我该如何解决这个问题?导致错误的js行是document.getElementById('mobile-navigation').onclick = function(){
我尝试更改该行以使用 jQuery 来选择元素,但这只会在 js 文件中进一步导致另一个错误。我该如何解决这个问题?
在 html 中:
<div id="navigation">
<span id="mobile-navigation"> </span>
<h1 class="nav-h1"><a href="index.html" class="logo"><!-- <img src="images/logo.png" alt=""> -->Header</a></h1>
<ul id="menu">
<li class="selected navList">
<a ui-sref="home">Home</a>
</li>
<li class="navList">
<a href="about.html">About</a>
</li>
<li class="navList">
<a ui-sref="find">Find a Vendor</a>
<!-- <ul>
<li>
<a href="runningsinglepost.html">Running single post</a>
</li>
</ul> -->
</li>
<!-- <li>
<a href="blog.html">Blog</a>
<ul>
<li>
<a href="blogsinglepost.html">blog single post</a>
</li>
</ul>
</li> -->
<li class="navList">
<a href="contact.html">Contact</a>
</li>
</ul>
</div>
js:
window.onload = function(){
var getNavi = document.getElementById('menu');
document.getElementById('mobile-navigation').onclick = function(){
var a = getNavi.getAttribute('style');
if(a){
getNavi.removeAttribute('style');
document.getElementById('mobile-navigation').style.backgroundImage='url(images/mobile/mobile-menu.png)';
} else {
getNavi.style.display='block';
document.getElementById('mobile-navigation').style.backgroundImage='url(images/mobile/mobile-close.png)';
}
};
var getElm = getNavi.getElementsByTagName("LI");
for(var i=0;i<getElm.length;i++){
if(getElm[i].children.length>1){
var smenu = document.createElement("span");
smenu.setAttribute("class","mobile-submenu");
smenu.setAttribute("OnClick","submenu("+i+")");
getElm[i].appendChild(smenu);
};
};
submenu = function (i){
var sub = getElm[i].children[1];
var b = sub.getAttribute('style');
if(b){
sub.removeAttribute('style');
getElm[i].lastChild.style.backgroundImage='url(images/mobile/mobile-expand.png)';
getElm[i].lastChild.style.backgroundColor='rgba(255, 255, 255, 0.8)';
} else {
sub.style.display='block';
getElm[i].lastChild.style.backgroundImage='url(images/mobile/mobile-collapse.png)';
getElm[i].lastChild.style.backgroundColor='rgba(248, 98, 130, 0.8)';
}
};
};
jQuery 脚本标签:
<script type="text/javascript" src="/libs/bower_components/jquery/dist/jquery.min.js"></script>
mobile.js 脚本标签:
<script src="./js/mobile.js" type="text/javascript"></script>
注意我正在以 Angular 执行此操作并且导航栏已包含在索引中可能会有所帮助。
最佳答案
我怀疑您的 javascript 在文档加载之前正在运行。这意味着 javascript 找不到该对象,因为它还不存在。尝试使用 document.onload 而不是 window.onload。
关于javascript - jQuery 正在干扰 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38779315/
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我有一个电子邮件表格。但是我正在制作一个测试电子邮件表单,用户可以在其中添加一个唯一的电子邮件,并让电子邮件测试将其发送到该特定电子邮件。为了简单起见,我决定让测试电子邮件通过ajax执行,并将整个内容粘贴到另一个电子邮件表单中。我不知道如何将变量从我的HAML发送到我的Controllernew.html.haml-form_tagadmin_email_blast_pathdoSubject%br=text_field_tag'subject',:class=>"mass_email_subject"%brBody%br=text_area_tag'message','',:nam
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
我有一个模块:moduleMyModuledefdo_something#...endend由类使用如下:classMyCommandextendMyModuledefself.execute#...do_somethingendend如何验证MyCommand.execute调用了do_something?我已经尝试使用mocha进行部分模拟,但是当未调用do_something时它不会失败:it"callsdo_something"doMyCommand.stubs(:do_something)MyCommand.executeend 最佳答案
我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan
我有一个定义类的Ruby脚本。我希望脚本执行语句BoolParser.generate:file_base=>'bool_parser'仅当脚本作为可执行文件被调用时,而不是当它被irbrequire(或通过-r在命令行上传递)时。我可以用什么来包装上面的语句,以防止它在我的Ruby文件加载时执行? 最佳答案 条件$0==__FILE__...!/usr/bin/ruby1.8classBoolParserdefself.generate(args)p['BoolParser.generate',args]endendif$0==_
我以为它已经安装了,但在我的gemfile中有gem"jquery-rails"但是在我的asset/javascripts文件夹中accounts.js.coffeeapplication.js都被注释掉了这是我的虚拟railsapplication但是在源代码中没有jQuery并且删除链接不起作用......任何想法都丢失了 最佳答案 看看thisRailscast.您可能需要检查application.js文件并确保它包含以下语句。//=requirejquery//=requirejquery_ujs
我在新的Rails应用程序(3.2.3)中运行迁移时遇到了问题。我们正在使用postrgres9.1.3和-pg(0.13.2)-当我运行rakedb:create,然后运行rakedb:migrate,我得到->1.9.3-p194(master)rakedb:migrate--trace**Invokedb:migrate(first_time)**Invokeenvironment(first_time)**Executeenvironmentrakeaborted!PG::Error:ERROR:relation"roles"doesnotexistLINE4:WHEREa
我想在页面顶部创建自定义Jquery消息而不是标准RailsFlash消息。我想在我的投票底部附近创建一条即时消息。我的Controller:defvote_up@post=Post.find(params[:id])current_user.up_vote(@post)flash[:message]='Thanksforvoting!'redirect_to(root_path,:notice=>'Takforditindlæg,deternuonline!')rescueMakeVoteable::Exceptions::AlreadyVotedErrorflash[:error]