小编Mot*_*tie的帖子

获取JavaScript数组中的所有唯一值(删除重复项)

我有一系列数字,我需要确保它们是唯一的.我在互联网上找到了下面的代码片段,它的工作情况很好,直到数组中的数字为零.我发现这个其他脚本在SO上看起来几乎就像它,但它不会失败.

所以为了帮助我学习,有人可以帮我确定原型脚本出错的地方吗?

Array.prototype.getUnique = function() {
 var o = {}, a = [], i, e;
 for (i = 0; e = this[i]; i++) {o[e] = 1};
 for (e in o) {a.push (e)};
 return a;
}
Run Code Online (Sandbox Code Playgroud)

重复问题的更多答案:

类似的问题:

javascript arrays unique

1273
推荐指数
40
解决办法
122万
查看次数

JavaScript对象中的数组?

我试过看看这是否可行,但我找不到答案.

我正在努力让以下工作:

var defaults = {
 'background-color': '#000',
 color: '#fff',
 weekdays: {['sun','mon','tue','wed','thu','fri','sat']}
};
Run Code Online (Sandbox Code Playgroud)

它只是给出了一个错误,我尝试过使用({...}),[{...}]我希望能够使用以下内容访问工作日:

defaults.weekdays[0];
Run Code Online (Sandbox Code Playgroud)

这可能吗?

javascript

47
推荐指数
4
解决办法
14万
查看次数

添加语法突出显示到gh页面

有没有一种简单的方法可以使用github的Pygments为我的各种插件的gh页面添加语法高亮?

我知道每个页面都运行Jekyll引擎并提供语法高亮(ref).但我不想安装博客.我只想将语法高亮应用于我的gh页面中的代码块.

我想我总是可以在我的gh页面中加入一个不同的插件......

syntax-highlighting github github-pages

31
推荐指数
2
解决办法
8669
查看次数

jQuery模态窗体对话框回发问题

我已经创建了一个jQuery UI Modal表单,我希望该表单能够触发回发,但是我很难让它运行起来.

我知道有很多基于使用SimpleModal插件的文章,我试图改编这些并覆盖_doPostback函数,但没有任何乐趣.

我认为问题在于我的__doPostBack函数调用以及参数应该是什么.是这样的吗?

这是我的表格

<form id="summaryForm" runat="server">
    <div id="dialog" title="Quick Booking">
        <p>Select user from list or enter name in box</p>
        <fieldset>
            <p><label>Is machine going out of the office?</label></p>
            <asp:RadioButton  TextAlign="Left" GroupName="outOfOffice" Text="Yes" ID="optYes" class="radio" runat="server" />
            <asp:RadioButton  TextAlign="Left" GroupName="outOfOffice" Text="No" ID="optNo" class="radio" runat="server" Checked="true" />

            <label for="dropLstUser">User:</label>
            <asp:DropDownList ID="dropLstUser" runat="server" />
            <input type="text" name="txtUser" id="txtUser" value="" class="text" />
            <label for="txtStartDate">Start Date:</label>
            <input type="text" id="txtStartDate" name="txtStartDate" class="datepicker" />
            <asp:HiddenField ID="assetField" runat="server" />
            <%--<button onclick="performPostBack('summaryForm')">Postback</button>--%>
        </fieldset>
    </div>
    //--------------------------------
Run Code Online (Sandbox Code Playgroud)

这是JavaScript代码: …

asp.net postback jquery-ui

27
推荐指数
3
解决办法
6万
查看次数

检测较旧的IE版本

我需要的,如果用户运行的是IE浏览器的旧版本(IE9是罚款)从一个jQuery插件检测,所以我不会有超过HTML控件.

我们不鼓励解析用户代理字符串并使用$.browser.msie.该$.support方法也未涵盖该问题.

所以,我发现这有效,但我不确定它是否是"良好做法".

$('body').append('<!--[if lte IE 8]><script>$("body").addClass("oldie");</script><![endif]-->');
var old_ie = $('body').is('.oldie');
Run Code Online (Sandbox Code Playgroud)

你会使用这种方法还是坚持解析用户代理字符串(我需要弄清楚它是否是IE并得到版本号)?

jquery internet-explorer browser-support

14
推荐指数
1
解决办法
5129
查看次数

使用jQuery插入表列

我有一个数据表,我需要动态添加一列.让我说我有这个基本的表开始:

<table>
 <tr><td>cell 1</td><td>cell 2</td><td>cell 3</td></tr>
 <tr><td>cell 1</td><td>cell 2</td><td>cell 3</td></tr>
 <tr><td>cell 1</td><td>cell 2</td><td>cell 3</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我想在每一行的单元格1和单元格2之间插入一个列...我已经尝试了这个但是它没有像我期望的那样工作......

$(document).ready(function(){
 $('table').find('tr').each(function(){
  $(this).prepend('<td>cell 1a</td>');
 })
})
Run Code Online (Sandbox Code Playgroud)

jquery html-table

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

在Qunit中跳过测试

我刚刚找到了qHint,一种将jsHint测试集成到Qunit中的方法......但它在本地不起作用(我不是指localhost),除了在Firefox中.

所以我想添加一个"警告"或"通知",而不是测试失败,显示测试被跳过:

