Is there a JavaScript equivalent to "string" . "string" in PHP? - javascript

I am currently learning a little bit of JavaScript and had a question.
In PHP, I am used to binding text and strings together with a simple dot like this:
echo "Text" . $String . "anotherText" . $anotherString
Is this possible in JavaScript? (Not the echo, but the binding of the strings and text.)

The + is the concatenation operator in JavaScript:
"Text" + somestring + "anotherText" + anotherString;

In JavaScript it's + instead of .
Example 1:
document.write("Text" + somestring + "anotherText" + anotherString);
Example 2:
alert("Text" + somestring + "anotherText" + anotherString);
Example 3:
var john = "Text" + somestring + "anotherText" + anotherString;

Yes just, add:
'Text' + str + 'anotherText' + anotherString;

Related

Concatenating with variables in a string

I'm just beginning my learning process and am stuck now on this one string. I've searched MDN, Google and Bing and not found any help.
My code instructions tell me to assign a variable, which I did. Then it wants me to test in console.log. I've done so, and when I do with spaces and punctuation, it gives me an error saying that it expected an identifier and instead saw '+'.
If I take the punctuation out I don't have an error, but no punctuation. If I take out the extra spaces as well as punctuation, I get a strange run-on sentence but no errors. I'm working this problem in Udacity, it is quiz 24 of lesson 2.
My code is:
var adjective1 = "amazing";
var adjective2 = "fun";
var adjective3 = "entertaining";
var madLib = "The intro to JavaScript course is " + adjective1. + " James and Julia are so " + adjective2. + " I cannot wait to work through the rest of this " + adjective3 + " content!";
console.log(madLib);
You need to add the dots as strings as well.
var adjective1 = "amazing";
var adjective2 = "fun";
var adjective3 = "entertaining";
var madLib = "The intro to JavaScript course is " + adjective1 + "."
+ " James and Julia are so " + adjective2 + "."
+ " I cannot wait to work through the rest of this " + adjective3 + " content!";
console.log(madLib);
The dot . has a special meaning in Javascript. It works as accessor for properties of an object.
Math.floor(1.5); // return the integer value of the given number
Read more here about property accessor.
Add . (dot) inside the double quoted part of string, not next to the variable.
It is a part of string, not a in-memory variable. And you are calling no function after that.
Below snippet works properly.
var adjective1 = "amazing";
var adjective2 = "fun";
var adjective3 = "entertaining";
var madLib = "The intro to JavaScript course is " + adjective1 + ". James and Julia are so " + adjective2 + ". I cannot wait to work through the rest of this " + adjective3 + " content!";
console.log(madLib);
Example of using dot to call a function. It is not required in this case since it is already a string.
var adjective1 = "amazing";
var adjective2 = "fun";
var adjective3 = "entertaining";
var madLib = "The intro to JavaScript course is " + adjective1.toString() + ". James and Julia are so " + adjective2.toString() + ". I cannot wait to work through the rest of this " + adjective3 + " content!";
console.log(madLib);

JavaScript equivalent to URLEncoder.encode("String", "UTF-8") of Java

