ජාවාස්ක්‍රිප්ට් හි බහු රේඛා නිර්මාණය කිරීම


2624

මට පහත කේතය රූබි හි ඇත. මට මෙම කේතය ජාවාස්ක්‍රිප්ට් බවට පරිවර්තනය කිරීමට අවශ්‍යයි. JS හි සමාන කේතය කුමක්ද?

text = <<"HERE"
This
Is
A
Multiline
String
HERE


එකම දේ සාක්ෂාත් කර ගැනීම සඳහා විවිධ ක්‍රමවලින් මෙය පරීක්ෂා කරන්න. මම එක් එක් ක්‍රමයේ ක්‍රියාකාරිත්වය එකතු කර ඇත්තෙමි stackoverflow.com/a/23867090/848841
විග්නේෂ් සුබ්‍රමනියම්

Answers:


3344

යාවත්කාලීන කිරීම:

ECMAScript 6 (ES6) විසින් අළුත් වචනාර්ථයක් හඳුන්වා දෙයි, එනම් අච්චු සාහිත්‍යය . ඒවාට බොහෝ විශේෂාංග ඇත, අනෙක් ඒවා අතර විචල්‍ය අන්තර් මැදිහත්වීමක් ඇත, නමුත් වඩාත්ම වැදගත් දෙය නම් මෙම ප්‍රශ්නය සඳහා ඒවා බහු රේඛීය විය හැකිය.

අච්චුවක් වචනාර්ථයෙන් බැක්ටික්ස් මගින් වෙන් කරනු ලැබේ :

var html = `
  <div>
    <span>Some HTML here</span>
  </div>
`;

(සටහන: මම නූල් වල HTML භාවිතා කිරීමට යෝජනා නොකරමි)

බ්‍රව්සර් සහාය හරි , නමුත් ඔබට වඩාත් අනුකූල වීමට ට්‍රාන්ස්පෝලර් භාවිතා කළ හැකිය.


මුල් ES5 පිළිතුර:

ජාවාස්ක්‍රිප්ට් සතුව මෙහි ලේඛන සින්ටැක්ස් නොමැත. කෙසේ වෙතත්, ඔබට වචනයේ පරිසමාප්ත අර්ථයෙන්ම ගැලවිය හැකිය:

"foo \
bar"

231
අවවාද කරන්න: සමහර බ්‍රව්සර් අඛණ්ඩව නව රේඛා ඇතුළත් කරනු ඇත, සමහර ඒවා නොකෙරේ.
staticsan

35
විෂුවල් ස්ටුඩියෝ 2010 මෙම වාක්‍ය ඛණ්ඩයෙන් ද ව්‍යාකූල වී ඇති බව පෙනේ.
jcollum

47
@Nate එය නිරූපනය කොට ඇති ECMA-262 5 වන සංස්කරණය කොටස 7.8.4 සහ ඊනියා LineContinuation : "මාර්ගයක් ටර්මිනේටර් චරිතය කොටසක් ලෙස හැර, වැලක් ප්රායෝගික දී පෙනී සිටීමට නොහැකි LineContinuation හිස් චරිත අනුපිළිවෙල නිෂ්පාදනය කිරීමට හේතුව වෙත නිවැරදි ක්රමය. රේඛීය ටර්මිනේටර් අක්‍ෂරය වචනාර්ථයෙන් නූල් අගයේ කොටසක් විය යුතුය \ n හෝ 000 u000A වැනි ගැලවීමේ අනුක්‍රමයක් භාවිතා කිරීම. ”
සමහර

16
බ්‍රව්සර් නොගැලපෙන ලෙස සලකන විට ඔබ මෙය කරන්නේ මන්දැයි මට නොපෙනේ. "පේළිය 1 \ n" + "පේළිය 2" බහු පේළි හරහා කියවිය හැකි අතර ඔබට ස්ථාවර හැසිරීම සහතික කෙරේ.
සැම්ස්ටෙෆන්ස්

11
"බ්‍රව්සර් සහාය හරි" ... IE11 සහාය නොදක්වයි - හරි නැත
ටොම් ඇන්ඩ්‍රාසෙක්

1321

ES6 යාවත්කාලීන කිරීම:

පළමු පිළිතුරෙහි සඳහන් වන පරිදි, ES6 / බාබෙල් සමඟ, ඔබට දැන් බැක්ටික්ස් භාවිතා කිරීමෙන් බහු රේඛා නූල් සෑදිය හැකිය:

const htmlString = `Say hello to 
multi-line
strings!`;

ඉන්ටර්පොලේටින් විචල්යයන් යනු ජනප්‍රිය නව අංගයක් වන අතර එය බැක්-ටික් වෙන් කරන ලද නූල් සමඟ පැමිණේ:

const htmlString = `${user.name} liked your post about strings`;

මෙය හුදෙක් සංක්ෂිප්තභාවයට පරිවර්තනය වේ:

user.name + ' liked your post about strings'

මුල් ES5 පිළිතුර:

ගූගල් හි ජාවාස්ක්‍රිප්ට් විලාසිතාවේ මාර්ගෝපදේශය නව රේඛාවලින් ගැලවීම වෙනුවට නූල් සම්මුතියක් භාවිතා කිරීමට නිර්දේශ කරයි:

මෙය නොකරන්න:

var myString = 'A rather long string of English text, an error message \
                actually that just keeps going and going -- an error \
                message to make the Energizer bunny blush (right through \
                those Schwarzenegger shades)! Where was I? Oh yes, \
                you\'ve got an error and all the extraneous whitespace is \
                just gravy.  Have a nice day.';

එක් එක් පේළියේ ආරම්භයේ ඇති සුදු අවකාශය සම්පාදනය කරන වේලාවේදී ආරක්ෂිතව ඉවත් කළ නොහැක; කප්පාදුවෙන් පසු හිස් අවකාශය උපක්‍රමශීලී දෝෂ ඇති කරයි; බොහෝ ස්ක්‍රිප්ට් එන්ජින් මේ සඳහා සහය දක්වන අතර එය ECMAScript හි කොටසක් නොවේ.

ඒ වෙනුවට නූල් සම්මුතිය භාවිතා කරන්න:

var myString = 'A rather long string of English text, an error message ' +
               'actually that just keeps going and going -- an error ' +
               'message to make the Energizer bunny blush (right through ' +
               'those Schwarzenegger shades)! Where was I? Oh yes, ' +
               'you\'ve got an error and all the extraneous whitespace is ' +
               'just gravy.  Have a nice day.';

20
ගූගල්ගේ නිර්දේශය මට තේරෙන්නේ නැත. අතිශය පැරණි ඒවා හැර අනෙකුත් සියලුම බ්‍රව්සර් නව රේඛීය ප්‍රවේශය අනුගමනය කරන බැක්ස්ලෑෂ් සඳහා සහය දක්වන අතර පසුගාමී අනුකූලතාව සඳහා අනාගතයේදී එය දිගටම කරගෙන යනු ඇත. ඔබට එය වළක්වා ගත යුතු එකම අවස්ථාව වන්නේ එක් එක් පේළියේ අවසානයේ එක් නව රේඛාවක් (හෝ නව රේඛාවක්) එකතු කර ඇති බවට ඔබට සහතික වීමට අවශ්‍ය නම් (පිළිගත් පිළිතුර පිළිබඳ මගේ අදහස ද බලන්න).
මැට් බ්‍රවුන්

