คำถามติดแท็ก javascript

สำหรับคำถามเกี่ยวกับการเขียนโปรแกรมใน ECMAScript (JavaScript / JS) และภาษา / การใช้งานต่างๆ (ไม่รวม ActionScript) แท็กนี้ไม่ค่อยได้ใช้คนเดียว แต่ส่วนใหญ่มักจะเกี่ยวข้องกับแท็ก [node.js], [jquery], [json] และ [html]

10
มีวิธีการต่อสายสำหรับสตริงหรือไม่?
Javascript spliceใช้งานได้กับอาร์เรย์เท่านั้น มีวิธีการที่คล้ายกันสำหรับสตริงหรือไม่? หรือฉันควรสร้างฟังก์ชันที่กำหนดเอง substr()และsubstring()วิธีเดียวที่จะกลับสตริงสกัดและไม่สามารถปรับเปลี่ยนสายเดิม สิ่งที่ฉันต้องการทำคือลบบางส่วนออกจากสตริงของฉันและใช้การเปลี่ยนแปลงกับสตริงเดิม ยิ่งไปกว่านั้นวิธีreplace()นี้จะใช้ไม่ได้ในกรณีของฉันเพราะฉันต้องการลบส่วนที่เริ่มต้นจากดัชนีและสิ้นสุดที่ดัชนีอื่น ๆ เหมือนกับที่ฉันสามารถทำได้ด้วยsplice()วิธีนี้ ฉันพยายามแปลงสตริงเป็นอาร์เรย์ แต่นี่ไม่ใช่วิธีที่เรียบร้อย
92 javascript 

