Javascript 从Node.JS调用JS文件中的函数
我试图做的是,当index.html将消息发送回服务器时,我想调用Javascript 从Node.JS调用JS文件中的函数,javascript,jquery,node.js,Javascript,Jquery,Node.js,我试图做的是,当index.html将消息发送回服务器时,我想调用app.js中名为changeButton()的函数,该函数将更新index.html上的标题颜色 这是我的node.js文件: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); var express=require('express'); var tools
app.js
中名为changeButton()
的函数,该函数将更新index.html上的标题颜色
这是我的node.js文件:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var express=require('express');
var tools = require('./assets/js/app.js');
app.use(express.static(__dirname + '/assets'));
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
socket.on('chat message', function(msg){
console.log('message: ' + msg);
if(msg == "color") {
socket.emit("changeButton"); //working now
}
});
});
http.listen(3000, function(){
console.log('listening on localhost:3000');
});
app.js位于assets/js文件夹中
function getMessage() {
$('form').unbind('submit').bind('submit', function(){
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
}
function changeButton() {
$('#status').css("background-color", "red");
}
这里是index.html
<!DOCTYPE html>
<html>
<head>
<!-- app.js -->
<script src="js/app.js"></script>
<!-- app.css -->
<link rel="stylesheet" type="text/css" href="css/app.css"/>
</head>
<body>
<h1 id="status"> Node Test </h1>
<ul id="messages"></ul>
<form action="">
<input id="m" autocomplete="off" /><button onclick="getMessage();">Send</button>
</form>
<script>
var socket = io();
socket.on("changeButton", changeButton);
</script>
</body>
节点测试
发送
var socket=io();
插座打开(“changeButton”,changeButton);
现在工作谢谢 更新:虽然这个答案在导入服务器端JS库方面在技术上是正确的,但这似乎不是您需要解决的问题@tony nardi解释了如何通过websocket连接发出服务器端事件,并在客户端对其作出反应。您应该这样做,并将app.js导入index.html 您需要导入定义了
changeButton()
的代码:
var lib = require('assets/app.js')
然后在调用函数时引用该变量:
lib.changeButton()
更新:虽然这个答案在导入服务器端JS库方面在技术上是正确的,但这似乎不是您需要解决的问题@tony nardi解释了如何通过websocket连接发出服务器端事件,并在客户端对其作出反应。您应该这样做,并将app.js导入index.html 您需要导入定义了
changeButton()
的代码:
var lib = require('assets/app.js')
然后在调用函数时引用该变量:
lib.changeButton()
更新:虽然这个答案在导入服务器端JS库方面在技术上是正确的,但这似乎不是您需要解决的问题@tony nardi解释了如何通过websocket连接发出服务器端事件,并在客户端对其作出反应。您应该这样做,并将app.js导入index.html 您需要导入定义了
changeButton()
的代码:
var lib = require('assets/app.js')
然后在调用函数时引用该变量:
lib.changeButton()
更新:虽然这个答案在导入服务器端JS库方面在技术上是正确的,但这似乎不是您需要解决的问题@tony nardi解释了如何通过websocket连接发出服务器端事件,并在客户端对其作出反应。您应该这样做,并将app.js导入index.html 您需要导入定义了
changeButton()
的代码:
var lib = require('assets/app.js')
然后在调用函数时引用该变量:
lib.changeButton()
changeButton在哪里定义?如果它是在index.html中定义的,则需要执行以下操作:
if (msg == "add") {
socket.emit("changeButton")
}
在客户端:
socket.on("changeButton", changeButton);
changeButton在哪里定义?如果它是在index.html中定义的,则需要执行以下操作:
if (msg == "add") {
socket.emit("changeButton")
}
在客户端:
socket.on("changeButton", changeButton);
changeButton在哪里定义?如果它是在index.html中定义的,则需要执行以下操作:
if (msg == "add") {
socket.emit("changeButton")
}
在客户端:
socket.on("changeButton", changeButton);
changeButton在哪里定义?如果它是在index.html中定义的,则需要执行以下操作:
if (msg == "add") {
socket.emit("changeButton")
}
在客户端:
socket.on("changeButton", changeButton);
我对这个问题稍加修改。changeButton在app.js中定义。我通过@joemfb-answer导入了代码。jQuery现在还没有定义,我认为这样做可能是错误的。正在服务器上加载jQuery。好的。如果要更改元素的颜色,则Javascript必须具有对HTML元素的访问权限。如果HTML元素位于index.HTML中,那么您需要在客户端运行Javascript。但是,您仍然可以使用套接字来控制它,就像在我的回答中一样。收到消息“color”后,只需向客户端发回一个事件,该事件将执行changeButton(必须在index.html范围内定义)。这有意义吗?我可能误解了你想要实现的目标。这有点道理。我会用所有代码更新这个问题。我稍微编辑了一下这个问题。changeButton在app.js中定义。我通过@joemfb-answer导入了代码。jQuery现在还没有定义,我认为这样做可能是错误的。正在服务器上加载jQuery。好的。如果要更改元素的颜色,则Javascript必须具有对HTML元素的访问权限。如果HTML元素位于index.HTML中,那么您需要在客户端运行Javascript。但是,您仍然可以使用套接字来控制它,就像在我的回答中一样。收到消息“color”后,只需向客户端发回一个事件,该事件将执行changeButton(必须在index.html范围内定义)。这有意义吗?我可能误解了你想要实现的目标。这有点道理。我会用所有代码更新这个问题。我稍微编辑了一下这个问题。changeButton在app.js中定义。我通过@joemfb-answer导入了代码。jQuery现在还没有定义,我认为这样做可能是错误的。正在服务器上加载jQuery。好的。如果要更改元素的颜色,则Javascript必须具有对HTML元素的访问权限。如果HTML元素位于index.HTML中,那么您需要在客户端运行Javascript。但是,您仍然可以使用套接字来控制它,就像在我的回答中一样。收到消息“color”后,只需向客户端发回一个事件,该事件将执行changeButton(必须在index.html范围内定义)。这有意义吗?我可能误解了你想要实现的目标。这有点道理。我会用所有代码更新这个问题。我稍微编辑了一下这个问题。changeButton在app.js中定义。我通过@joemfb-answer导入了代码。jQuery现在还没有定义,我认为这样做可能是错误的。正在服务器上加载jQuery。好的。如果要更改元素的颜色,则Javascript必须具有对HTML元素的访问权限。如果