我正在MySQL数据库中创建一个表以保存一些会话数据,包括session_id.VARCHAR存储session_id字符串的长度应该是多少?
我希望通过链接添加一些指令 - onclick调用显示简单警报框的脚本.如果我这样做的话......
<label for="arquivo">Máximo de 1MB, observe os <a href="" onclick="ajudaUpload();">tipos permitidos</a>.</label>
Run Code Online (Sandbox Code Playgroud)
即使返回false也会重新加载页面,如果我确实喜欢这个...
<label for="arquivo">Máximo de 1MB, observe os <a href="#" onclick="ajudaUpload();">tipos permitidos</a>.</label>
Run Code Online (Sandbox Code Playgroud)
使用"#"符号,页面滚动到顶部,"#"添加到查询字符串.有没有第三种方法可以在不重新加载,滚动和垃圾的情况下完成它?
我在测试某些变量是否为空时遇到了代码问题,并决定用小提琴测试它:
var result = "";
var Teste = new Object();
Teste.ObjectNew = new Object();
Teste.StringNew = new String();
Teste.NumberNew = new Number();
Teste.ArrayNew = new Array();
Teste.ObjectLiteral = {};
Teste.StringLiteral = "";
Teste.NumberLiteral = 0;
Teste.ArrayLiteral = [];
Teste.ObjectNull = Object(null);
Teste.StringNull = String(null);
Teste.NumberNull = Number(null);
Teste.ArrayNull = [null];
for (var i in Teste) {
if (Teste[i] == null) {
result += "<p>Type " + i + " is null: " + Teste[i] + "</p>";
} else { …Run Code Online (Sandbox Code Playgroud)对象内的此函数定义xmlhttprequest对象的事件处理.由于某些浏览器不接受addEventListener方法,我做了一个测试,如果没有,它将定义onstatechange:
var reqEngatilhar = function(){
este.concluido = false;
timeoutId = setTimeout(reqTimeout, este.timeout);
if(este.Request.hasOwnProperty("onload")){
este.Request.addEventListener("error", reqErro, true);
este.Request.addEventListener("progress", reqMon, false);
este.Request.addEventListener("abort", reqAbort, false);
este.Request.addEventListener("load", reqFim, false);
console.log("$Http reqEngatilhar usando eventos...");
} else {
este.Request.onreadystatechange = function (e) { reqSwitch(e); };
console.log("$Http reqEngatilhar usando onreadystatechange...");
}
}
Run Code Online (Sandbox Code Playgroud)
"este"是函数外的"this"(var este = this;)
"reqSwitch"将指向正确的功能.问题是测试este.Request.hasOwnProperty("onload")仅适用于Safari.如何进行跨浏览器测试以检测浏览器是否可以使用addEventListener?
可能重复:
在Javascript中,你可以扩展DOM吗?
我正在尝试向Element添加方法和属性.它未列为全局类.我可以像这样扩展String:
String.prototype.dosomething = function { ... };
Run Code Online (Sandbox Code Playgroud)
我尝试这样(它更大,这是基本的):
function $id(str){
this.element = document.getElementById(str);
return element;
}
var myElem = $id('myId'); // WORKS !!!
$id.prototype.dosomethig = function ( ... };
var myValue = $id('myId').dosomething(); // DOESN'T WORK !!!
Run Code Online (Sandbox Code Playgroud)
我尝试其他方式,但重点是它始终相同,当我尝试扩展类时,它不起作用.有办法避免这种情况吗?我知道jQuery这样做,但我想做我的onwn - 如果可以,我可以......对吗?
编辑:下面已经在Safari和Firefox中运行的代码......
Element.prototype.pos = function(){
var curleft = this.offsetLeft;
var curtop = this.offsetTop;
var scrleft = this.scrollLeft;
var scrtop = this.scrollTop;
var pElement = pElementScr = this.offsetParent
while(pElement){
curleft += pElement.offsetLeft;
curtop += pElement.offsetTop;
pElement = pElement.offsetParent;
}
while(pElementScr){ …Run Code Online (Sandbox Code Playgroud) JavaScript中的一个简单任务是打开一个新窗口并在里面写.但我需要写一个dom元素,一个带ID的div.
var novoForm = window.open("somform.html", "wFormx", "width=800,height=600,location=no,menubar=no,status=no,titilebar=no,resizable=no,");
Run Code Online (Sandbox Code Playgroud)
比我尝试的东西......
var w = novoForm.innerWidth;
var h = novoForm.innerHeight;
novoForm.document.getElementById("monitor").innerHTML = 'Janela: '+w+' x '+h;
Run Code Online (Sandbox Code Playgroud)
我这样做是为了查看对象"novoForm"是否有效.但是"监视器"div中没有写入任何内容.我也尝试使用onload事件但没有成功.我想知道这是否有一些安全限制,或者我错过了什么......
我有一个非常动态的textField(html文本),我必须调整框的大小来修复它并计算占用的空间.我正在使用...
myTextField.height = myTextField.textHeight;
Run Code Online (Sandbox Code Playgroud)
但结果不是很精确,即使Adobe的描述说不是.还有更好的方法吗?这个班级有一些"自动调整大小"的适当性吗?而对于最后一个:如果它没有提供真正的文本高度,这个"textHeight"的目的是什么?
我正在关注MDN指南并试图创建一个事件:
var jGp = new Object();
...
jGp.evt = new Object();
jGp.evt.erro = new Event("jGp_evtErro");
Run Code Online (Sandbox Code Playgroud)
错误是(Safari):
TypeError: '[object EventConstructor]' is not a constructor (evaluating 'new Event("jGp_evtErro")')
Run Code Online (Sandbox Code Playgroud)
另外要使用document.createEvent不推荐的接缝(MDN如上所述),那么我应该如何创建我的活动?
如果我创建一个这样的类:
function MyClass(input){
// construct something;
var myInstanceName = ???
}
Run Code Online (Sandbox Code Playgroud)
创建实例时我需要实例的名称......
var MyInstance = new MyClass("做点什么");
需要知道 myInstanceName(在本例中为“MyInstance”),因为有一个创建按钮的方法,并且“onclick”必须调用该实例的方法。
我尝试了“this.name”,但它返回未定义...我如何获取这个值?
编辑:这是一个经过测试的工作示例:
function MyClass(WhereGoesTheButton){
this.myName = "Test"; // <-- here is the issue
this.idButton = WhereGoesTheButton;
//
}
MyClass.prototype.createButton = function(){
document.getElementById(this.idButton).innerHTML = '<button id="myId" onclick="'+this.myName+'.callBack(this);">Press Here</button>';
}
MyClass.prototype.callBack = function(who){
alert("Button "+who.id+" has been pressed!");
}
var Test = new MyClass("testArea");
//
function ini(){
Test.createButton();
}
Run Code Online (Sandbox Code Playgroud)
只需将其放在带有 body onload ini() 和一些 div 的页面中即可创建按钮。
它有效,但欢迎有更好实践的替代方案!
编辑2:这将完成这项工作,尽管我们仍然没有实例的名称:
var MyClassId = 0;
function …Run Code Online (Sandbox Code Playgroud) 这很奇怪:我的Apache配置了DirectoryIndex index.html,index.php这样,当我键入http://gustavopi-macmini.local/时,index.php如果文件中只有html标签,它会搜索并加载它.
但是,如果我放入一些PHP脚本index.php,它会加载index.html.en(It Works!).但是,如果我输入http://gustavopi-macmini.local/index.php,它会加载并执行脚本.
此外,如果我将一个index.php文件放在一个子目录中并键入http://gustavopi-macmini.local/somesubdirectory/它会index.php正常加载和执行...
为什么这种从根目录中的php脚本"跳"出来的奇怪行为?
我只是使用bind方法纠正我的JavaScript类中的范围问题,该方法将setInterval调用的函数放在正确的范围内.但它接缝绑定早了(我认为是1.8.4)而且我担心浏览器的兼容性.
还有其他更老的选择吗?我应该忘记旧浏览器吗?
例:
function MyClass(SomeText){
this.text = SomeText;
}
MyClass.prototype.test = function(){
console.log("The text: "+this.text);
}
MyClass.prototype.initialize = function(){
setInterval(this.test.bind(this), 1000);
}
var Test = new MyClass("my thoughts");
Test.initialize();
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用多维数组执行与mySQL查询"SELECT*FROM table ORDER BY field1,field2,..."相同的操作:
$Test = array(
array("a"=>"004", "n"=>"03"),
array("a"=>"003", "n"=>"02"),
array("a"=>"001", "n"=>"02"),
array("a"=>"005", "n"=>"01"),
array("a"=>"001", "n"=>"01"),
array("a"=>"004", "n"=>"02"),
array("a"=>"003", "n"=>"01"),
array("a"=>"004", "n"=>"01")
);
function msort(&$array, $keys){
array_reverse($keys);
foreach($keys as $key){
uasort($array, sortByKey);
}
//
function sortByKey($A, $B){
global $key;
$a = $A[$key];
$b = $B[$key];
if($a==$b) return 0;
return ($a < $b)? -1 : 1 ;
}
}
//
msort($Test, array("a","n"));
//
foreach($Test as $t){
echo('<p>'.$t["a"].'-'.$t["n"].'</p>');
}
Run Code Online (Sandbox Code Playgroud)
我的理论是:如果我将多次乘法排序为最重要的密钥,那么我会按照mySQL查询的顺序排序.
但是php正在返回"警告:uasort()期望参数2是有效的回调函数,函数'sortByKey'未找到或者在第23行的/Library/WebServer/Documents/www/teste.array_sort.php中找到无效的函数名"(uasort)线)
这是一个简单的订单功能,我错过了什么?