// do unit test if not local or local and running Firefox
t = QUnit.isLocal;
if (!t || (t && /Firefox/.test(navigator.userAgent))) {
    jsHintTest('JSHint core check', 'js/myplugin.js');
} else {
    test('JSHint core check (skipped)', function(){
        ok( true, 'check not done locally' );
    });
}
Run Code Online (Sandbox Code Playgroud)

我想更明显地跳过测试,这可能吗?


更新:感谢Odi的回答!,但我必须稍作修改才能使代码在QUnit v1.11.0pre中运行:

QUnit.testSkip = function( testName, callback ) {
    QUnit.test(testName + ' (SKIPPED)', function() {
        if (typeof callback === "function") {
            callback();
        }
        var li = document.getElementById(QUnit.config.current.id);
        QUnit.done(function() {
            li.style.background = '#FFFF99'; …
Run Code Online (Sandbox Code Playgroud)

qunit jshint

12
推荐指数
1
解决办法
2531
查看次数

触发Google商家信息自动填充功能

我正在尝试附加虚拟键盘以绑定到Google地方自动填充输入.

如果我在输入中实际输入一个字母,则Google支持的下拉列表会根据地图的居中位置显示自动填充预测.如果单击虚拟键盘键,则输入会正确更新,但不会更新自动完成预测.

我曾尝试使用虚拟键盘change回调触发"KEYUP"(计算器的结果),"按键","的keydown","变",我甚至想这(演示):

change : function(e, keyboard, el) {
    google.maps.event.trigger(autocomplete, 'place_changed');
}
Run Code Online (Sandbox Code Playgroud)

这导致javascript错误基本上显示autocomplete.getPlace();不返回结果.

所以现在我已经尝试了下面的代码(在这个演示中),它使用更改回调来触发自动完成预测,但正如您在该演示中所看到的,结果不同.

change : function(e, keyboard, el) {
  var $el = $(el),
      service = new google.maps.places.AutocompleteService();
  if ($el.val() !== "") {
    service.getQueryPredictions({ input: $(el).val() }, function(predictions, status) {
      if (status != google.maps.places.PlacesServiceStatus.OK) {
        alert(status);
        return;
      }
      var list = '', $results = $('#results');
      for (var i = 0, prediction; prediction = predictions[i]; i++) {
        list += '<li>' + prediction.description + …
Run Code Online (Sandbox Code Playgroud)

javascript google-places-api

12
推荐指数
1
解决办法
8236
查看次数

在可信赖的插入位置上考虑```s

为了在一个contenteditable元素中获取和设置插入位置,我尝试了这个答案中的代码,但是当你移动到不同的文本节点时,开始和结束位置会重置.

<div contenteditable>012345<br><br><br>9012345</div>
Run Code Online (Sandbox Code Playgroud)

所以,我修改了这个答案的代码(通过@TimDown),但它还没有完全正确地计算换行符...在这个演示中,当我点击4并按下右箭头三次后,我会看到开始/结束报告5,6,然后8.或者,使用鼠标从4第一行中选择并继续向右选择(请参阅gif)

选择满足

这是代码(演示 ;即使它看起来像,jQuery 没有被使用)

function getCaret(el) {
  let start, end;
  const range = document.getSelection().getRangeAt(0),
    preSelectionRange = range.cloneRange(),
    postSelectionRange = range.cloneRange();
  preSelectionRange.selectNodeContents(el);
  preSelectionRange.setEnd(range.startContainer, range.startOffset);
  postSelectionRange.selectNodeContents(el);
  postSelectionRange.setEnd(range.endContainer, range.endOffset);
  start = preSelectionRange.toString().length;
  end = start + range.toString().length;
  // count <br>'s and adjust start & end
  if (start > 0) {
    var node,
      i = el.children.length;
    while (i--) {
      node = …
Run Code Online (Sandbox Code Playgroud)

javascript caret contenteditable ecmascript-6

12
推荐指数
1
解决办法
520
查看次数

"about:blank"页面的Chrome扩展程序权限

我的Chrome扩展程序没有使用,content_scripts因为我不想将代码注入每个页面.相反,当用户点击按钮时,会打开一个弹出窗口并将代码注入页面.

所以,在manifest.json一个权限块中:

"permissions": [
  "activeTab"
]
Run Code Online (Sandbox Code Playgroud)

popup.js这里有代码:

chrome.windows.getCurrent( function(win) {
    chrome.tabs.query({
        'windowId': win.id,
        'active': true
    }, function(tabArray) {

        // inject css & js only on initial click
        chrome.tabs.executeScript( null, {
            code : 'document.querySelector( "body" ).classList.contains( "_myExtension_code_injected" )'
        }, function( result ) {
            if ( result && !result[0] ) {
                chrome.tabs.insertCSS( null, {
                    file: 'myExtension.css'
                });

                chrome.tabs.executeScript(null, {
                    file: 'myExtension.js'
                }, function(){
                    chrome.tabs.executeScript(null, {
                        code: 'myExtension.init();'
                    });
                });
            }
        });

    });
});
Run Code Online (Sandbox Code Playgroud)

问题是一些网站打开一个包含附加信息的弹出窗口.并且该弹出页面的URL是"about:blank".如果我尝试初始化扩展,我在控制台中看到此消息: …

javascript google-chrome google-chrome-extension

10
推荐指数
1
解决办法
2603
查看次数