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

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

6
Inline Javascript (ใน HTML) ทำงานอย่างไร
ฉันรู้ว่านี่เป็นการปฏิบัติที่ไม่ดี อย่าเขียนโค้ดแบบนี้ถ้าเป็นไปได้ แน่นอนว่าเรามักจะพบว่าตัวเองอยู่ในสถานการณ์ที่ตัวอย่าง Javascript แบบอินไลน์ที่ชาญฉลาดสามารถแก้ไขปัญหาได้อย่างรวดเร็ว ฉันกำลังติดตามคำถามนี้เพื่อความเข้าใจอย่างถ่องแท้ว่าเกิดอะไรขึ้น (และข้อผิดพลาดที่อาจเกิดขึ้น) เมื่อมีการเขียนสิ่งนี้: <a href="#" onclick="alert('Hi')">Click Me</a> เท่าที่ฉันสามารถบอกได้ว่านี่เป็นหน้าที่เหมือนกับ <script type="text/javascript"> $(function(){ // I use jQuery in this example document.getElementById('click_me').onclick = function () { alert('Hi'); }; }); </script> <a href="#" id="click_me">Click Me</a> การสรุปจากสิ่งนี้ดูเหมือนว่าสตริงที่กำหนดให้กับแอตทริบิวต์onclickจะถูกแทรกภายในฟังก์ชันที่ไม่ระบุตัวตนซึ่งกำหนดให้กับตัวจัดการการคลิกขององค์ประกอบ เป็นเช่นนั้นจริงหรือ? เพราะฉันกำลังเริ่มทำสิ่งนี้: <a href="#" onclick="$(this).next().fadeIn(); return false;">Display my next sibling</a> <!-- Return false …
129 javascript  html 

7
โมดูล define () ที่ไม่ระบุชื่อไม่ตรงกัน
ฉันได้รับข้อผิดพลาดนี้เมื่อฉันเรียกดูเว็บแอปเป็นครั้งแรก (โดยปกติจะอยู่ในเบราว์เซอร์ที่ปิดการใช้งานแคช) ข้อผิดพลาด: ไม่ตรงกันไม่ระบุชื่อโมดูล define (): function (ต้องใช้) { HTML : <html> . . . <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <script> var require = { urlArgs: "v=0.4.1.32" }; </script> <script data-main="assets/js/main" src="assets/js/libs/require.js"></script> <script src="assets/js/ace/ace.js?v=0.4.1.32"></script> </body> </html> JS : $(function () { define(function (require) { // do something }); }); ใครทราบแน่ชัดว่าข้อผิดพลาดนี้หมายถึงอะไรและเหตุใดจึงเกิดขึ้น ซอร์สไฟล์การอภิปรายสั้น ๆเกี่ยวกับมันในหน้าปัญหา github

17
วิธีการนำเข้า jquery โดยใช้ไวยากรณ์ ES6
ฉันกำลังเขียนแอพใหม่โดยใช้ES6ไวยากรณ์(JavaScript) ผ่านทbabelรานสไพเลอร์และpreset-es2015ปลั๊กอินรวมถึงsemantic-uiสไตล์ index.js import * as stylesheet from '../assets/styles/app.scss'; import * as jquery2 from '../dist/scripts/jquery.min'; import * as jquery3 from '../node_modules/jquery/dist/jquery.min'; console.log($('my-app')); index.html <!DOCTYPE html> <html lang="fr"> <head> <body> <script src="dist/app.js"></script> </body> </html> โครงสร้างโครงการ . ├── app/ │ ├── index.js ├── assets/ ├── dist/ │ ├── scripts/ │ │ ├── …

11
รับความกว้างของอุปกรณ์ในจาวาสคริปต์
มีวิธีรับความกว้างอุปกรณ์ของผู้ใช้ซึ่งต่างจากความกว้างของวิวพอร์ตโดยใช้จาวาสคริปต์หรือไม่ แบบสอบถามสื่อ CSS เสนอสิ่งนี้อย่างที่ฉันพูดได้ @media screen and (max-width:640px) { /* ... */ } และ @media screen and (max-device-width:960px) { /* ... */ } สิ่งนี้มีประโยชน์หากฉันกำหนดเป้าหมายสมาร์ทโฟนในแนวนอน ตัวอย่างเช่นบน iOS การประกาศว่า max-width:640pxจะกำหนดเป้าหมายทั้งโหมดแนวนอนและแนวตั้งแม้ใน iPhone 4 นี่ไม่ใช่กรณีสำหรับ Android เท่าที่ฉันสามารถบอกได้ดังนั้นการใช้ความกว้างของอุปกรณ์ในอินสแตนซ์นี้จะกำหนดเป้าหมายทั้งสองทิศทางได้สำเร็จ โดยไม่กำหนดเป้าหมายอุปกรณ์เดสก์ท็อป อย่างไรก็ตามหากฉันเรียกใช้การรวมจาวาสคริปต์ตามความกว้างของอุปกรณ์ดูเหมือนว่าฉันจะถูก จำกัด ให้ทดสอบความกว้างของวิวพอร์ตซึ่งหมายถึงการทดสอบเพิ่มเติมดังต่อไปนี้ if ($(window).width() <= 960 && $(window).height <= 640) { /* ... */ } …

7
Uncaught TypeError: (ค่ากลาง) (…) ไม่ใช่ฟังก์ชัน
ทุกอย่างทำงานได้ดีเมื่อฉันเขียนตรรกะ js ในการปิดเป็นไฟล์ js เดียวดังนี้: (function(win){ //main logic here win.expose1 = .... win.expose2 = .... })(window) แต่เมื่อฉันพยายามแทรกฟังก์ชันทางเลือกการบันทึกก่อนการปิดนั้นในไฟล์ js เดียวกัน window.Glog = function(msg){ console.log(msg) } // this was added before the main closure. (function(win){ //the former closure that contains the main javascript logic; })(window) มันบ่นว่ามี TypeError: Uncaught TypeError: (intermediate value)(...) is …

3
อาร์กิวเมนต์ของฟังก์ชันปลายเปิดด้วย TypeScript
IMO หนึ่งในข้อกังวลหลักของภาษาTypeScriptคือการสนับสนุนรหัสวานิลลา JavaScript ที่มีอยู่ นี่คือความประทับใจที่ฉันได้เห็นในแวบแรก ดูฟังก์ชัน JavaScript ต่อไปนี้ซึ่งใช้ได้อย่างสมบูรณ์แบบ: หมายเหตุ: ฉันไม่ได้บอกว่าฉันชอบแนวทางนี้ ฉันแค่บอกว่านี่เป็นรหัส JavaScript ที่ถูกต้อง function sum(numbers) { var agregatedNumber = 0; for(var i = 0; i < arguments.length; i++) { agregatedNumber += arguments[i]; } return agregatedNumber; } ดังนั้นเราจึงใช้ฟังก์ชันนี้ด้วยอาร์กิวเมนต์จำนวนเท่าใดก็ได้: console.log(sum(1, 5, 10, 15, 20)); อย่างไรก็ตามเมื่อฉันลองใช้TypeScript Playgroundมันให้ข้อผิดพลาดเวลาคอมไพล์ ฉันสมมติว่านี่เป็นข้อบกพร่อง สมมติว่าเราไม่มีปัญหาความเข้ากันได้ แล้วมีวิธีใดบ้างในการเขียนฟังก์ชันประเภทนี้ด้วยอาร์กิวเมนต์ปลายเปิด? เช่นparamsคุณสมบัติใน C #?

6
เป็นไปได้ไหมที่จะซ่อนเคอร์เซอร์ในหน้าเว็บโดยใช้ CSS หรือ Javascript
ฉันต้องการซ่อนเคอร์เซอร์เมื่อแสดงหน้าเว็บที่มีไว้เพื่อแสดงข้อมูลในโถงอาคาร ไม่จำเป็นต้องโต้ตอบเลย ฉันลองใช้คุณสมบัติเคอร์เซอร์และรูปภาพเคอร์เซอร์แบบโปร่งใส แต่ไม่สามารถใช้งานได้ มีใครรู้บ้างว่าสามารถทำได้? ฉันคิดว่านี่อาจเป็นภัยคุกคามด้านความปลอดภัยสำหรับผู้ใช้ที่ไม่สามารถรู้ได้ว่าเขากำลังคลิกที่ใดดังนั้นฉันจึงไม่ค่อยมองโลกในแง่ดี ... ขอบคุณ!
129 javascript  html  css 

18
Javascript Array of Functions
var array_of_functions = [ first_function('a string'), second_function('a string'), third_function('a string'), forth_function('a string') ] array_of_functions[0]; ไม่ทำงานตามที่ตั้งใจไว้เนื่องจากแต่ละฟังก์ชันในอาร์เรย์ถูกเรียกใช้งานเมื่อสร้างอาร์เรย์ อะไรคือวิธีที่เหมาะสมในการเรียกใช้ฟังก์ชันใด ๆ ในอาร์เรย์โดยทำ: array_of_functions[0]; // or, array_of_functions[1] etc. ขอบคุณ!


6
โมดูลนำเข้า typescript es6“ ไฟล์ไม่ใช่ข้อผิดพลาดของโมดูล”
ฉันใช้ typescript 1.6 กับไวยากรณ์โมดูล es6 ไฟล์ของฉันคือ: test.ts: module App { export class SomeClass { getName(): string { return 'name'; } } } main.ts: import App from './test'; var a = new App.SomeClass(); เมื่อฉันพยายามรวบรวมmain.tsไฟล์ฉันได้รับข้อผิดพลาดนี้: ข้อผิดพลาด TS2306: ไฟล์ 'test.ts' ไม่ใช่โมดูล ฉันจะทำมันให้สำเร็จได้อย่างไร?


9
jQuery รับค่าของช่องทำเครื่องหมายที่เลือกไว้ในอาร์เรย์
ฉันกำลังพยายามรับค่าของช่องทำเครื่องหมายทั้งหมดที่ตรวจสอบและจัดเก็บไว้ในอาร์เรย์ นี่คือรหัสของฉันจนถึงตอนนี้: $("#merge_button").click(function(event){ event.preventDefault(); var searchIDs = $("#find-table input:checkbox:checked").map(function(){ return $(this).val(); }); console.log(searchIDs); }); อย่างไรก็ตามผลลัพธ์นี้มากกว่าที่ฉันต้องการ ฉันไม่เพียง แต่ได้รับค่า แต่สิ่งอื่น ๆ ที่ฉันไม่ต้องการ ["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002", prevObject: jQuery.fn.jQuery.init [3], context: document, jquery: "1.9.1", constructor function: .. ฉันต้องการเพียง ID (3 รายการแรกในกรณีนี้) ด้วยการใช้$.eachและผลักดันค่าไปยังอาร์เรย์ฉันจะได้ผลลัพธ์ที่ต้องการ: $("#find-table input:checkbox:checked").each(function(){ myArray.push($(this).val()); }) ["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002"] อย่างไรก็ตามฉันต้องการใช้$.mapเนื่องจากมันช่วยฉันประหยัดบรรทัดและสวยกว่า ขอบคุณ
129 javascript  jquery 

7
คอนโซล JavaScript ของ Chrome ขี้เกียจเกี่ยวกับการประเมินอาร์เรย์หรือไม่?
ฉันจะเริ่มต้นด้วยรหัส: var s = ["hi"]; console.log(s); s[0] = "bye"; console.log(s); ง่ายใช่มั้ย? เพื่อตอบสนองต่อสิ่งนี้ Firebug กล่าวว่า: ["hi"] ["bye"] ยอดเยี่ยม แต่คอนโซล JavaScript ของ Chrome (7.0.517.41 เบต้า) บอกว่า: ["bye"] ["bye"] ฉันทำอะไรผิดพลาดหรือว่าคอนโซล JavaScript ของ Chrome ขี้เกียจเป็นพิเศษในการประเมินอาร์เรย์ของฉัน

5
วิธีใช้ jQuery ในส่วนขยาย Chrome
ฉันกำลังเขียนนามสกุลโครเมี่ยม และฉันต้องการใช้jQueryในส่วนขยายของฉัน ฉันไม่ได้ใช้พื้นหลังหน้าเพียงแค่พื้นหลังสคริปต์ นี่คือไฟล์ของฉัน: manifest.json { "manifest_version": 2, "name": "Extension name", "description": "This extension does something,", "version": "0.1", "permissions": [ "activeTab" ], "browser_action": { "default_icon": "images/icon_128.png" }, "background": { "scripts": ["background.js"], "persistent": false }, "icons": { "16": "images/icon_16.png", "48": "images/icon_48.png", "128": "images/icon_128.png" } } ของฉัน background.jsไฟล์เพิ่งเรียกใช้ไฟล์อื่นชื่อwork.js // Respond to the …

4
จะหยุด JavaScript สำหรับการวนซ้ำได้อย่างไร
ฉันใช้ JavaScript นี้เพื่อวนซ้ำผ่านอาร์เรย์และค้นหาองค์ประกอบอาร์เรย์ที่ตรงกัน: var remSize = [], szString, remData, remIndex, i; for (i = 0; i < remSize.length; i++) { // I'm looking for the index i, when the condition is true remSize[i].size == remData.size ? remIndex = i : remIndex = -1; } อาร์เรย์มีเหล่านี้ ["34", "36", "38"...]"ขนาด": remData.size คือ …

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