La respuesta principal es: use archivos JavaScript para JavaScript, no archivos HTML, y use el src
en tributo de etiquetas de script. (Combine todos sus JS en un archivo, minimice, gzip, etc. para obtener rendimiento).
Pero, usted puede incrustar JavaScript en HTML si es absolutamente necesario. Use un DOCTYPE válido y moderno y no tiene que recurrir a etiquetas de comentarios y secciones CDATA.
Válido ejemplo HTML5:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Example</title>
<script type='text/javascript'>
function foo() {
var a = 1, b = 2;
if (a && b) {
alert("Both");
}
if (a < b) {
alert("a < b");
}
if (a > b) {
alert("a > b");
}
}
</script>
</head>
<body>
<p>Hi there</p>
</body>
</html>
Eso también validará como HTML 4 estricto si se cambia el tipo de documento a
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Nótese que en ambos casos, es necesario tener cuidado con las etiquetas de final en la secuencia de comandos -
Esto causa el problema:
<script type='text/javascript'>
alert("</td>");
</script>
Esto resuelve el problema al prologar la barra con una barra invertida (o se puede romper la etiqueta de cierre para arriba en los literales de cadena separadas):
<script type='text/javascript'>
alert("<\/td>");
// -or-
alert("<" + "/td>");
</script>
Pero, de nuevo, la respuesta básica es: No incrustar dentro de JavaScript Archivos HTML cuando puede evitarlo, use archivos JavaScript para eso.
Sería mejor si mostrara algún código. – LiraNuna
¿Qué versión HTML usas? – Gumbo
Por cierto: un AND lógico siempre puede representarse mediante un OR lógico y NO: A && B =! (! A ||! B) – Gumbo