6
සැකිල්ල නූල් IE11, ෆයර්ෆොක්ස් 31, ක්රෝම් 35, හෝ සෆාරි 7. බලන්න තුළ සහය නොමැති බව සටහන kangax.github.io/compat-table/es6
EricP

29
Att හේතු මත වැදගත්කම අනුව ගූගල් නිර්දේශය දැනටමත් ඔවුන් විසින් ලේඛනගත කර ඇත: (1) එක් එක් පේළියේ ආරම්භයේ ඇති සුදු අවකාශය [නිදසුනක් ලෙස, ඔබේ නූලෙහි එම හිස් අවකාශය ඔබට අවශ්‍ය නැති නමුත් එය කේතයේ වඩා හොඳ පෙනුමක් ඇත ] (2) කප්පාදුවෙන් පසු ඇති අවකාශය ව්‍යාකූල දෝෂ වලට හේතු වේ [ඔබ \ `\` වෙනුවට පේළියක් අවසන් කළහොත් එය දැකීම අපහසුය] සහ (3) බොහෝ ස්ක්‍රිප්ට් එන්ජින් මෙයට සහය දෙන අතර එය ECMAScript හි කොටසක් නොවේ [එනම් ඇයි ප්‍රමිතියෙන් තොර විශේෂාංග භාවිතා කරනවාද?] එය ශෛලමය මාර්ගෝපදේශයක් බව මතක තබා ගන්න, එය කේත කියවීම පහසු කිරීම + නඩත්තු කිරීම + නිදොස් කිරීම ය: “එය ක්‍රියා කරයි” පමණක් නොවේ.
ශ්‍රීවාසර්

1
පුදුමයට කරුණක් නම්, මේ වසර ගණනාවකට පසුවත්, මේ සමඟ යාමට හොඳම / ආරක්ෂිත / වඩාත්ම අනුකූල ක්‍රමය වන්නේ නූල් සම්මුතියයි. අච්චු වචනාර්ථය (ඉහත පිළිතුර) IE හි වැඩ නොකරන අතර රේඛා වලින් ගැලවීම ඔබ ඉක්මනින් කනගාටු වන අවුල් ජාලයක් පමණි
Tiago Duarte

1
ඇන්ඩ්‍රොයිඩ් හි පැරණි අනුවාදයන් බැක්ටික්ස් සඳහා සහය නොදක්වන අසීරු ආකාරය සොයාගෙන ඇත, එබැවින් ඔබට වෙබ් දර්ශනය භාවිතා කරමින් ඇන්ඩ්‍රොයිඩ් යෙදුමක් තිබේ නම් ඔබේ බැක්ටික්ස් ඔබගේ යෙදුම ක්‍රියාත්මක නොවීමට හේතු වේ!
මයිකල් උණ

686

රටාව text = <<"HERE" This Is A Multiline String HEREjs හි නොමැත (මගේ හොඳ පැරණි පර්ල් දිනවල එය භාවිතා කළ බව මට මතකයි).

සංකීර්ණ හෝ දිගු බහු නූල් සමඟ අධීක්ෂණය තබා ගැනීම සඳහා මම සමහර විට අරාව රටාවක් භාවිතා කරමි:

var myString = 
   ['<div id="someId">',
    'some content<br />',
    '<a href="#someRef">someRefTxt</a>',
    '</div>'
   ].join('\n');

හෝ නිර්නාමික දැනටමත් පෙන්වා ඇති රටාව (නව රේඛාවෙන් පැන යන්න), එය ඔබේ කේතයේ කැත අවහිරයක් විය හැකිය:

    var myString = 
       '<div id="someId"> \
some content<br /> \
<a href="#someRef">someRefTxt</a> \
</div>';

මෙන්න තවත් අමුතු නමුත් වැඩ කරන 'උපක්‍රමය' 1 :

var myString = (function () {/*
   <div id="someId">
     some content<br />
     <a href="#someRef">someRefTxt</a>
    </div>        
*/}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1];

බාහිර සංස්කරණය: jsfiddle

ES20xx අච්චු නූල් භාවිතා කරමින් බහු පේළි හරහා විහිදෙන නූල් සඳහා සහය දක්වයි :

let str = `This is a text
    with multiple lines.
    Escapes are interpreted,
    \n is a newline.`;
let str = String.raw`This is a text
    with multiple lines.
    Escapes are not interpreted,
    \n is not a newline.`;

1 සටහන: ඔබේ කේතය අවම කිරීමෙන් / අපැහැදිලි කිරීමෙන් පසු මෙය නැති වේ


34
කරුණාකර අරාව රටාව භාවිතා නොකරන්න. බොහෝ අවස්ථාවන්හීදී එය පැරණි-පැරණි නූල් සම්මුතියට වඩා මන්දගාමී වනු ඇත.
BMiner

73
අරාව රටාව වඩාත් කියවිය හැකි අතර යෙදුමක් සඳහා කාර්ය සාධනය නැතිවීම බොහෝ විට නොසැලකිලිමත් වේ. එම පරිපූර්ණ පරීක්ෂණයෙන් පෙන්නුම් කරන පරිදි, IE7 ට පවා තත්පරයට දස දහස් ගණනක් මෙහෙයුම් කළ හැකිය.
බෙන්ජමින් ඇට්කින්

19
+1 සියලු බ්‍රව්සර්වල එකම ආකාරයකින් ක්‍රියා කරනවා පමණක් නොව අනාගතයට සාක්ෂි සපයන අලංකාර විකල්පයක් සඳහා.
පවෙල්

26
OoKooiInc ඔබේ පරීක්ෂණ ආරම්භ වන්නේ දැනටමත් නිර්මාණය කර ඇති අරාවෙනි, එමඟින් ප්‍රති .ල මඟ හැරේ. ඔබ අරාව ආරම්භ කිරීම එකතු කළහොත්, සෘජු සමෝච්ඡය වේගවත් වේ jsperf.com/string-concat-without-sringbuilder/7 බලන්න stackoverflow.com/questions/51185/… නව රේඛා සඳහා උපක්‍රමයක් ලෙස, එය හරි විය හැකි නමුත් එය අනිවාර්යයෙන්ම කළ යුතු ප්‍රමාණයට වඩා වැඩ කිරීම
ජුවාන් මෙන්ඩිස්

9
@BMiner: 1) “නොමේරූ ප්‍රශස්තකරණය සියලු නපුරේ මුලයි” - ඩොනල්ඩ් නුත්, සහ 2) 'කියවීමේ හැකියාව' නරඹන්නාගේ ඇසෙහි ඇත
පෝල් බෙනට්

348

ඔබ හැකි පිරිසිදු JavaScript දී multiline නූල් තියෙනවා.

මෙම ක්‍රමය පදනම් වී ඇත්තේ ශ්‍රිත අනුක්‍රමිකකරණය මත වන අතර එය ක්‍රියාත්මක කිරීම මත රඳා පවතී . එය බොහෝ බ්‍රව්සර් වල ක්‍රියා කරයි (පහත බලන්න), නමුත් අනාගතයේ දී එය තවමත් ක්‍රියාත්මක වනු ඇති බවට සහතිකයක් නැත, එබැවින් එය මත විශ්වාසය නොතබන්න.

පහත ශ්‍රිතය භාවිතා කිරීම:

function hereDoc(f) {
  return f.toString().
      replace(/^[^\/]+\/\*!?/, '').
      replace(/\*\/[^\/]+$/, '');
}

ඔබට මෙවැනි ලිපි ලේඛන තිබිය හැකිය:

var tennysonQuote = hereDoc(function() {/*!
  Theirs not to make reply,
  Theirs not to reason why,
  Theirs but to do and die
*/});

පහත දැක්වෙන බ්‍රව්සර් තුළ මෙම ක්‍රමය සාර්ථකව අත්හදා බලා ඇත (සඳහන් කර නැත = පරීක්ෂා කර නොමැත):

  • IE 4 - 10
  • ඔපෙරා 9.50 - 12 (9- තුළ නොවේ)
  • සෆාරි 4 - 6 (3- හි නොවේ)
  • Chrome 1 - 45
  • ෆයර්ෆොක්ස් 17 - 21 ( 16- තුළ නොවේ )
  • රෙකොන්ක් 0.7.0 - 0.8.0
  • Konqueror 4.7.4 හි සහය නොදක්වයි

ඔබේ මිනිෆයර් සමඟ ප්‍රවේශම් වන්න. එය අදහස් ඉවත් කිරීමට නැඹුරු වේ. සඳහා YUI කොම්ප්රෙෂර් , ආරම්භ වන අදහස් /*!(මම භාවිතා කරන එක් වැනි) එලෙස ම ආරක්ෂා වේ.

මම හිතන්නේ සැබෑ විසඳුමක් වනුයේ කෝපි ස්ක්‍රිප්ට් භාවිතා කිරීමයි .

ES6 යාවත්කාලීන කිරීම: ඔබට විවරණයක් සහිත ශ්‍රිතයක් නිර්මාණය කර විවරණය මත ස්ට්‍රිං වෙත ධාවනය කරනවා වෙනුවට බැක්ටික් භාවිතා කළ හැකිය. රීජෙක්ස් යාවත්කාලීන කිරීමට අවශ්‍ය වන්නේ තීරු අවකාශයට පමණි. මෙය සිදු කිරීම සඳහා ඔබට නූල් මූලාකෘති ක්‍රමයක් ද තිබිය හැකිය:

let foo = `
  bar loves cake
  baz loves beer
  beer loves people
`.removeIndentation()

එය සිසිල් වනු ඇත. කවුරුහරි මෙය ලිවිය යුතුය .removeIndentation string method ...;)


232
කුමන!? බහුවිධ විවරණයක් බහු රේඛාවක් බවට පත් කිරීම සඳහා ශ්‍රිතයක් නිර්මාණය කිරීම සහ විසංයෝජනය කිරීම? දැන් ඒක කැතයි.
fforw

4
jsfiddle.net/fqpwf ක්‍රෝම් 13 සහ අයිඊ 8/9 හි ක්‍රියා කරයි, නමුත් එෆ්එෆ් 6 නොවේ. මම එය කීමට අකමැතියි, නමුත් මම එයට කැමතියි, එය එක් එක් බ්‍රව්සරයේ හිතාමතාම අංගයක් විය හැකි නම් (එය අතුරුදහන් නොවන පරිදි), මම එය භාවිතා කරමි.
ජේසන් ක්ලෙබන්

2
ous uosɐſ: එය චේතනාන්විත වීමට නම්, එය පිරිවිතරයේ තිබිය යුතුය; හෝ එතරම් පුළුල් ලෙස භාවිතා කර ඇති අතර, බ්‍රවුසර නිෂ්පාදකයින්ට මෙම "අහම්බෙන්" විශේෂාංගය ඉවත් කිරීමට අවශ්‍ය නොවනු ඇත. අත්හදා බැලීම් වලට ස්තූතියි ... කෝපි පිටපතක් උත්සාහ කරන්න.
ජෝර්ඩෝ

1
a. .)
Lodewijk

2
අතිශයින්ම පහසුය. මම එය (ජැස්මින්) ඒකක පරීක්ෂණ සඳහා භාවිතා කරමි, නමුත් නිෂ්පාදන කේතය සඳහා එය මග හැරේ.
ජේසන්

206

ඔබට මෙය කරන්න පුළුවන්...

var string = 'This is\n' +
'a multiline\n' + 
'string';

පළමු උදාහරණය විශිෂ්ට හා සරල ය. \ ප්‍රවේශයට වඩා බොහෝ සෙයින් හොඳ බැවින් බ්‍රව්සරය බැක්ස්ලෑෂ් ගැලවීමේ චරිතයක් ලෙස සහ බහු රේඛා චරිතයක් ලෙස හැසිරවිය හැකි ආකාරය මට විශ්වාස නැත.
මැට් කේ


e4x.js යනු අනාගතය සඳහා හොඳ විසඳුමක් වනු ඇත
පෝල් ස්වීට්

139

මම බහු රේඛා නූලක මෙම ජිමී රිග්ඩ් ක්‍රමය ඉදිරිපත් කළෙමි. ශ්‍රිතයක් නූලක් බවට පරිවර්තනය කිරීම මඟින් ශ්‍රිතය තුළ ඇති ඕනෑම අදහස් දැක්වීමක් ලබා දෙන බැවින් ඔබට බහු විවරණයක් / ** / භාවිතා කරමින් අදහස් ඔබේ නූල ලෙස භාවිතා කළ හැකිය. ඔබට කෙළවර කපා දැමිය යුතු අතර ඔබේ නූලද ඇත.

var myString = function(){/*
    This is some
    awesome multi-lined
    string using a comment 
    inside a function 
    returned as a string.
    Enjoy the jimmy rigged code.
*/}.toString().slice(14,-3)

alert(myString)

37
මෙය නියත වශයෙන්ම භයානක ය. මම එයට කැමතියි (ඔබට රිජෙක්ස් තරගයක් කිරීමට අවශ්‍ය වුවද සුදු අවකාශය කෙතරම් නිවැරදිදැයි මට විශ්වාස නැත toString().
කෙවින් කොක්ස්

මෙම විසඳුම ෆයර්ෆොක්ස් හි වැඩ කරන බවක් නොපෙනේ, සමහර විට එය බ්‍රව්සරයේ ආරක්ෂක අංගයක් ද? සංස්කරණය කරන්න: කණගාටු නොවන්න, එය ක්‍රියාත්මක වන්නේ ෆයර්ෆොක්ස් අනුවාදය 16 සඳහා පමණි.
බිල් මෘදුකාංග ඉංජිනේරු

45
අදහස් ඉවත් කරන මිනිෆයර් ගැනද පරිස්සම් වන්න:: D
jondavidjohn

3
මේ නිසා අපට හොඳ දේවල් තිබිය නොහැක.
ඩැනිලෝ එම්. ඔලිවෙයිරා

4
ඔබට ජාවාස්ක්‍රිප්ට් භූමියේ අමුතු දේවල් කළ හැකිය. සෑම අවංකකමකින් වුවද, ඔබ මෙය කිසි විටෙකත් භාවිතා නොකළ යුතුය.
ලූක්

88

මම මෙය නොදැකීම ගැන මට පුදුමයි, මන්ද එය මා පරීක්ෂා කළ සෑම තැනකම ක්‍රියාත්මක වන අතර උදා. සැකිලි සඳහා එය ඉතා ප්‍රයෝජනවත් වේ:

<script type="bogus" id="multi">
    My
    multiline
    string
</script>
<script>
    alert($('#multi').html());
</script>

HTML ඇති නමුත් එය ක්‍රියාත්මක නොවන පරිසරයක් ගැන කිසිවෙකු දන්නවාද?


23
ඕනෑම තැනක ඔබේ නූල් වෙන් වෙන් හා දුරස්ථ ස්ක්‍රිප්ට් අංගවලට දැමීමට ඔබට අවශ්‍ය නැත.
ලොඩ්විජ්

9
වලංගු විරෝධයක්! එය පරිපූර්ණ නොවේ. නමුත් සැකිලි සඳහා, එම වෙන්වීම හරි පමණක් නොව, සමහර විට දිරිමත් කරනු ලැබේ.
පීටර් වී. මාර්ච්

1
අක්ෂර 80/120 ට වැඩි සෑම දෙයක්ම බහු රේඛා වලට බෙදීමට මම කැමැත්තෙමි, එය සැකිලි වලට වඩා වැඩි යැයි මම බිය වෙමි. මම දැන් කැමතියි 'line1' + 'line2' syntax. එය ද වේගවත්ම වේ (මෙය සැබවින්ම විශාල පෙළ සඳහා ප්‍රතිවිරුද්ධ විය හැකි වුවද). එය කදිම උපක්‍රමයක්.
ලොඩ්විජ්

27
ඇත්ත වශයෙන්ම, මෙය HTML ජාවාස්ක්‍රිප්ට් නොවේ: - /
සීපීඑල්

5
කෙසේ වෙතත්, ජාවාස්ක්‍රිප්ට් හි බහු රේඛාවක් ලබා ගැනීමේ කාර්යය මේ ආකාරයෙන් කළ හැකිය
ඩේවි ෆියාමෙන්ගි

52

මම මෙය විසඳුවේ div එකක් ප්‍රතිදානය කිරීමෙන්, එය සඟවා තැබීමෙන් සහ මට අවශ්‍ය වූ විට div id එක jQuery මගින් ඇමතීමෙන්.

උදා

<div id="UniqueID" style="display:none;">
     Strings
     On
     Multiple
     Lines
     Here
</div>

එවිට මට නූල ලබා ගැනීමට අවශ්‍ය වූ විට, මම පහත දැක්වෙන jQuery භාවිතා කරමි:

$('#UniqueID').html();

එමඟින් මගේ පෙළ බහු පේළි වලින් ලබා දෙයි. මම කතා කළොත්

alert($('#UniqueID').html());

මම ගත්තා:

රූප විස්තරය මෙහි ඇතුළත් කරන්න


2
මේ සඳහා ස්තූතියි! මගේ ගැටළුව විසඳන එකම පිළිතුර එයයි, එයට පෙර සහ කේතන ක්‍රමයට කිසිදු අවස්ථාවක් නොමැතිව කේතයට සෘජුවම ඇතුළත් කර ඇති තනි සහ ද්විත්ව උපුටා දැක්වීම් අඩංගු විය හැකි නොදන්නා නූල් ඇතුළත් වේ. (එය පැමිණෙන්නේ ජේඑස් නිර්මාණය කරන සැකිලි භාෂාවකිනි - තවමත් විශ්වාසදායක මූලාශ්‍රයකින් මිස ආකෘති ඉදිරිපත් කිරීමකින් නොවේ, එබැවින් එය මුළුමනින්ම විකෘති නොවේ).
ඔක්තෝබර්

ජාවා ස්ට්‍රිං එකකින් බහු-රේඛීය ජාවාස්ක්‍රිප්ට් ස්ට්‍රිං විචල්‍යයක් නිර්මාණය කිරීමට මට සැබවින්ම වැඩ කළ එකම ක්‍රමය මෙයයි.
ආරම්භක_

4
නූල HTML නම් කුමක් කළ යුතුද?
ඩෑන් ඩස්කල්ස්කු

4
(('# UniqueID'). අන්තර්ගතය ()
mplungjan

1
AcPacerier ගූගල් සහ වෙනත් වෙබ් අඩවි වලින් මා කියවා ඇති සෑම දෙයක්ම පවසන්නේ වර්තමානයේ ගූගල් දර්ශක display:noneඅන්තර්ගතයන් කරන බවයි, බොහෝ දුරට ජාවාස්ක්‍රිප්ට් විලාසිතාවේ ඉදිරිපස කෙළවරේ ජනප්‍රියතාවය නිසා විය හැකිය. .
ගේවින්

31

මෙය සාක්ෂාත් කර ගැනීම සඳහා විවිධ ක්‍රම තිබේ

1. කප්පාදු කිරීම

  var MultiLine=  '1\
    2\
    3\
    4\
    5\
    6\
    7\
    8\
    9';

2. නිතිපතා සම්මුතිය

var MultiLine = '1'
+'2'
+'3'
+'4'
+'5';

3. අරාව සංයුක්තයට සම්බන්ධ වන්න

var MultiLine = [
'1',
'2',
'3',
'4',
'5'
].join('');

කාර්ය සාධනය අනුව, ස්ලෑෂ් සමෝච්ඡය (පළමු එක) වේගවත්ම වේ.

කාර්ය සාධනය පිළිබඳ වැඩි විස්තර සඳහා මෙම පරීක්ෂණ අවස්ථාව බලන්න

යාවත්කාලීන කිරීම:

සමග ES2015 , අපි එහි සැකිල්ල නූල් ලක්ෂණය වාසිය ගත හැකි. එය සමඟ, අපට අවශ්‍ය වන්නේ බහු රේඛා නූල් සෑදීම සඳහා පසුපස කිනිතුල්ලන් භාවිතා කිරීමයි

උදාහරණයක්:

 `<h1>{{title}}</h1>
  <h2>{{hero.name}} details!</h2>
  <div><label>id: </label>{{hero.id}}</div>
  <div><label>name: </label>{{hero.name}}</div>
  `

11
මම හිතන්නේ ඔබ මේ වන විටත් වසර පහක් තිස්සේ පිටුවේ ඇති දේ නැවත යථා තත්ත්වයට පත් කර ඇති නමුත් වඩා පිරිසිදු ආකාරයකින්.
RandomInsano

රේඛා ආරම්භයේ දී අවකාශය කප්පාදු කිරීම ද ඇතුළත් නොවේ ද?
f.khantsis

29

ස්ක්‍රිප්ට් ටැග් භාවිතා කිරීම:

  • <script>...</script>ඔබේ බහු පෙළ පෙළ අඩංගු බ්ලොක් එකක් ටැගයට එක් කරන්න head;
  • ඔබේ බහු පෙළ පෙළ එලෙසම ලබා ගන්න ... (පෙළ කේතන ක්‍රමයට ප්‍රවේශම් වන්න: UTF-8, ASCII)

    <script>
    
        // pure javascript
        var text = document.getElementById("mySoapMessage").innerHTML ;
    
        // using JQuery's document ready for safety
        $(document).ready(function() {
    
            var text = $("#mySoapMessage").html(); 
    
        });
    
    </script>
    
    <script id="mySoapMessage" type="text/plain">
    
        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="...">
           <soapenv:Header/>
           <soapenv:Body>
              <typ:getConvocadosElement>
                 ...
              </typ:getConvocadosElement>
           </soapenv:Body>
        </soapenv:Envelope>
    
        <!-- this comment will be present on your string -->
        //uh-oh, javascript comments...  SOAP request will fail 
    
    
    </script>

මම හිතන්නේ මෙම උපාය පිරිසිදු හා බොහෝ දුරට භාවිතයට නොගත් එකක්. jsrender මෙය භාවිතා කරයි.
xdhmoore

මම මෙය අභ්‍යන්තර ටෙක්ස්ට් අයිසෝ අභ්‍යන්තර HTML සමඟ භාවිතා කරමි, නමුත් සුදු අවකාශය ආරක්ෂා වී ඇති බවට මා සහතික කරන්නේ කෙසේද?
ඩේවිඩ් නූල්ස්

ඔබ ඒවා භාවිතා කරන්නේ නම් අජැක්ස් විමසීම් ද කරන්න. ඔබේ ශීර්ෂයන් වෙනස් කිරීමට ඔබට උත්සාහ කළ හැකිය xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");JS හි අදහස් වැරදි ලෙස ටයිප් කිරීම හැර වෙනත් ගැටළු ඇති බව මට මතක නැත. ගැටළු නොමැති අවකාශ.
jpfreire

24

මම මෙම වාක්‍ය ඛණ්ඩයට හා අවිනිශ්චිතතාවයට කැමතියි:

string = 'my long string...\n'
       + 'continue here\n'
       + 'and here.';

(නමුත් ඇත්ත වශයෙන්ම බහු රේඛා ලෙස සැලකිය නොහැකිය)


3
ඊලඟ පේළියේ ප්‍රකාශය අඛණ්ඩව පවතින බව පැහැදිලි කිරීම සඳහා මම පෙර පේළියේ අවසානයේ '+' තැබීම හැර, මෙය භාවිතා කරමි. ඔබේ මාර්ගය ඉන්ඩෙන්ට්ස් වඩාත් ඒකාකාරව පෙළගස්වයි.
ෂෝන්

E සීන් මම මෙයද භාවිතා කරමි, එක් එක් නව පේළියේ ආරම්භයේ දී '+' තැබීමට මම කැමැත්තෙමි, අවසාන ';' නව රේඛාවකින්, cuz i එය වඩාත් 'නිවැරදි' බව සොයා ගත්තේය.
AgelessEssence

7
ආරම්භයේ දී + තැබීමෙන් කෙනෙකුට එම පේළියේ අනුපිළිවෙලෙහි පළමු / අවසාන පේළිය සංස්කරණය කිරීමේදී වෙනත් පේළි සංස්කරණය නොකර අදහස් දැක්වීමට ඉඩ ලබා දේ.
moliad

3
දෘශ්‍යමය වශයෙන් මා ඉදිරිපිට + + ට වඩා කැමැත්තක් දක්වයි.
ඩැනියෙල් සොකොලොව්ස්කි

18

එය අලංකාර කරන මෙම පුස්තකාලය ඇත:

https://github.com/sindresorhus/multiline

කලින්

var str = '' +
'<!doctype html>' +
'<html>' +
'   <body>' +
'       <h1>❤ unicorns</h1>' +
'   </body>' +
'</html>' +
'';

පසු

var str = multiline(function(){/*
<!doctype html>
<html>
    <body>
        <h1>❤ unicorns</h1>
    </body>
</html>
*/});

1
nodejsබ්රවුසරයේ භාවිතා කිරීමේදී මෙම සහාය ලැබිය යුතුය.
හියු ටැන්

3
Ue හියුයිටාන් ඩොක්ස් පවසන්නේ එය බ්‍රව්සරයේ ද ක්‍රියාත්මක වන බවයි. තේරුමක් ඇති - එය සාධාරණයි Function.prototype.String().
mikemaccana

ඔව්, නමුත් එය පැවසුවේ "එය බ්‍රව්සරයේ හොඳින් ක්‍රියාත්මක වන අතර, එය ප්‍රධාන වශයෙන් අදහස් කරන්නේ Node.js හි භාවිතා කිරීමටයි. ඔබේම අවදානමකට භාවිතා කරන්න. එය බ්‍රව්සරයේ හොඳින් ක්‍රියාත්මක වන අතරම, එය ප්‍රධාන වශයෙන් අදහස් කරන්නේ Node.js හි භාවිතය සඳහා ය. ඔබේම අවදානමකට. ” (නිකම්ම නිකම් එක්ස්ඩී)
හියු ටැන්

UeHueiTanYep මම ඒ කොටස කියෙව්වා. නමුත් Function.prototype.toString () තරමක් ස්ථාවර හා හොඳින් දන්නා කරුණකි.
mikemaccana

1
මට හොඳම පිළිතුර නම්, එය අවම වශයෙන් මැද කුණු කසළ නොමැතිව බහුකාර්යයක් ලබා ගන්නා බැවිනි (ආරම්භයේ ඇති කුණු කසළ හා මට ගනුදෙනු කළ හැකිය).
ඩේමියන් ගෝල්ඩින්

13

Downvoters : මෙම කේතය සපයනු ලබන්නේ තොරතුරු සඳහා පමණි.

මෙය මැක්හි Fx 19 සහ Chrome 24 හි අත්හදා බලා ඇත

ඩෙමෝ

var new_comment; /*<<<EOF 
    <li class="photobooth-comment">
       <span class="username">
          <a href="#">You</a>:
       </span>
       <span class="comment-text">
          $text
       </span> 
       @<span class="comment-time">
          2d
       </span> ago
    </li>
EOF*/
// note the script tag here is hardcoded as the FIRST tag 
new_comment=document.currentScript.innerHTML.split("EOF")[1]; 
document.querySelector("ul").innerHTML=new_comment.replace('$text','This is a dynamically created text');
<ul></ul>


13
ඒක බිහිසුණුයි. +1. GetElement වෙනුවට ඔබට document.currentScript භාවිතා කළ හැකිය ...
Orwelllophile

1
Osx

1
jsfiddle-fixed - මගේ කොන්සෝලය තුළ ගෝලීයව "ඔබ" යන්න නිර්වචනය කර තිබිය යුතුය. දැන් ක්‍රියාත්මක වේ (chrome / osx). Var වෙත අදහස් දැක්වීම එකතු කිරීමේ හොඳ දෙය නම්, ඔබ ක්‍රියාකාරී සන්දර්භයක නොසිටීමයි , jsfiddle-function-heredoc , නමුත් පන්ති ක්‍රම සඳහා ක්‍රියාකාරී දෙය සිසිල් වනු ඇත. එය ප්‍රතිස්ථාපනය කිරීම වඩා හොඳ විය හැකිය {මෙය: කෙසේ වෙතත්} වස්තුව. පිස්සු දෙයක් කෙසේ හෝ සීමාවට තල්ලු කිරීම විනෝදජනකයි :)
ඕවල්ලොෆිල්

1
වෛර කරන්නන් අමතක කරන්න. ES6 එකම නිවැරදි පිළිතුරු තීරුව මෙයයි. අනෙක් සියලුම පිළිතුරු සඳහා සංයුක්ත කිරීම, යම් ආකාරයක ගණනය කිරීමක් හෝ පැන යාම අවශ්‍ය වේ. මෙය ඇත්තෙන්ම සිසිල් වන අතර මම එය විනෝදාංශයක් ලෙස වැඩ කරන ක්‍රීඩාවකට ප්‍රලේඛන එකතු කිරීමේ ක්‍රමයක් ලෙස භාවිතා කරමි. දෝෂයක් ඇතිවිය හැකි කිසිවක් සඳහා මෙම උපක්‍රමය භාවිතා නොකරන තාක් කල් (යමෙකු යන්නේ කෙසේදැයි මට පෙනේ "අර්ධ සළකුණ, ඩර්ප්. ඊළඟ පේළියට අදහස් දැක්වීමට ඉඩ දෙමු." එවිට එය ඔබේ කේතය බිඳ දමයි.) නමුත්, එය මගේ විනෝදාංශ ක්‍රීඩාවේ විශාල ගනුදෙනුවක්ද? නැත, මට ප්‍රයෝජනවත් යමක් සඳහා සිසිල් උපක්‍රමය භාවිතා කළ හැකිය. නියම පිළිතුර.
තෝමස් ඩිග්නන්

2
නිෂ්පාදන කේතය තුළ මෙම තාක්ෂණය භාවිතා කිරීමට මම කිසි විටෙකත් නිර්භීත නොවෙමි, නමුත් මම එය බොහෝ විට භාවිතා කරන්නේ ඒකක පරීක්ෂණයේදී ය, බොහෝ විට යම් ව්‍යුහයක වටිනාකම (තරමක් දිගු) නූලක් ලෙස බැහැර කර එය සංසන්දනය කිරීම පහසුය. එය 'විය යුතු' දේ.
බෙන් මැකින්ටයර්

10

සාරාංශයක් ලෙස, පරිශීලක ජාවාස්ක්‍රිප්ට් ක්‍රමලේඛනයෙහි ලැයිස්තුගත කර ඇති ප්‍රවේශයන් 2 ක් මම උත්සාහ කර ඇත්තෙමි (ඔපෙරා 11.01):

එබැවින් ඔපෙරා පරිශීලක JS භාවිතා කරන්නන් සඳහා වැඩ කිරීමේ ප්‍රවේශය මම නිර්දේශ කරමි. කතුවරයා පැවසූ දෙයට වඩා වෙනස්ව:

එය ෆයර්ෆොක්ස් හෝ ඔපෙරා මත ක්‍රියා නොකරයි; IE, ක්‍රෝම් සහ සෆාරි මත පමණි.

එය ඔපෙරා 11 හි ක්‍රියා කරයි. අවම වශයෙන් පරිශීලක JS ස්ක්‍රිප්ට් වල. ඉතා නරක මට තනි පිළිතුරු ගැන අදහස් දැක්වීමට හෝ පිළිතුර ඉහළ නැංවීමට නොහැකිය, මම එය වහාම කරන්නෙමි. හැකි නම්, ඉහළ වරප්‍රසාද ඇති අයෙක් මා වෙනුවෙන් එය කරන්න.


මෙය මගේ පළමු සත්‍ය ප්‍රකාශයයි. මම දින 2 කට පෙර ඉහළ වරප්‍රසාදය ලබාගෙන ඇති අතර එබැවින් මා ඉහත සඳහන් කළ එක් පිළිතුරක් වහාම ඉදිරිපත් කළෙමි. උදව් කිරීමට මගේ දුර්වල උත්සාහය ඉහළ නැංවූ ඕනෑම කෙනෙකුට ස්තූතියි.
ටයිලර්

මෙම පිළිතුර සැබවින්ම ඉදිරිපත් කළ සැමට ස්තූතියි: සාමාන්‍ය අදහස් පළ කිරීමට මට දැන් වරප්‍රසාද තිබේ! ඉතින් නැවතත් ස්තූතියි.
ටයිලර්

10

මගේ දිගුව https://stackoverflow.com/a/15558082/80404 . /*! any multiline comment */සංකේතයක් ඇති ආකාරයකින් අදහස් දැක්වීම අපේක්ෂා කරයි ! අවම කිරීමෙන් ඉවත් කිරීම වැළැක්වීමට භාවිතා කරයි (අවම වශයෙන් YUI සම්පීඩකය සඳහා)

Function.prototype.extractComment = function() {
    var startComment = "/*!";
    var endComment = "*/";
    var str = this.toString();

    var start = str.indexOf(startComment);
    var end = str.lastIndexOf(endComment);

    return str.slice(start + startComment.length, -(str.length - end));
};

උදාහරණයක්:

var tmpl = function() { /*!
 <div class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
    </ul>
 </div>
*/}.extractComment();

9

2015 සඳහා යාවත්කාලීන කරන ලදි : එය දැන් වසර හයකට පසුව ය: බොහෝ අය මොඩියුල ලෝඩරයක් භාවිතා කරන අතර ප්‍රධාන මොඩියුල පද්ධතිවල එක් එක් සැකිලි පැටවීමේ ක්‍රම තිබේ. එය පේළිගත නොවේ, නමුත් බහුලව භාවිතා වන බහු රේඛා අච්චු වන අතර, සැකිලි සාමාන්‍යයෙන් කෙසේ හෝ JS වලින් පිටත තබා ගත යුතුය .

required.js: 'පෙළ අවශ්‍යයි'.

භාවිතා require.js 'පෙළ' ප්ලගිනය දී multiline සැකිල්ල සමග, template.html

var template = require('text!template.html')

NPM / browserify: 'brfs' මොඩියුලය

Browserify වූ 'brfs' මොඩියුලය භාවිතා පෙළ ගොනු පැටවීම සඳහා. මෙය සැබවින්ම ඔබගේ අච්චුව ඔබේ එකතු කළ HTML තුළට ගොඩනගනු ඇත.

var fs = require("fs");
var template = fs.readFileSync(template.html', 'utf8');

පහසු.


9

පැන ගිය නව රේඛා භාවිතා කිරීමට ඔබ කැමති නම්, ඒවා මනාව භාවිතා කළ හැකිය . එය පිටු මායිමක් සහිත ලේඛනයක් මෙන් පෙනේ .

රූප විස්තරය මෙහි ඇතුළත් කරන්න


2
මෙය බාහිර හිස් අවකාශයන් එකතු නොකරන්නේද?
tomByrer

1
omtomByrer ඔව්, හොඳ නිරීක්ෂණයක්. එය සුදු අවකාශය ගැන ඔබ නොසලකන නූල් සඳහා පමණි, උදා: HTML.
seo

8

මෙය IE, Safari, Chrome සහ Firefox හි ක්‍රියාත්මක වේ:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<div class="crazy_idea" thorn_in_my_side='<table  border="0">
                        <tr>
                            <td ><span class="mlayouttablecellsdynamic">PACKAGE price $65.00</span></td>
                        </tr>
                    </table>'></div>
<script type="text/javascript">
    alert($(".crazy_idea").attr("thorn_in_my_side"));
</script>

6
ඒ ගැන මදක් සිතා බලන්න. එය වලංගු යැයි ඔබ සිතනවාද? එය දර්ශන ගැටළු ඇති කළ හැකි යැයි ඔබ සිතන්නේ නැද්ද?
Sk8erPeter

5
පහත වැටීම් ඇයි? මෙය නිර්මාණාත්මක පිළිතුරකි, ඉතා ප්‍රායෝගික නොවේ නම්!
dotancohen

2
නැහැ, එය එසේ නොවේ. එක් වෙනුවට සැකිලි භාවිතා කළ යුතු: $ .tmpl () ( api.jquery.com/tmpl ), හෝ EJS ( embeddedjs.com/getting_started.html downvotes සඳහා), ආදිය එක් හේතුවක් එය ඇත්තටම දුර වලංගු කේතය සිට බව, සහ භාවිතා මෙය විශාල දර්ශන ගැටළු ඇති කළ හැකිය.
Sk8erPeter

කිසිවෙකු මෙම පිළිතුර ප්‍රායෝගිකව භාවිතා
නොකරනු


7

ඔබට ටයිප්ස්ක්‍රිප්ට් (ජාවාස්ක්‍රිප්ට් සුපර්සෙට්) භාවිතා කළ හැකිය , එය බහු රේඛා නූල් සඳහා සහය දක්වයි, සහ ඉහළින් ජාවාස්ක්‍රිප්ට් වෙත සම්ප්‍රේෂණය කරයි:

var templates = {
    myString: `this is
a multiline
string` 
}

alert(templates.myString);

සරල ජාවාස්ක්‍රිප්ට් සමඟ එය ඉටු කිරීමට ඔබට අවශ්‍ය නම්:

var templates = 
{
 myString: function(){/*
    This is some
    awesome multi-lined
    string using a comment 
    inside a function 
    returned as a string.
    Enjoy the jimmy rigged code.
*/}.toString().slice(14,-3)

}
alert(templates.myString)

අයිපෑඩ් / සෆාරි සහාය නොදක්වන බව සලකන්න 'functionName.toString()'

ඔබට බොහෝ උරුම කේත තිබේ නම්, ඔබට ටයිප්ස්ක්‍රිප්ට් හි සරල ජාවාස්ක්‍රිප්ට් ප්‍රභේදය භාවිතා කළ හැකිය (පිරිසිදු කිරීමේ අරමුණු සඳහා):

interface externTemplates
{
    myString:string;
}

declare var templates:externTemplates;

alert(templates.myString)

ඔබට සරල ජාවාස්ක්‍රිප්ට් ප්‍රභේදයෙන් බහු-නූල් වස්තුව භාවිතා කළ හැකිය, එහිදී ඔබ සැකිලි වෙනත් ගොනුවකට දමයි (ඔබට එය මිටියේ ඒකාබද්ධ කළ හැකිය).

ඔබට ටයිප්ස්ක්‍රිප්ට් http://www.typescriptlang.org/Playground වෙතින් උත්සාහ කළ හැකිය


අයිපෑඩ් / සෆාරි සීමාව පිළිබඳ කිසියම් ලේඛනයක් තිබේද? - MDN ඒ සියල්ල හොඳයි හිතන්න පෙනේ developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
Campbeln

Amp කැම්බල්න්: CoWorker මට මෙය කීවේය (ඔහු කේතය භාවිතා කළේය). එය මා විසින්ම පරීක්ෂා කර නැත. සමහර විට අයිපෑඩ් / සෆාරි අනුවාදය මත ද රඳා පවතී - එබැවින් බොහෝ විට රඳා පවතී.
ස්ටෙෆාන් ස්ටීගර්

6

එය කළ හැකි ES6 ක්‍රමය වනුයේ අච්චු වචන භාවිතා කිරීම ය:

const str = `This 

is 

a

multiline text`; 

console.log(str);

වැඩි විස්තර මෙහි


මෙම පිළිතුර කුඩා, අසම්පූර්ණ හා නරක ලෙස හැඩගස්වා ඇතිවා පමණක් නොව, පෙර පිළිතුරු වලට කිසිවක් එකතු නොකරයි. එය සලකුණු කර මකා දැමීමට බලාපොරොත්තු වේ.
වික්ටර් ෂ්‍රෝඩර්

5

බහුවිධ රේඛාවල නූලක් සඳහන් කිරීමට බැක්ටික් භාවිතා කිරීමට ES6 ඔබට ඉඩ දෙයි. එය අච්චු සාහිත්‍යයක් ලෙස හැඳින්වේ. මෙවැනි:

var multilineString = `One line of text
    second line of text
    third line of text
    fourth line of text`;

බැක්ටික් භාවිතා කිරීම NodeJS හි ක්‍රියාත්මක වන අතර එයට Chrome, Firefox, Edge, Safari සහ Opera සහාය දක්වයි.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals


4

ජාවාස්ක්‍රිප්ට්ස් හි බහු රේඛා සෑදීමට පහසුම ක්‍රමය වන්නේ බැක්ටික්ස් (``) භාවිතා කිරීමයි. ඔබට විචල්යයන් ඇතුළත් කළ හැකි බහු රේඛා නිර්මාණය කිරීමට මෙය ඔබට ඉඩ සලසයි ${variableName}.

උදාහරණයක්:

let name = 'Willem'; 
let age = 26;

let multilineString = `
my name is: ${name}

my age is: ${age}
`;

console.log(multilineString);

අනුකූලතාව:

  • එය ES6// හි හඳුන්වා දී ඇතes2015
  • එයට දැන් සියලුම ප්‍රධාන බ්‍රව්සර් වෙළෙන්දන් (අන්තර්ජාල ගවේෂකය හැර) දේශීයව සහාය දක්වයි

මොසිල්ලා ලියකියවිලි වල නිශ්චිත අනුකූලතාව මෙතැනින් පරීක්ෂා කරන්න


මෙය දැන් සියලුම මෑත බ්‍රව්සර් සමඟ අනුකූලද? නැතහොත් මෙම සින්ටැක්ස් සඳහා තවමත් සහාය නොදක්වන බ්‍රව්සර් කිහිපයක් තිබේද?
cmpreshn

මගේ අතිශය ප්‍රමාද වූ අදහස් දැක්වීම ගැන කණගාටුයි, පිළිතුර එකතු කළ අනුකූලතා තොරතුරු සංස්කරණය කළේය;)
විලෙම් වැන් ඩර් වීන්

3

නූල් කොන්කට් සඳහා මගේ අරාව මත පදනම් වූ සම්බන්ධතාවය:

var c = []; //c stands for content
c.push("<div id='thisDiv' style='left:10px'></div>");
c.push("<div onclick='showDo(\'something\');'></div>");
$(body).append(c.join('\n'));

මෙය මට හොඳට වැඩ කර ඇත, විශේෂයෙන් මම බොහෝ විට මේ ආකාරයෙන් සාදන ලද html වෙත අගයන් ඇතුළු කරන බැවින්. නමුත් එයට බොහෝ සීමාවන් ඇත. ඉන්ඩෙන්ටේෂන් හොඳයි. කැදැලි උද්ධෘත ලකුණු සමඟ කටයුතු නොකිරීම ඇත්තෙන්ම සතුටක් වන අතර, එහි ඇති විශාලත්වය මට කරදර කරයි.

.Push () අරාව එකතු කිරීමට බොහෝ කාලයක් ගත වේද? මෙම අදාළ පිළිතුර බලන්න:

( ජාවාස්ක්‍රිප්ට් සංවර්ධකයින් Array.push () භාවිතා නොකිරීමට හේතුවක් තිබේද? )

මෙම (ප්‍රතිවිරුද්ධ) පරීක්ෂණ ලකුණු බැලීමෙන් පසුව පෙනේ .පෂ් () අයිතම 100 කට වඩා වැඩෙන්නේ නැති නූල් අරා සඳහා කදිමයි - විශාල අරා සඳහා සුචිගත කළ එකතු කිරීම් වලට මම එය වළක්වන්නෙමි.


3

+=ඔබේ නූල් එකිනෙක ගැට ගැසීමට ඔබට භාවිතා කළ හැකිය , කිසිවෙකු එයට පිළිතුරු නොදුන් බවක් පෙනේ, එය කියවිය හැකි සහ පිළිවෙලට ... මේ වගේ දෙයක්

var hello = 'hello' +
            'world' +
            'blah';

ලෙසද ලිවිය හැකිය

var hello = 'hello';
    hello += ' world';
    hello += ' blah';

console.log(hello);

3

එක් එක් පේළියේ අවසානයේ ඉදිරි බැක්ස්ලෑෂ් භාවිතා කරමින් පේළි කිහිපයක් දිගේ දිගු කරන විට, ඉදිරි බැක්ස්ලෑෂ් පසු ඕනෑම අමතර අක්ෂර (බොහෝ විට අවකාශ, ටැබ් සහ වැරදීමකින් එකතු කරන ලද අදහස්) අනපේක්ෂිත අක්ෂර දෝෂයක් ඇති කරයි, එය සොයා ගැනීමට මට පැයක් ගත විය. පිටතට

var string = "line1\  // comment, space or tabs here raise error
line2";

3

කරුණාකර අන්තර්ජාලයේ ඇති ආදරය සඳහා නූල් සම්මුතිය භාවිතා කර මේ සඳහා ES6 විසඳුම් භාවිතා නොකිරීමට වග බලා ගන්න. CSS3 සහ සමහර බ්‍රව්සර් CSS3 ව්‍යාපාරයට අනුවර්තනය වීමට ප්‍රමාද වීම වැනි ES6 පුවරුව පුරා සහය නොදක්වයි. සරල ජාවාස්ක්‍රිප්ට් භාවිතා කරන්න, ඔබේ අවසන් පරිශීලකයින් ඔබට ස්තූති කරනු ඇත.

උදාහරණයක්:

var str = "This world is neither flat nor round. "+ "Once was lost will be found";


3
මම ඔබේ අදහස සමඟ එකඟ වන අතර, මම ජාවාස්ක්‍රිප්ට් "හොඳ" ලෙස
නොකියමි

2

ඔබ '+' සංයුක්ත ක්‍රියාකරු භාවිතා කළ යුතුය.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <p id="demo"></p>
    <script>
        var str = "This "
                + "\n<br>is "
                + "\n<br>multiline "
                + "\n<br>string.";
        document.getElementById("demo").innerHTML = str;
     </script>
</body>
</html>

\nඔබේ ප්‍රභව කේතය භාවිතා කිරීමෙන් පෙනෙන්නේ -

මෙය 
 <br> වේ
 <br> බහු රේඛාව
 <br> නූල්.

<br>ඔබගේ බ්‍රව්සර් ප්‍රතිදානය භාවිතා කිරීමෙන් පෙනෙන්නේ -

මෙය
වේ
බහු රේඛාව
නූල්.

1

මම හිතන්නේ මෙම ක්‍රියාකාරීත්වය IE, Chrome, Firefox, Safari, Opera -

JQuery භාවිතා කිරීම :

<xmp id="unique_id" style="display:none;">
  Some plain text
  Both type of quotes :  " ' " And  ' " '
  JS Code : alert("Hello World");
  HTML Code : <div class="some_class"></div>
</xmp>
<script>
   alert($('#unique_id').html());
</script>

පිරිසිදු ජාවාස්ක්‍රිප්ට් භාවිතා කිරීම:

<xmp id="unique_id" style="display:none;">
  Some plain text
  Both type of quotes :  " ' " And  ' " '
  JS Code : alert("Hello World");
  HTML Code : <div class="some_class"></div>
</xmp>
<script>
   alert(document.getElementById('unique_id').innerHTML);
</script>

චියර්ස් !!


<xmp>එතරම්ම අතහැර දමා ඇත. එය HTML වලින් අවසර දිය හැකි නමුත් කිසිදු කතුවරුන් විසින් භාවිතා නොකළ යුතුය. Stackoverflow.com/questions/8307846/…
බර්ගි

Er බර්ජි, ඔබ නිවැරදියි .. සහ පලායාම <pre>;සමඟ භාවිතා කිරීම මගේ විසඳුමට උදව් නොවනු ඇත .. මම අදත් ඒ හා සමාන ගැටලුවක් ඇති කර ගත් අතර ඒ සඳහා විසඳුම් සෙවීමට උත්සාහ කළෙමි .. නමුත් මගේ නඩුවේදී, මෙම ගැටළුව විසඳීම සඳහා මම ඉතා හොඳ ක්‍රමයක් සොයා ගතිමි. <xmp> හෝ වෙනත් ටැගයක් වෙනුවට html විවරණ වල ප්‍රතිදානය තැබීම. lol. මෙය සිදු කිරීම සඳහා සම්මත ක්‍රමයක් නොවන බව මම දනිමි, නමුත් මම මේ කාරණය සම්බන්ධයෙන් හෙට මෝනිං වැඩ කරමි .. චියර්ස් !!
ආදිත්‍ය හජාරේ

අවාසනාවට style="display:none"ක්‍රෝම් සමඟ වුවද <img>නිදර්ශන කොටසේ සඳහන් ඕනෑම රූපයක් පූරණය කිරීමට උත්සාහ කරයි .
ජෙසී ග්ලික්

0

නිර්නාමික පිළිතුර උත්සාහ කර බැලූ විට මෙහි කුඩා උපක්‍රමයක් ඇති බව පෙනේ, බැක්ස්ලෑෂ් පසු ඉඩක් තිබේ නම් එය ක්‍රියා නොකරයි \
එබැවින් පහත විසඳුම ක්‍රියාත්මක නොවේ -

var x = { test:'<?xml version="1.0"?>\ <-- One space here
            <?mso-application progid="Excel.Sheet"?>' 
};

නමුත් අවකාශය ඉවත් කළ විට එය ක්‍රියාත්මක වේ -

var x = { test:'<?xml version="1.0"?>\<-- No space here now
          <?mso-application progid="Excel.Sheet"?>' 
};

alert(x.test);​

එය උපකාරී වේ යැයි සිතමි !!


7
පැහැදිලිවම ඔබට බැක්ස්ලෑෂ් පසු අවකාශයක් තිබේ නම්, බැක්ස්ලෑෂ් අවකාශයෙන් ගැලවී යයි. එය අවකාශයෙන් නොව රේඛීය බිඳීමෙන් ගැලවිය යුතුය.
සෙජනස්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.