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

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

22
จะหลีกเลี่ยงสัญลักษณ์ทางวิทยาศาสตร์สำหรับ JavaScript จำนวนมากได้อย่างไร
JavaScript แปลงINT ขนาดใหญ่เป็นเครื่องหมายทางวิทยาศาสตร์เมื่อจำนวนกลายเป็นใหญ่ ฉันจะป้องกันไม่ให้เกิดเหตุการณ์เช่นนี้ได้อย่างไร
183 javascript 

4
มีโอเปอเรเตอร์“ ไม่ได้อยู่ใน” ใน JavaScript เพื่อตรวจสอบคุณสมบัติของวัตถุหรือไม่?
มีตัวดำเนินการ "ไม่อยู่" ใน JavaScript เพื่อตรวจสอบว่าคุณสมบัติไม่มีอยู่ในวัตถุหรือไม่? ฉันไม่พบอะไรเกี่ยวกับสิ่งนี้รอบ ๆ Google หรือ Stack Overflow นี่คือตัวอย่างของรหัสขนาดเล็กที่ฉันกำลังทำงานในที่ที่ฉันต้องการฟังก์ชั่นประเภทนี้: var tutorTimes = {}; $(checked).each(function(idx){ id = $(this).attr('class'); if(id in tutorTimes){} else{ //Rest of my logic will go here } }); อย่างที่คุณเห็นฉันจะใส่ทุกอย่างลงในelseคำสั่ง ดูเหมือนว่าฉันผิดที่จะตั้งค่าคำสั่งif- elseเพื่อใช้elseส่วนนั้น

11
วิธีการตั้งค่าโฟกัสสำหรับฟิลด์เฉพาะใน Modal Bootstrap เมื่อมันปรากฏขึ้น
ฉันเคยเห็นคำถามสองสามข้อเกี่ยวกับวิธีการ bootstrap แต่ไม่มีใครเหมือนนี้ดังนั้นฉันจะไป ฉันมีคำกริยาที่เรียกว่า onclick อย่างนั้น ... $(".modal-link").click(function(event){ $("#modal-content").modal('show'); }); สิ่งนี้ทำงานได้ดี แต่เมื่อฉันแสดงโมดอลฉันต้องการที่จะมุ่งเน้นไปที่องค์ประกอบอินพุตแรก ... ในกรณีที่องค์ประกอบอินพุตแรกมี id #photo_name ดังนั้นฉันจึงพยายาม $(".modal-link").click(function(event){ $("#modal-content").modal('show'); $("input#photo_name").focus(); }); แต่นี่ไม่เป็นประโยชน์ ท้ายสุดฉันพยายามผูกไว้กับเหตุการณ์ 'โชว์' แต่ถึงอย่างนั้นอินพุตก็จะไม่โฟกัส ในที่สุดสำหรับการทดสอบเนื่องจากฉันสงสัยว่านี่เป็นเรื่องเกี่ยวกับการโหลด js ฉันใส่ setTimeout เพื่อดูว่าฉันหน่วงเวลาหนึ่งวินาทีโฟกัสจะทำงานหรือไม่และทำงานได้! แต่วิธีนี้เห็นได้ชัดว่าอึ มีวิธีการที่จะมีผลเช่นเดียวกับด้านล่างโดยไม่ใช้ setTimeout หรือไม่? $("#modal-content").on('show', function(event){ window.setTimeout(function(){ $(event.currentTarget).find('input#photo_name').first().focus() }, 0500); });

9
ข้อเสนอแนะ typeahead.js ของ Twitter ไม่ได้ถูกจัดรูปแบบ (ไม่มีขอบพื้นหลังโปร่งใส ฯลฯ )
ฉันใช้ประเภท twitter ของ twitter 0.9.3และดูเหมือนว่าคำแนะนำของฉันจะไม่ได้รับการออกแบบเลย ฉันได้รับสิ่งนี้: แทนที่จะเป็นสิ่งนี้: (นำมาจากหน้าตัวอย่าง ) JavaScript เปิดใช้งานหัวพิมพ์: $('.search-typeahead').typeahead({ name: 'videos', remote: { url: '/api/v1/internal/videos/typeahead?text=%QUERY' } }); องค์ประกอบอินพุต HTML: <input type="text" value="" id="search_keywords" class="no-clear search-typeahead"/> หมายเหตุเพิ่มเติม: เว็บไซต์ที่ฉันใช้งานมี jQuery 1.10.1 และไม่ใช้ twitter bootstrap มี CSS จำนวนมากที่ฉันไม่ได้เขียนและไม่คุ้นเคยกับสิ่งที่ฉันกลัวว่าจะรบกวน แต่ดูเหมือนว่าปลั๊กอินจะเพิ่มสไตล์ของตัวเอง (ไม่มีไฟล์. css ประกอบ) ดังนั้นจึงไม่ควรที่จะแทนที่สิ่งต่าง ๆ ? ฉันสับสนว่าทำไมสไตล์ของฉันจึงใช้งานได้ แต่สิ่งที่เพิ่มโดยปลั๊กอินไม่ได้ทำให้เกิดข้อเสนอแนะที่มีพื้นหลังโปร่งใสไม่มีเส้นขอบ ฯลฯ

8
var self = นี่?
โดยใช้วิธีการเช่นการเรียกกลับเป็นสำหรับการจัดการเหตุการณ์การเปลี่ยนแปลงขอบเขตของthisจาก"อินสแตนซ์ของฉัน"เพื่อ"สิ่งที่เรียกว่าเพียงแค่โทรกลับ" ดังนั้นรหัสของฉันมีลักษณะเช่นนี้ function MyObject() { this.doSomething = function() { ... } var self = this $('#foobar').bind('click', function(){ self.doSomethng() // this.doSomething() would not work here }) } มันใช้งานได้ แต่เป็นวิธีที่ดีที่สุดที่จะทำหรือไม่ มันดูแปลกสำหรับฉัน

8
วิธีหยุดการทำฟองอากาศในช่องทำเครื่องหมายให้คลิก
ฉันมีช่องทำเครื่องหมายที่ฉันต้องการดำเนินการบางอย่างของ Ajax ในกิจกรรมคลิกอย่างไรก็ตามช่องทำเครื่องหมายยังอยู่ในคอนเทนเนอร์ด้วยพฤติกรรมการคลิกของตัวเองซึ่งฉันไม่ต้องการเรียกใช้เมื่อคลิกที่ช่องทำเครื่องหมาย ตัวอย่างนี้แสดงสิ่งที่ฉันต้องการทำ: $(document).ready(function() { $('#container').addClass('hidden'); $('#header').click(function() { if ($('#container').hasClass('hidden')) { $('#container').removeClass('hidden'); } else { $('#container').addClass('hidden'); } }); $('#header input[type=checkbox]').click(function(event) { // Do something }); }); #container.hidden #body { display: none; } <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <div id="container"> <div id="header"> <h1>Title</h1> <input type="checkbox" name="test" /> </div> <div id="body"> <p>Some content</p> …

9
Javascript foreach วนบนวัตถุอาเรย์แบบเชื่อมโยง
ทำไมลูป for-each loop ไม่ทำซ้ำกับอ็อบเจกต์อาเรย์แบบ JavaScript ของฉัน // defining an array var array = []; // assigning values to corresponding keys array["Main"] = "Main page"; array["Guide"] = "Guide page"; array["Articles"] = "Articles page"; array["Forum"] = "Forum board"; // expected: loop over every item, // yet it logs only "last" assigned value …

9
ปิดใช้งานตัวเลือกการพิมพ์ของเบราว์เซอร์ (ส่วนหัวส่วนท้ายระยะห่าง) จากหน้าเว็บหรือไม่
ฉันได้เห็นคำถามนี้ถามในสองวิธีที่แตกต่างกันใน SO และเว็บไซต์อื่น ๆ แต่ส่วนใหญ่มีความเฉพาะเจาะจงเกินไปหรือล้าสมัย ฉันหวังว่าบางคนสามารถให้คำตอบที่ชัดเจนได้ที่นี่โดยไม่ต้องเปลี่ยนไปเก็งกำไร มีวิธีอย่างใดอย่างหนึ่งกับ CSS หรือ javascript เพื่อเปลี่ยนการตั้งค่าเครื่องพิมพ์เริ่มต้นเมื่อมีคนพิมพ์ภายในเบราว์เซอร์ของพวกเขา และแน่นอนโดย "พิมพ์จากเบราว์เซอร์" ฉันหมายถึง HTML บางรูปแบบไม่ใช่ PDF หรือปลั๊กอิน mime-reliant ชนิดอื่น โปรดทราบ: หากเบราว์เซอร์บางตัวเสนอสิ่งนี้และอื่น ๆ ไม่มี (หรือถ้าคุณรู้วิธีการทำสำหรับเบราว์เซอร์บางตัวเท่านั้น) ฉันยินดีต้อนรับโซลูชันเฉพาะเบราว์เซอร์ ในทำนองเดียวกันหากคุณรู้จักเบราว์เซอร์กระแสหลักที่มีข้อ จำกัด เฉพาะกับการทำเช่นนี้สิ่งนี้ก็มีประโยชน์เช่นกัน แต่เอกสารบางอย่างที่เป็นปัจจุบันจะได้รับการชื่นชม (เพียงแค่พูดว่า "ขัดกับนโยบายความปลอดภัยของ XYZ" ไม่น่าเชื่อมากเมื่อ XYZ ทำการเปลี่ยนแปลงที่สำคัญในนโยบายดังกล่าวในช่วงสามปีที่ผ่านมา) ในที่สุดเมื่อฉันพูดว่า "เปลี่ยนการตั้งค่าการพิมพ์เริ่มต้น" ฉันไม่ได้ตั้งใจตลอดไปเพียงแค่สำหรับหน้าของฉันและฉันหมายถึงเฉพาะขอบพิมพ์หัวกระดาษและท้ายกระดาษ ฉันตระหนักดีว่า CSS มีตัวเลือกในการเปลี่ยนการวางแนวของหน้ารวมถึงระยะขอบของหน้า หนึ่งในหลาย ๆ การต่อสู้คือ Firefox ถ้าฉันตั้งค่าระยะขอบของหน้ากระดาษเป็น 1 นิ้วมันจะเพิ่มค่านี้เป็นครึ่งนิ้วที่มันถูกวางไว้แล้ว ฉันต้องการลดการใช้ …

12
AngularJS: วิธีรันโค้ดเพิ่มเติมหลังจาก AngularJS แสดงผลเทมเพลตแล้ว?
ฉันมีเทมเพลต Angular ใน DOM เมื่อคอนโทรลเลอร์ของฉันได้รับข้อมูลใหม่จากบริการมันจะอัพเดตโมเดลในขอบเขต $ และแสดงเทมเพลตอีกครั้ง ดีมากจนถึงตอนนี้ ปัญหาคือฉันต้องทำงานพิเศษหลังจากเทมเพลตถูกแสดงอีกครั้งและอยู่ใน DOM (ในกรณีนี้คือปลั๊กอิน jQuery) ดูเหมือนว่าจะมีเหตุการณ์ที่ต้องฟังเช่น AfterRender แต่ฉันไม่พบสิ่งใดเลย บางทีคำสั่งอาจเป็นหนทางไป แต่ดูเหมือนว่าจะยิงเร็วเกินไป นี่คือ jsFiddle ที่สรุปปัญหาของฉัน: Fiddle-AngularIssue == UPDATE == จากความคิดเห็นที่เป็นประโยชน์ฉันจึงเปลี่ยนไปใช้คำสั่งเพื่อจัดการการจัดการ DOM และใช้โมเดล $ watch ในคำสั่ง อย่างไรก็ตามฉันยังคงมีปัญหาพื้นฐานเดียวกันอยู่ โค้ดที่อยู่ในเหตุการณ์การเฝ้าดู $ เริ่มก่อนที่จะรวบรวมและแทรกเทมเพลตใน DOM ดังนั้นปลั๊กอิน jquery จะประเมินตารางที่ว่างอยู่เสมอ ที่น่าสนใจถ้าฉันลบการเรียกแบบ async สิ่งที่ใช้งานได้ดีก็เป็นขั้นตอนในทิศทางที่ถูกต้อง นี่คือ Fiddle ที่อัปเดตของฉันเพื่อสะท้อนการเปลี่ยนแปลงเหล่านี้: http://jsfiddle.net/uNREn/12/


13
Javascript ลด () กับ Object
มีวิธี Array ที่ดีในการreduce()รับค่าหนึ่งค่าจาก Array ตัวอย่าง: [0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){ return previousValue + currentValue; }); วิธีที่ดีที่สุดในการบรรลุวัตถุเดียวกันคืออะไร? ฉันต้องการทำสิ่งนี้: { a: {value:1}, b: {value:2}, c: {value:3} }.reduce(function(previous, current, index, array){ return previous.value + current.value; }); อย่างไรก็ตามวัตถุดูเหมือนจะไม่ได้มีreduce()การใช้วิธีการใด ๆ

6
ฉันจะใช้ async / คอยอยู่ที่ระดับสูงสุดได้อย่างไร
ฉันได้ไปมากกว่าasync/ awaitและหลังจากอ่านบทความต่าง ๆ ฉันตัดสินใจทดสอบด้วยตนเอง อย่างไรก็ตามฉันไม่สามารถคาดศีรษะได้ว่าทำไมสิ่งนี้ถึงไม่ทำงาน: async function main() { var value = await Promise.resolve('Hey there'); console.log('inside: ' + value); return value; } var text = main(); console.log('outside: ' + text); คอนโซลเอาต์พุตต่อไปนี้ (โหนด v8.6.0): > ข้างนอก: [วัตถุสัญญา] > ข้างใน: เฮ้นั่น ทำไมข้อความบันทึกภายในฟังก์ชั่นถึงทำงานหลังจากนั้น ฉันคิดว่าเหตุผลasync/ awaitถูกสร้างขึ้นเพื่อดำเนินการซิงโครนัสโดยใช้งานอะซิงโครนัส มีวิธีที่ฉันสามารถใช้ค่าที่ส่งกลับภายในฟังก์ชั่นโดยไม่ต้องใช้ความ.then()หลังmain()?

30
ตรงกลางหน้าต่าง Modal Bootstrap
ฉันต้องการอยู่ตรงกลางโมดัลของฉันในวิวพอร์ต (กลาง) ฉันพยายามเพิ่มคุณสมบัติ css .modal { position: fixed; top:50%; left:50%; } ฉันใช้ตัวอย่างนี้http://jsfiddle.net/rniemeyer/Wjjnd/ ฉันเหนื่อย $("#MyModal").modal('show').css( { 'margin-top': function () { return -($(this).height() / 2); }, 'margin-left': function () { return -($(this).width() / 2); } })

5
ทำให้ Bootstrap Popover ปรากฏ / หายไปบน Hover แทนที่จะคลิก
ฉันกำลังสร้างเว็บไซต์ด้วย Bootstrap ของPopoverและฉันไม่สามารถหาวิธีที่จะทำให้ popover ปรากฏบน hover แทนที่จะคลิก สิ่งที่ฉันต้องการจะทำก็คือให้มีป๊อปโอเวอร์ปรากฏขึ้นเมื่อมีคนเลื่อนเมาส์ไปที่ลิงค์แทนที่จะคลิกที่มันและเพื่อให้ป๊อปโอเวอร์หายไปเมื่อพวกเขาย้ายออกไป เอกสารบอกว่าเป็นไปได้โดยใช้ data data หรือ jquery ฉันค่อนข้างจะทำมันด้วย jquery เนื่องจากฉันมีป๊อปอัปหลายแห่ง

4
การสูญเสียขอบเขตเมื่อใช้ ng-include
ฉันมีเส้นทางโมดูลนี้: var mainModule = angular.module('lpConnect', []). config(['$routeProvider', function ($routeProvider) { $routeProvider. when('/home', {template:'views/home.html', controller:HomeCtrl}). when('/admin', {template:'views/admin.html', controller:AdminCtrl}). otherwise({redirectTo:'/connect'}); }]); โฮม HTML: <div ng-include src="views.partial1"></div> partial1 HTML: <form ng-submit="addLine()"> <input type="text" ng-model="lineText" size="30" placeholder="Type your message here"> </form> HomeCtrl: function HomeCtrl($scope, $location, $window, $http, Common) { ... $scope.views = { partial1:"views/partial1.html" …

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