4
ตอบสนองเราเตอร์ v ^ 4.0.0 Uncaught TypeError: ไม่สามารถอ่านคุณสมบัติ 'ตำแหน่ง' ของที่ไม่ได้กำหนด
ฉันมีปัญหากับเราเตอร์ react (ฉันใช้เวอร์ชัน ^ 4.0.0) นี่คือ index.js ของฉัน import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; import './index.css'; import { Router, Route, Link, browserHistory } from 'react-router'; ReactDOM.render( <Router history={browserHistory} > <Route path="/" component={App} /> </Router>, document.getElementById('root') ); App.js เป็นอะไรก็ได้ ฉันกำลังโพสต์สิ่งพื้นฐานที่นี่เพราะมันไม่ใช่ปัญหา (ฉันเชื่อว่า) import React, { Component …

13
เป็นตัวดำเนินการ + ที่มีประสิทธิภาพน้อยกว่า StringBuffer.append ()
ในทีมของฉันเรามักจะเรียงลำดับสตริงแบบนี้: var url = // some dynamically generated URL var sb = new StringBuffer(); sb.append("<a href='").append(url).append("'>click here</a>"); เห็นได้ชัดว่าสิ่งต่อไปนี้สามารถอ่านได้มากขึ้น: var url = // some dynamically generated URL var sb = "<a href='" + url + "'>click here</a>"; แต่ผู้เชี่ยวชาญ JS อ้างว่า+ผู้ประกอบการเป็น performant StringBuffer.append()น้อยกว่า นี่มันเรื่องจริงเหรอ?


6
ตัวอย่าง JavaScript ternary operator พร้อมฟังก์ชัน
ฉันใช้ jQuery 1.7.1 ฉันเพิ่งเริ่มใช้ตัวดำเนินการ ternary JavaScript เพื่อแทนที่คำสั่ง if / else อย่างง่าย ฉันประสบความสำเร็จในหลาย ๆ ที่ ฉันรู้สึกประหลาดใจเมื่อฉันทำอย่างอื่นได้สำเร็จเมื่อฉันคิดว่ามันจะไม่สำเร็จ แต่ฉันก็พยายามต่อไป นี่คือข้อความดั้งเดิม: function updateItem() { $this = $(this); var IsChecked = $this.hasClass("IsChecked"); if (IsChecked == true){ removeItem($this); } else { addItem($this); } } นี่คือฟังก์ชันเดียวกันโดยใช้ตัวดำเนินการ ternary: function updateItem() { $this = $(this); var IsChecked = $this.hasClass("IsChecked"); …

5
คัดลอกไฟล์ทั้งหมดจากไดเร็กทอรีไปยังไดเร็กทอรีอื่นด้วย Grunt.js copy
ฉันพยายามคัดลอกไฟล์ทั้งหมดในไดเร็กทอรีไปยังไดเร็กทอรีอื่นซึ่งเป็นส่วนหนึ่งของกระบวนการสร้างของฉัน มันใช้งานได้ดีสำหรับไฟล์แต่ละไฟล์ที่ฉันระบุไว้อย่างชัดเจน แต่เมื่อฉันพยายามคัดลอกทั้งไดเร็กทอรีมันจะทำสิ่งแปลก ๆ เช่นคัดลอกโครงสร้างไดเร็กทอรีแบบเต็ม (หรือไม่มีอะไรเลย) นี่คือส่วนที่เกี่ยวข้องจาก GruntFile.js ของฉัน: copy: { myvoice: { files: [ { src:"src/html/index.html", dest:"dist/myvoice/index.html" }, { src:"src/html/css/style.css", dest:"dist/myvoice/css/style.css" }, { src:"src/html/js/require.js", dest:"dist/myvoice/js/require.js" }, { src:"build/myvoice/main.js", dest:"dist/myvoice/js/main.js" }, { src:"src/html/css/fonts/*", dest:"dist/myvoice/css/fonts/" } ] } }, โดยเฉพาะอย่างยิ่งมันเป็นบรรทัดสุดท้ายที่ฉันไม่สามารถไปทำงานได้: { src:"src/html/css/fonts/*", dest:"dist/myvoice/css/fonts/" }

5
วิธีการล้างหรือหยุด timeInterval ใน angularjs?
ฉันกำลังทำการสาธิตซึ่งฉันกำลังดึงข้อมูลจากเซิร์ฟเวอร์หลังจากช่วงเวลาปกติโดยใช้$intervalNow ฉันจำเป็นต้องหยุด / ยกเลิกสิ่งนี้ ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร? หากฉันต้องการเริ่มกระบวนการใหม่ฉันควรทำอย่างไร? ประการที่สองฉันมีอีกหนึ่งคำถาม: ฉันกำลังดึงข้อมูลจากเซิร์ฟเวอร์หลังจากช่วงเวลาที่ต้องการ มีความจำเป็นต้องใช้$scope.applyหรือ$scope.watch? นี่คือผู้ทำลายล้างของฉัน: app.controller('departureContrl',function($scope,test, $interval){ setData(); $interval(setData, 1000*30); function setData(){ $scope.loading=true; test.stationDashBoard(function(data){ console.log(data); $scope.data=data.data; $scope.loading=false; //alert(data); },function(error){ alert('error') }) ; } }); http://plnkr.co/edit/ly43m5?p=preview

7
ใน JSON ทำไมแต่ละชื่อจึงถูกยกมา?
ข้อมูลจำเพาะของ JSONบอกว่า JSON เป็นวัตถุหรืออาร์เรย์ ในกรณีของวัตถุ โครงสร้างออบเจ็กต์แสดงเป็นคู่ของวงเล็บปีกกาล้อมรอบคู่ชื่อ / ค่าที่เป็นศูนย์หรือมากกว่า (หรือสมาชิก) ชื่อคือสตริง ... และต่อมาข้อมูลจำเพาะบอกว่าสตริงล้อมรอบด้วยเครื่องหมายคำพูด ทำไม? ด้วยประการฉะนี้ {"Property1":"Value1","Property2":18} และไม่ {Property1:"Value1",Property2:18} คำถามที่ 1 : ทำไมไม่อนุญาตให้ชื่อในคู่ชื่อ / ค่าเป็นตัวระบุที่ไม่มีเครื่องหมายคำพูด คำถามที่ 2 : มีความแตกต่างทางความหมายระหว่างสองการแสดงข้างต้นเมื่อประเมินใน Javascript หรือไม่?
91 javascript  json 

3
วิธีเลือกคลาสทั้งหมดยกเว้นองค์ประกอบที่คลิกใน JQuery
ฉันมีเว็บไซต์ที่พัฒนาบน Drupal ฉันใช้โมดูลที่เรียกว่า collsiblock (โดยพื้นฐานแล้วเป็นปลั๊กอิน JQuery) เพื่อให้ได้ผลเหมือนหีบเพลง มันทำงานได้ดีกับฉัน (แม้ว่าจะอยู่ในเบต้า) แต่ฉันต้องการแก้ไขเพื่อให้เมื่อผู้ใช้คลิกที่หีบเพลงรายการหนึ่งรายการอื่น ๆ จะยุบลง ในสถิติปัจจุบันมันทำงานในลักษณะที่เมื่อผู้ใช้คลิกที่รายการหนึ่งระบบจะตรวจสอบว่ารายการนั้นยุบหรือขยายแล้วหรือไม่และจะทำให้รายการนั้นตรงกันข้าม นั่นหมายความว่าหากผู้ใช้คลิกที่รายการหนึ่งรายการนั้นจะขยายออกและหากผู้ใช้คลิกที่รายการอื่นระบบจะขยายด้วย แต่จะไม่ยุบรายการที่คลิกก่อนหน้านี้ คุณสามารถดูรหัสด้านล่าง ฉันรู้ว่าควรเพิ่มโค้ดเพื่อยุบและยุบและขยายอย่างไร คำถามของฉันคือฉันจะเลือกรายการทั้งหมดที่มีคลาส ".collapsiblock" ได้อย่างไรยกเว้นรายการที่ผู้ใช้คลิก ?? หมายเหตุ: ไอเท็มที่มีคลาส ".collapsiblockCollapsed" จะถูกยุบและถ้าคลาสนี้ถูกลบออกจากไอเท็มจะได้รับการขยาย // $Id: collapsiblock.js,v 1.6 2010/08/18 19:17:37 gagarine Exp $ Drupal.Collapsiblock = Drupal.Collapsiblock || {}; Drupal.behaviors.collapsiblock = function (context) { var cookieData = Drupal.Collapsiblock.getCookieData(); var slidetype …

7
AngularJS ng-repeat โดยไม่มีองค์ประกอบ html
ฉันกำลังใช้โค้ดชิ้นนี้เพื่อแสดงรายการ: <ul ng-cloak> <div ng-repeat="n in list"> <li><a href="{{ n[1] }}">{{ n[0] }}</a></li> <li class="divider"></i> </div> <li>Additional item</li> </ul> อย่างไรก็ตาม<div>องค์ประกอบดังกล่าวก่อให้เกิดข้อบกพร่องในการแสดงผลเล็กน้อยในบางเบราว์เซอร์ ฉันอยากทราบว่ามีวิธีทำ ng-repeat โดยไม่ใช้ div container หรือวิธีอื่นเพื่อให้ได้ผลเช่นเดียวกัน

6
ภาษาอื่นที่ไม่ใช่ JavaScript มีความแตกต่างระหว่างตำแหน่งเริ่มต้นของวงเล็บปีกกา (บรรทัดเดียวกันและบรรทัดถัดไป) หรือไม่
วันนี้ขณะที่ฉันสุ่มอ่านหนังสือ O'Reilly รูปแบบ JavaScript ฉันพบสิ่งที่น่าสนใจอย่างหนึ่ง (หน้า 27 สำหรับการอ้างอิง) ใน Javascript ในบางกรณีอาจมีความแตกต่างหากตำแหน่งเริ่มต้นของวงเล็บปีกกาแตกต่างกัน function test_function1() { return { name: 'rajat' }; } var obj = test_function1(); alert(obj); //Shows "undefined" ในขณะที่ function test_function2() { return { name: 'rajat' }; } var obj = test_function2(); alert(obj); //Shows object การสาธิต JSfiddle ภาษาอื่น ๆ มีพฤติกรรมเช่นนี้หรือไม่? ถ้าเป็นเช่นนั้นฉันจะต้องเปลี่ยนนิสัยของฉันอย่างแน่นอน …

8
javascript forEach ใช้อะไรได้บ้าง (แผนที่นั้นไม่สามารถทำได้)
ข้อแตกต่างเดียวที่ฉันเห็นในแผนที่และ foreach mapคือส่งคืนอาร์เรย์และforEachไม่ใช่ อย่างไรก็ตามฉันไม่เข้าใจบรรทัดสุดท้ายของforEachวิธีการ " func.call(scope, this[i], i, this);" ด้วยซ้ำ ยกตัวอย่างเช่นไม่ได้ " this" และ " scope" หมายถึงวัตถุเดียวกันและไม่ได้เป็นthis[i]และiหมายถึงค่าปัจจุบันในวง? ฉันสังเกตเห็นในโพสต์อื่นมีคนพูดว่า "ใช้forEachเมื่อคุณต้องการทำบางสิ่งบนพื้นฐานของแต่ละองค์ประกอบของรายการคุณอาจจะเพิ่มสิ่งต่างๆลงในเพจเป็นต้นโดยพื้นฐานแล้วมันยอดเยี่ยมสำหรับเมื่อคุณต้องการ" ผลข้างเคียง " ฉันไม่รู้ความหมายของผลข้างเคียง Array.prototype.map = function(fnc) { var a = new Array(this.length); for (var i = 0; i < this.length; i++) { a[i] = fnc(this[i]); } return a; } Array.prototype.forEach = …


11
ฉันจะทำให้ฟังก์ชันการเปลี่ยน CSS3 เป็นปกติในเบราว์เซอร์ได้อย่างไร
เหตุการณ์สิ้นสุดการเปลี่ยนแปลงของ Webkit เรียกว่า webkitTransitionEnd, Firefox คือ transitionEnd โอเปร่าคือ oTransitionEnd วิธีที่ดีในการจัดการกับ JS ทั้งหมดคืออะไร? ฉันควรดมเบราว์เซอร์หรือไม่? หรือใช้แต่ละอันแยกกัน? วิธีอื่นที่ไม่ได้เกิดขึ้นกับฉัน? กล่าวคือ: //doing browser sniffing var transitionend = (isSafari) ? "webkitTransitionEnd" : (isFirefox) ? "transitionEnd" : (isOpera) ? "oTransitionEnd"; element.addEventListener(transitionend, function(){ //do whatever },false); หรือ // Assigning an event listener per browser element.addEventListener("webkitTransitionEnd", fn); element.addEventListener("oTransitionEnd", fn); …

4
ตรวจจับเมื่อโหลดเนื้อหา Iframe (ข้ามเบราว์เซอร์)
ฉันกำลังพยายามตรวจสอบเมื่อ iframe และเนื้อหาโหลด แต่ไม่มีโชคมากนัก แอปพลิเคชันของฉันป้อนข้อมูลในช่องข้อความในหน้าต่างหลักและอัปเดต iframe เพื่อให้ 'แสดงตัวอย่างสด' ฉันเริ่มต้นด้วยรหัสต่อไปนี้ (YUI) เพื่อตรวจจับเมื่อเหตุการณ์โหลด iframe เกิดขึ้น $E.on('preview-pane', 'load', function(){ previewBody = $('preview-pane').contentWindow.document.getElementsByTagName('body')[0]; } 'Preview-pane' คือ ID ของ iframe ของฉันและฉันใช้ YUI เพื่อแนบตัวจัดการเหตุการณ์ อย่างไรก็ตามการพยายามเข้าถึงเนื้อหาในการเรียกกลับ (เมื่อโหลด iframe) ล้มเหลวฉันคิดว่าเป็นเพราะ iframe โหลดก่อนที่ตัวจัดการเหตุการณ์จะพร้อม รหัสนี้ใช้งานได้หากฉันชะลอการโหลด iframe โดยสร้างสคริปต์ php ที่สร้างโหมดสลีป โดยทั่วไปฉันกำลังถามว่าอะไรคือแนวทางที่ถูกต้องในเบราว์เซอร์ในการตรวจจับเมื่อ iframe โหลดและเอกสารพร้อมแล้ว?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.