JavaScript中全局变量的命名和格式化标准是什么?
例如:
var global_var // ?
var _global_var // ?
var GLOBAL_VAR // ?
var _GLOBAL_VAR // ?
...
Run Code Online (Sandbox Code Playgroud)
注意:我不是在谈论常量,只是简单地说具有全局范围的变量.
很长一段时间以来,我一直在努力使我的JavaScript更加面向对象.我也看了几个不同的实现,但我无法决定是否有必要.
我想回答的是以下问题
什么是Java中的以下关键字的区别:implements
,extends
?
好吧,这让我疯狂了.
我希望在我的文档周围有一个边框.它应该很好地围绕整个窗口/视口.所以我定义:
body {
border: 1px solid red;
}
Run Code Online (Sandbox Code Playgroud)
当我的文档处于怪癖模式时,这很好.至少在IE中,这是我的主要目标.红色边框显示在我页面的边缘,显然是因为通过预定义的CSS body
并html
设置为填充屏幕.
通过设置HTML 4.01严格DOCTYPE进入标准模式,body
并html
折叠到内容的实际(较小)大小时,边框将直接绘制在屏幕中间.所以我定义:
body, html {
padding: 0px;
margin: 0px;
border: 0px none;
width: 100%;
height: 100%;
}
body {
border: 1px solid red;
}
Run Code Online (Sandbox Code Playgroud)
我得到 - 滚动条,滚动一个像素来显示底部/右边框.但是,我希望这个边界立即可见.
有没有废话(如"高度:99.9%;","溢出:隐藏;"或"切换回怪癖模式")方法获得100%的边框,没有不必要的滚动条?IE-only很好,当然,跨浏览器会更好.
我正在尝试替换用户在HTML表单中输入的值中找到的所有点.例如,我需要将条目'8.30'转换为'8x30'.
我有这个简单的代码:
var value = $(this).val().trim(); // get the value from the form
value += ''; // force value to string
value.replace('.', 'x');
Run Code Online (Sandbox Code Playgroud)
但它不起作用.在Firebug中使用console.log命令,我可以看到replace命令根本不会发生.'8.30'保持不变.
我也试过以下正则表达式没有更好的结果:
value.replace(/\./g, 'x');
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
示例字符串: $${a},{s$${d}$$}$$
我想$${d}$$
首先匹配并替换它一些文本,以便字符串成为$${a},{sd}$$
,然后$${a},{sd}$$
将匹配.
我很难在对象方法中的javascript内联函数中引用"this".
var testObject = {
oThis : this,
testVariable : "somestring",
init : function(){
console.log(this.testVariable); // outputs testVariable as expected
this.testObject.submit(function(){
var anotherThis = this;
console.log(this.testVariable) // undefined
console.log(oThis.testVariable) // undefined
console.log(testObject.testVariable) // outputs testVariable
console.log(anotherThis.testVariable) // undefined
}
}
Run Code Online (Sandbox Code Playgroud)
如何this.testVariable
从提交功能中进行访问?我也使用jQuery,如果这有所不同.
我想知道这是否是最好的方法 - 也许我应该作为一个单独的函数提交,然后引用内联,如:
init : function(){
this.testObject.submit = this.submitForm;
},
submitForm : function(){
// do validation here
console.log(this.testVariable) // outputs testvariable
.
.
.
return valid;
}
Run Code Online (Sandbox Code Playgroud)
但这似乎也没有用 - 我想我现在只想在我的init
方法中保持提交函数内联.
我已经读过如何在最后几天防止CSRF攻击.我将在每个页面加载中更新令牌,将令牌保存在会话中并在提交表单时进行检查.
但是如果用户有,假设我的网站打开了3个标签,我只是将最后一个标记存储在会话中?这将使用另一个令牌覆盖令牌,并且一些后续操作将失败.
我是否需要在会话中存储所有令牌,或者是否有更好的解决方案才能使其正常工作?
我正在浏览MooTools源代码,试图了解它.implement()
和.extend()
实用程序.
每个的定义指的是这样定义的函数:
var enumerables = true;
for (var i in {toString: 1}) enumerables = null;
if (enumerables) enumerables = ['hasOwnProperty', 'valueOf', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'constructor'];
Function.prototype.overloadSetter = function(usePlural){
var self = this;
return function(a, b){
if (a == null) return this;
if (usePlural || typeof a != 'string'){
for (var k in a) self.call(this, k, a[k]);
if (enumerables) for (var i = enumerables.length; i--;){
k = enumerables[i];
if (a.hasOwnProperty(k)) self.call(this, k, a[k]);
}
} else …
Run Code Online (Sandbox Code Playgroud) 例如,我有一个带有div标签右侧滚动条的div标签.
我想用最后一行显示div,所以我有这个:
document.getElementById("divscroll").scrollTop = 250000;
Run Code Online (Sandbox Code Playgroud)
我可以让它滚动到Firefox的最后但是从未成功使用更大数量的IE事件!
有没有简单的Cross-borwser脚本(不是JQuery或任何大框架!)