I want to encode a string to UTF-8 in JavaScript. In java we use URLEncoder.encode("String", "UTF-8") to achieve this.
I know we can use encodeURI or encodeURIComponent but it is producing different output than URLEncoder.encode
Can anyone please suggest any available JS method that can be used to achieve same output as URLEncoder.encode.
NOTE:
Due to restrictions I cannot use jQuery.
I don't know if this javaURLEncode() function is a spot-on match for Java's URLEncoder.encode method, but it might be close to what you're looking for:
function javaURLEncode(str) {
return encodeURI(str)
.replace(/%20/g, "+")
.replace(/!/g, "%21")
.replace(/'/g, "%27")
.replace(/\(/g, "%28")
.replace(/\)/g, "%29")
.replace(/~/g, "%7E");
}
var testString = "It's ~ (crazy)!";
var jsEscape = escape(testString);
var jsEncodeURI = encodeURI(testString);
var jsEncodeURIComponent = encodeURIComponent(testString);
var javaURLEncoder = javaURLEncode(testString);
alert("Original: " + testString + "\n" +
"JS escape: " + jsEscape + "\n" +
"JS encodeURI: " + jsEncodeURI + "\n" +
"JS encodeURIComponent: " + jsEncodeURIComponent + "\n" +
"Java URLEncoder.encode: " + javaURLEncoder);
found one more character should be replaced
.replace(/\$/g, "%24")

Uncaught Error: Syntax error, unrecognized expression: '.b-brand-box'

I am attempting to call a JavaScript function from jQuery. When I try to pass an argument to JavaScript function:
var brandRcObj = "b-brand-box";
$('.b-brand-box').on('mouseleave', function(){
brandOn(brandRcObj);
});
I am getting the following error:
"Uncaught Error: Syntax error, unrecognized expression: '.b-brand-box'"
I'm doing this because I will use the same mouseleave event multiple times in my project. Therefore I wanted to write a JavaScript function as follows:
function brandOn(brandClass){
var classObj = "'" + "." + brandClass + "'";
var imgObj = "'" + "." + brandClass + " " + "img" + "'";
$(classObj).css({
backgroundColor: 'white',
opacity: 1
});
$(imgObj).css({
opacity: 1
});
}
Thanks for yor help!
'.b-brand-box' is not a valid class selector – .b-brand-box is.
You are putting single quotes around the value you are dynamically generating, although there should not be any – you are mistaking the notation of a text literal in JavaScript syntax for its actual string value.
'.b-brand-box' is the notation of a text literal in JavaScript code, ".b-brand-box" would be another valid way of writing it. The value of both of those strings after the source code has been parsed is only .b-brand-box however.
What you actually want is just simply
"." + brandClass;
and nothing more.
You do not need all those quotes, where you have:
var classObj = "'" + "." + brandClass + "'";
var imgObj = "'" + "." + brandClass + " " + "img" + "'";
all you need is
var classObj = "." + brandClass;
var imgObj = "." + brandClass + " " + "img";
The interpreter knows you have a string

Parse JS only using JS

I have the below JS code which creates like (47.624718,-122.356133)
var point = new GLatLng(
parseFloat(markers[i].getAttribute(\"lat\")),
parseFloat(markers[i].getAttribute(\"lng\"))
);
To only make the value JUST 47.624718 -122.356133 ? how can I use the js replace() function to do so?
Just use the object methods:
point.lat() + ' ' + point.lng()
output = point.lat() + ' ' + point.lng();
See here: https://developers.google.com/maps/documentation/javascript/v2/reference#GLatLng
You can use 3 chained replace() invocations:
point = point.replace("(", "").replace(")", "").replace(",", " ");
It will replace the left and right parenthesis with an empty string, and the comma with a single space.

jquery - assign variable inside a .html()

i++;
$("#test").html("<iframe id='i' src='arr[0]'></iframe>");
I want to assign the value of the array to the iframe source as shown here. This doesn't work however. How is this possible? Thanks
$("#test").html("<iframe id='" + i + "' src='" + arr[0] + "'></iframe>");
You need to use concatenation:
$("#test").html("<iframe id=\"" + i + "\" src=\"" + arr[0] + "\"></iframe>");
Edited to match updated question
Why your code doesn't work as expected:
$("#test").html("<iframe id='i' src='arr[0]'></iframe>");
generates the html output:
<div id="test">
<iframe id='i' src='arr[0]'></iframe>
</div>
Your variables are in fact outputted as literals, since you're not using any escaping/concatenation (see this article for JS string 101).
What you can do to make it work:
While the other answers are correct, consistently using single quotes for strings makes HTML concatenation way more fun (as attribute values should usually be in double quotes):
i++;
$("#test").html('<iframe id="' + i + '" src="' + arr[0] + '"></iframe>');
What you can do to make it work even more hassle-free for you:
It might be overkill if you need to concatenate just once. In the long run though, this approach by #Zippoxer makes your life much easier when you have to insert values into strings:
String.prototype.format = function() {
var formatted = this;
for(arg in arguments) {
formatted = formatted.replace("{" + arg + "}", arguments[arg]);
}
return formatted;
};
Usage in your case:
$("#test").html('<iframe id="{0}" src="{1}"></iframe>'.format(i, arr[0]));
try this...
$("#test").html("<iframe id='" + i + "' src='" + arr[0] + "'></iframe>");
What you are doing with $("#test").html("<iframe id='i' src='arr[0]'></iframe>"); is setting the id to the literal character "i" and setting the src to the literal string "arr[0]" rather than the values of these variables.

Categories

Resources