我想知道是否有办法foreach
在JavaScript中执行类似PHP 循环的操作.我正在寻找的功能就像这个PHP代码片段:
foreach($data as $key => $value) { }
Run Code Online (Sandbox Code Playgroud)
我在看JS for..in
循环,但似乎没有办法指定as
.如果我使用'normal'for loop(for(var i = 0; i < data.length; i++
)执行此操作,是否有办法获取key => value对?
不知道为什么这不起作用.
当人们点击我的应用程序的"编辑"按钮时,禁用的文本字段变得可编辑:
$("#bewerken").click(function(e) {
$("input[disabled='disabled']").removeAttr('disabled');
});
Run Code Online (Sandbox Code Playgroud)
然后我想在用户保存时再次禁用文本字段; 我将此代码绑定到我的保存按钮:
$("#save_school_changes").click(function(e) {
//stuff
$.ajax({
type: "POST",
url: "/school/save_changes",
data: { //stuff },
success: function(data)
{
$("#feedback_top").html("<p>" + data['message'] + "</p>").slideDown('slow').delay(2000).slideUp();
$("input[type='text']").attr('disabled', 'disabled');
}
});
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
据我所知,这应该再次禁用文本字段.但是,这似乎不适用于Chrome.它在Firefox中有效.我还没有机会在IE或Safari中测试.有什么方法可以在Chrome中使用它吗?非常感谢!
我试图证明这个p标签中的文本是正确的,这样它就完全符合p的宽度.
<p align="justify" style="text-align: justify !important; color:#fff; margin:0px; font-weight:bold; width:487px; border:Solid 1px red;">blah blah blah</p>
Run Code Online (Sandbox Code Playgroud)
但文字不合理!任何想法为什么?
谢谢你的帮助.
在做一些简单的jQuery DOM操作时遇到了一个非常模糊的错误.
触发错误的行如下:
$(this).closest('tr').remove();
如标题所述,错误是:
未捕获的TypeError:无法调用未定义的方法'toLowerCase'
在文件中:jquery-1.6.2.js
.
我已经尝试过使用jQuery 1.6.3和jQuery 1.5.1,但没有任何改变.我仍然一直在收到错误.
上面的行绑定到一个按钮,当单击该按钮时,提交一个AJAX POST请求,然后成功时,它将删除它自己的按钮<tr>
.我已经尝试过另一种方式:
$(this).parent().parent().remove()
但令我惊讶的是,这没有做任何事.
我正在使用Chrome,以防万一,但我在FF中遇到了同样的错误.
编辑:
这是我的代码:
$(".remove").live('click', function(e) {
var str = $(this).attr('id').match(/\[(.*?)\]\[(.*?)\]/);
var type = str[1];
var id = str[2];
// IF I PUT THE remove() HERE, IT WORKS.
$.ajax({
type: 'POST',
url: '/admin/ajax_remove_event_detail',
data: {type: type, id: id},
success:function(res) {
if(res)
{
$(this).closest('tr').remove();
// this gives me an error
}
else
{
// error handling
}
}
});
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
如果我把remove()放在if的某个地方之外,那就行了.当它在ajax调用/ if中时为什么不能工作?对我没用?:(
这里有什么帮助?提前致谢.
我最近递交了一个我在CodeIgniter中建立的学校项目.我不得不把它呈现给我的老师,当被问到我是如何处理某些错误时,他告诉我在事件链中提出异常来拦截事情.
我已经学会了如何抛出异常以及如何使用try...catch
块来捕获和处理它们但不知何故,当我开始使用CodeIgniter时,我忘记了它们并且不再使用异常了.
相反,我只是"手动"处理我的错误,因为缺少一个更好的词:我使用TRUE
和FALSE
布尔值来检查,例如,一个查询是否正确执行,我会使用返回的布尔值来处理结果查询.如果TRUE
我继续做我的事情,如果FALSE
我'手动'抛出错误信息.该项目非常依赖于AJAX,错误消息会以相当奇特的方式弹出,从页面顶部开始下降; 当我抛出异常时,不确定这是否可行throw new Exception
?我知道这基本上会阻止代码在抛出异常时执行,所以不会以某种方式破坏事情吗?
我似乎还记得在某个地方读过抛出异常并不是最好的做法,但我找不到这个的来源了,我不太确定是不是这样; ,毕竟,我们确实学会了如何在课堂上使用它们,我喜欢相信我们在那里学习最佳实践,哈哈.
如果有必要,我可以回去尝试找到他指出我应该抛出异常的代码.但是,就目前而言,我只是想知道我是否应该在代码中使用异常或手动处理事务.关于此的最佳做法是什么?
谢谢.
我有一个在Sinatra建立的投资组合网站.我有一段时间没有工作过,一直在做一些Rails.我昨天通过运行'gem update'更新了我的宝石列表.我不知道这是否与此有关,但我今天再次开始在投资组合网站上工作,我一直在收到一些弃用警告.
弃用警告:ActiveSupport :: Concern中的InstanceMethods模块将不再自动包含在内.请直接在Work中定义实例方法.(来自/Users/joris/Desktop/sinatra/portfolio/models/work.rb:2中包括)
我不知道如何解决这个问题,当我运行应用程序时,它不再起作用了..转到我的路线只返回Sinatra 404页面.(另外,Rails不是ActiveSupport的一部分吗?为什么会出现在我的Sinatra应用程序中......)
它在错误中提到的文件是work.rb:
class Work
include MongoMapper::Document
key :title, String
key :url, String
key :filename, String
key :file, String
key :description, String
timestamps!
end
Run Code Online (Sandbox Code Playgroud)
这是我的主文件(portfolio.rb):
require "sinatra"
require 'twitter'
require 'RedCloth'
require 'html_truncator'
require 'digest/md5'
class Portfolio < Sinatra::Application
require_relative 'config/init'
require_relative 'helpers/init'
require_relative 'models/init'
require_relative 'routes/init'
Run Code Online (Sandbox Code Playgroud)
模型init文件(调用work.rb文件)具有以下内容:
require 'mongo_mapper'
MongoMapper.connection = Mongo::Connection.new('lalaland.com', 10070)
MongoMapper.database = 'hello'
MongoMapper.database.authenticate('lalala', 'hello')
require_relative 'post'
require_relative 'work'
Run Code Online (Sandbox Code Playgroud)
编辑:刚刚看到我也得到它 models/post.rb
弃用警告:ActiveSupport :: Concern中的InstanceMethods模块将不再自动包含在内.请直接在Post中定义实例方法.(来自/Users/joris/Desktop/sinatra/portfolio/models/post.rb:2中包括)
我正在开发一个应用程序,我希望计时器从60秒倒计时到0,然后更改一些内容,之后计时器再次在60处重新启动.
我已经在React和Flux中实现了这个,但由于我是新手,我仍然遇到了一些问题.
我现在想为计时器添加一个开始/停止按钮.我不知道在哪里放置/处理定时器状态.
我有一个Timer.jsx
看起来像这样的组件:
var React = require('react');
var AppStore = require('../stores/app-store.js');
var AppActions = require('../actions/app-actions.js');
function getTimeLeft() {
return {
timeLeft: AppStore.getTimeLeft()
}
}
var Timer = React.createClass({
_tick: function() {
this.setState({ timeLeft: this.state.timeLeft - 1 });
if (this.state.timeLeft < 0) {
AppActions.changePattern();
clearInterval(this.interval);
}
},
_onChange: function() {
this.setState(getTimeLeft());
this.interval = setInterval(this._tick, 1000);
},
getInitialState: function() {
return getTimeLeft();
},
componentWillMount: function() {
AppStore.addChangeListener(this._onChange);
},
componentWillUnmount: function() {
clearInterval(this.interval);
},
componentDidMount: function() {
this.interval = setInterval(this._tick, …
Run Code Online (Sandbox Code Playgroud) 仍在我的计划/日历应用程序上工作.我差不多完成了,我有一些更难的部分工作,但我陷入了一个更困难的部分.我想根据他们的开始时间在网格中显示我的事件.
它没有显示在这张照片中,但假装有一个列在25日左边有几小时(早上8点到晚上11点左右).如果一个事件开始于...比如说,下午1点,我希望它显示在页面中间的某个位置.如果活动在上午8:30开始,则应在上午8点至9点之间显示.
我想我可以用桌子来做这件事,但我想知道是否有另一种方式.这是普通的html/css,也许是一些Javascript?有关实现这一目标的最佳方法的任何建议吗?如果我使用表格,我仍然不确定最好的方法是什么.每30分钟一个细胞?我可以从我的视图访问每个事件的开始和结束时间.事件数组(在此示例中为第25个)如下所示:
Array
[1] => Array
(
[title] => Ethiek
[description] => Ethiek: Opdracht 1
[time_start] => 11:30:00
[time_end] => 12:00:00
)
[2] => Array
(
[title] => Project Management
[description] => Test: Project Management
[time_start] => 15:00:00
[time_end] => 16:00:00
)
[event_count] => 2
Run Code Online (Sandbox Code Playgroud)
我感谢您给我的任何建议.非常感谢!
编辑:开始对此给予赏金,因为我仍然卡住了,我会很感激一些反馈.
更新:
我一直在打破这个问题,老实说,我无法找到最好的方法.首先,我认为我被卡住的原因是我从db/array中读出事件的方式.这是我必须显示事件的代码,如我的截图所示,不介意我的复杂数组:
foreach($details[0] as $key => $detail)
{
echo "<div class='grid'>";
$header = "<p class='detail_header'>";
$header .= ucfirst($dates[0][$key]['name']) . ", " . $key . " " . $init['curr_month_name'];
$header .= …
Run Code Online (Sandbox Code Playgroud) 我有以下字符串: pass[1][2011-08-21][total_passes]
如何将方括号之间的项目提取到数组中?我试过了
match(/\[(.*?)\]/);
var s = 'pass[1][2011-08-21][total_passes]';
var result = s.match(/\[(.*?)\]/);
console.log(result);
Run Code Online (Sandbox Code Playgroud)
但这只会返回[1]
.
不知道怎么做...提前谢谢.
给出一个简单的Mongoose模型:
import mongoose, { Schema } from 'mongoose';
const PostSchema = Schema({
title: { type: String },
postDate: { type: Date, default: Date.now }
}, { timestamps: true });
const Post = mongoose.model('Post', PostSchema);
export default Post;
Run Code Online (Sandbox Code Playgroud)
我希望测试这个模型,但我遇到了一些障碍.
我当前的规范看起来像这样(为简洁起见省略了一些东西):
import mongoose from 'mongoose';
import { expect } from 'chai';
import { Post } from '../../app/models';
describe('Post', () => {
beforeEach((done) => {
mongoose.connect('mongodb://localhost/node-test');
done();
});
describe('Given a valid post', () => {
it('should create the post', (done) => {
const …
Run Code Online (Sandbox Code Playgroud) javascript ×4
jquery ×3
css ×2
html ×2
php ×2
attr ×1
calendar ×1
codeigniter ×1
deprecated ×1
exception ×1
foreach ×1
match ×1
mongodb ×1
mongoose ×1
node.js ×1
reactjs ×1
reactjs-flux ×1
regex ×1
ruby ×1
sinatra ×1
sinon ×1
typeerror ×1
undefined ×1
unit-testing ×1