I keep getting that my javascript is missing ) in parenthetical
[Break On This Error] if ( (this.scrollTop < this.scrollH...uches[0].pageY > scrollStartPosY+5) )
function touchScroll(id){
if(isTouchDevice()){ //if touch events exist...
var el=document.getElementById(id);
var scrollStartPosY=0;
var scrollStartPosX=0;
document.getElementById(id).addEventListener("touchstart", function(event) {
scrollStartPosY=this.scrollTop+event.touches[0].pageY;
scrollStartPosX=this.scrollLeft+event.touches[0].pageX;
//event.preventDefault(); // Keep this remarked so you can click on buttons and links in the div
},false);
document.getElementById(id).addEventListener("touchmove", function(event) {
// These if statements allow the full page to scroll (not just the div) if they are
// at the top of the div scroll or the bottom of the div scroll
// The -5 and +5 below are in case they are trying to scroll the page sideways
// but their finger moves a few pixels down or up. The event.preventDefault() function
// will not be called in that case so that the whole page can scroll.
if ( (this.scrollTop < this.scrollHeight-this.offsetHeight) && (this.scrollTop+event.touches[0].pageY < scrollStartPosY-5) || (this.scrollTop != 0 && this.scrollTop+event.touches[0].pageY > scrollStartPosY+5) )
event.preventDefault();
if ((this.scrollLeft < this.scrollWidth-this.offsetWidth && this.scrollLeft+event.touches[0].pageX < scrollStartPosX-5) || (this.scrollLeft != 0 && this.scrollLeft+event.touches[0].pageX > scrollStartPosX+5))
event.preventDefault();
this.scrollTop=scrollStartPosY-event.touches[0].pageY;
this.scrollLeft=scrollStartPosX-event.touches[0].pageX;
},false);
}
}
And I cannot for the life of me figure out why.
I keep getting that my javascript is missing ) in parenthetical
[Break On This Error] if ( (this.scrollTop < this.scrollH...uches[0].pageY > scrollStartPosY+5) )
function touchScroll(id){
if(isTouchDevice()){ //if touch events exist...
var el=document.getElementById(id);
var scrollStartPosY=0;
var scrollStartPosX=0;
document.getElementById(id).addEventListener("touchstart", function(event) {
scrollStartPosY=this.scrollTop+event.touches[0].pageY;
scrollStartPosX=this.scrollLeft+event.touches[0].pageX;
//event.preventDefault(); // Keep this remarked so you can click on buttons and links in the div
},false);
document.getElementById(id).addEventListener("touchmove", function(event) {
// These if statements allow the full page to scroll (not just the div) if they are
// at the top of the div scroll or the bottom of the div scroll
// The -5 and +5 below are in case they are trying to scroll the page sideways
// but their finger moves a few pixels down or up. The event.preventDefault() function
// will not be called in that case so that the whole page can scroll.
if ( (this.scrollTop < this.scrollHeight-this.offsetHeight) && (this.scrollTop+event.touches[0].pageY < scrollStartPosY-5) || (this.scrollTop != 0 && this.scrollTop+event.touches[0].pageY > scrollStartPosY+5) )
event.preventDefault();
if ((this.scrollLeft < this.scrollWidth-this.offsetWidth && this.scrollLeft+event.touches[0].pageX < scrollStartPosX-5) || (this.scrollLeft != 0 && this.scrollLeft+event.touches[0].pageX > scrollStartPosX+5))
event.preventDefault();
this.scrollTop=scrollStartPosY-event.touches[0].pageY;
this.scrollLeft=scrollStartPosX-event.touches[0].pageX;
},false);
}
}
And I cannot for the life of me figure out why.
Share Improve this question asked Aug 19, 2011 at 13:41 StevenSteven 14k34 gold badges102 silver badges155 bronze badges 07 Answers
Reset to default 6Try JS Lint. It's great for finding non-obvious syntax errors on scripts.
For me it was +
missing in some string concatenation that happened inside ()
.
In my case, I wasn't thinking, and I was:
- pasting
typescript
into the browser console
It seems according to JSLint that this script is fine, except for some type conversions, that aren't mandatory to follow. It must be something before this that leaves an open parenthesis.
Do you have code before what you are showing above? You may have an unclosed paren before this function that javascript is only realizing is unclosed when it gets to this.
In my case I solved the issue by rebuilding modules cache (I used https://github.com/mzgoddard/hard-source-webpack-plugin )
In my case: using typescript inside a function that was written as a string value, in the new $accumulator operator in MongoDB (see the parameter of 'accumulate' below):
const aggregationPipeline: object[] = [
{
$group: {
_id: 1,
Data: {
$accumulator: {
init: `function() { // Set the initial state
return {};
}`,
initArgs: [], // Argument to pass to the init function
accumulate: `function(state: any) { // Define how to update the state
return state;
}`,
accumulateArgs: [], // Argument required by the accumulate function
merge: `function(state1, state2) {
return state2;
}`,
finalize: `function(state) { // Adjust the state to only return field we need
return state;
}`,
lang: "js"
}
},
}
},
];