小编cab*_*ret的帖子

For..In循环中的JavaScript - 键值对

我想知道是否有办法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对?

javascript foreach

380
推荐指数
11
解决办法
60万
查看次数

jQuery .attr("禁用","已禁用")无法在Chrome中运行

不知道为什么这不起作用.

当人们点击我的应用程序的"编辑"按钮时,禁用的文本字段变得可编辑:

$("#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中使用它吗?非常感谢!

jquery google-chrome cross-browser attr jquery-attributes

43
推荐指数
3
解决办法
18万
查看次数

text-align证明不起作用

我试图证明这个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)

但文字不合理!任何想法为什么?

谢谢你的帮助.

html css text-alignment

29
推荐指数
5
解决办法
8万
查看次数

未捕获的TypeError:无法调用未定义的方法'toLowerCase'

在做一些简单的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中时为什么不能工作?对我没用?:(

这里有什么帮助?提前致谢.

javascript jquery undefined typeerror

24
推荐指数
2
解决办法
7万
查看次数

CodeIgniter和抛出异常

我最近递交了一个我在CodeIgniter中建立的学校项目.我不得不把它呈现给我的老师,当被问到我是如何处理某些错误时,他告诉我在事件链中提出异常来拦截事情.

我已经学会了如何抛出异常以及如何使用try...catch块来捕获和处理它们但不知何故,当我开始使用CodeIgniter时,我忘记了它们并且不再使用异常了.

相反,我只是"手动"处理我的错误,因为缺少一个更好的词:我使用TRUEFALSE布尔值来检查,例如,一个查询是否正确执行,我会使用返回的布尔值来处理结果查询.如果TRUE我继续做我的事情,如果FALSE我'手动'抛出错误信息.该项目非常依赖于AJAX,错误消息会以相当奇特的方式弹出,从页面顶部开始下降; 当我抛出异常时,不确定这是否可行throw new Exception?我知道这基本上会阻止代码在抛出异常时执行,所以不会以某种方式破坏事情吗?

我似乎还记得在某个地方读过抛出异常并不是最好的做法,但我找不到这个的来源了,我不太确定是不是这样; ,毕竟,我们确实学会了如何在课堂上使用它们,我喜欢相信我们在那里学习最佳实践,哈哈.

如果有必要,我可以回去尝试找到他指出我应该抛出异常的代码.但是,就目前而言,我只是想知道我是否应该在代码中使用异常或手动处理事务.关于此的最佳做法是什么?

谢谢.

php error-handling codeigniter exception

23
推荐指数
1
解决办法
3万
查看次数

ActiveSupport :: Concern .. Deprecation Warning中的InstanceMethods模块

我有一个在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中包括)

ruby activesupport deprecated sinatra

18
推荐指数
1
解决办法
9594
查看次数

在React/Flux中处理计时器

我正在开发一个应用程序,我希望计时器从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)

javascript reactjs reactjs-flux

17
推荐指数
2
解决办法
2万
查看次数

根据开始时间格式化事件

仍在我的计划/日历应用程序上工作.我差不多完成了,我有一些更难的部分工作,但我陷入了一个更困难的部分.我想根据他们的开始时间在网格中显示我的事件.

它没有显示在这张照片中,但假装有一个列在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)

html css php jquery calendar

16
推荐指数
1
解决办法
982
查看次数

正则表达式在方括号之间抓取字符串

我有以下字符串: 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].

不知道怎么做...提前谢谢.

javascript regex match

15
推荐指数
2
解决办法
2万
查看次数

模拟/存根Mongoose模型保存方法

给出一个简单的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)

unit-testing mongoose mongodb node.js sinon

15
推荐指数
2
解决办法
1万
查看次数