小编Stu*_*orn的帖子

使用CryptoJS使用密码进行AES解密会返回空值

脚本

我有以下代码:

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<div id="decrypted">Please wait...</div>
Insert new note:<input type="text" id="new_note"><input type="button" id="enc_button" value="Save">
<script>
    var password = "testpassword";
    var encrypted_text = localStorage.getItem("encrypted");
    var rawData = atob(encrypted_text);
    var iv = rawData.substring(0,16);
    var crypttext = rawData.substring(16);
    var plaintextArray = CryptoJS.AES.decrypt(
      { ciphertext: CryptoJS.enc.Latin1.parse(crypttext) },
      CryptoJS.enc.Hex.parse(password),
      { iv: CryptoJS.enc.Latin1.parse(iv) }
    );
    var decrypted = CryptoJS.enc.Latin1.stringify(plaintextArray);
    document.getElementById("decrypted").innerHTML = decrypted;
    document.getElementById("enc_button").onclick = function(){
    	var text = document.getElementById("new_note").value;
    	var encrypted = CryptoJS.AES.encrypt(text, password);
    	localStorage.setItem("encrypted",encrypted);
    }
</script>
Run Code Online (Sandbox Code Playgroud)

我的代码应该做什么

使用CryptoJS使用AES加密字符串; 解密保存在本地存储中的加密文本,并将结果显示在div中

什么不起作用

虽然字符串似乎已加密,但变量decrypt为空.Chrome控制台中未触发任何错误.

我的问题 …

javascript encryption cryptography cryptojs

7
推荐指数
1
解决办法
6049
查看次数

QuerySelectorAll不使用onclick事件

脚本

我有一些文本输入,我希望它们在点击时的宽度为500px.

我的代码

var inputs = document.querySelectorAll("input[type=text]")
for(i=0; i<inputs.length; i++){
	inputs[i].onclick = function(){
		inputs[i].style.width = "500px";
	}
}
Run Code Online (Sandbox Code Playgroud)
<input type="text" id="sometext">
Run Code Online (Sandbox Code Playgroud)

什么不起作用

在Chrome控制台上,我在下一行中收到"无法读取未定义的属性'样式":inputs[i].style.width = "500px";当我点击输入时.

我的问题

我该如何修复我的代码?

javascript selectors-api

4
推荐指数
1
解决办法
1万
查看次数

从循环隐藏元素(AngularJS)

我有这个代码:

AngularJS:

$scope.languages = [
  { language: "English", i18n: "en" },
  { language: "Espanol", i18n: "es" },
  { language: "Polski", i18n: "pl" },
  { language: "Portugues", i18n: "pt" },
  { language: "Svenska", i18n: "se" },
];
Run Code Online (Sandbox Code Playgroud)

HTML:

<li ng-repeat="lang in languages" id="langRow_{{lang.i18n}}">
  <a href="#" id="lang_{{lang.i18n}}" ng-click="changeLang(lang.i18n);"><i class="flag-icon flag-icon-{{lang.i18n}} mr-sm"></i>{{lang.language}}</a>
</li>
Run Code Online (Sandbox Code Playgroud)

我想隐藏循环中的元素,例如:

$("#langRow_es").hide();
Run Code Online (Sandbox Code Playgroud)

它不起作用.怎么解决这个?

javascript jquery angularjs

2
推荐指数
1
解决办法
139
查看次数

在过滤器中考虑列表的其余部分

我需要在列表中显示后继较大的元素的数量。例如,在列表 [3,7,2,1,9] 中,我的函数应该返回 2,因为 7 大于 3 并且 9 大于 1。
为了做到这一点,我想使用过滤器函数:

greaterElems :: Ord a => [a] -> Int
greaterElems [] = 0
greaterElems [x] = 0
greaterElems (x:xs) = length (filter (< head xs) (x:xs))
Run Code Online (Sandbox Code Playgroud)

然而,这并不像预期的那样工作:似乎 Haskell 总是考虑列表的第二个元素,好像“head xs”只计算一次,但这对我来说似乎不正常,因为 Haskell 是懒惰的。
我错过了什么,我该如何修复我的代码以实现我的目标?

haskell filter

2
推荐指数
1
解决办法
60
查看次数

javascript 的平方根返回 ReferenceError

我正在尝试使用 javascript 获取数字的平方根。
为此,我尝试了以下代码:

<script>
var rad = sqrt(4);
alert(rad);
</script>
Run Code Online (Sandbox Code Playgroud)

(这会在 Firefox 的控制台中返回“ReferenceError:sqrt 未定义”)

<script>
var rad = pow(4,0.5);
alert(rad);
</script>
Run Code Online (Sandbox Code Playgroud)

(但我得到“ReferenceError:pow未定义”)

我究竟做错了什么?

javascript sqrt pow referenceerror

1
推荐指数
1
解决办法
3286
查看次数

在mysqli中输出Inserted.row

我有以下sql表:

ID |电子邮件| FBID

当我执行查询

 INSERT INTO users(email,fbid) VALUES('randomvalue','otherrandomvalue')
Run Code Online (Sandbox Code Playgroud)

我想获取插入行的id.为此,我尝试编辑这样的查询:

 INSERT INTO users(email,fbid) VALUES('randomvalue','otherrandomvalue') OUTPUT Inserted.id
Run Code Online (Sandbox Code Playgroud)

但是我得到了:

1064 - 您的SQL语法出错; 检查与MySQL服务器版本对应的手册,以便在第1行的"OUTPUT Inserted.id"附近使用正确的语法

可能是什么问题呢?

mysql mysqli syntax-error

1
推荐指数
3
解决办法
8492
查看次数

放入外部 js 文件时 QuerySelectorAll 不起作用

当我输入这段代码时:

window.onload = function(){
    var inputs = document.querySelectorAll("input[type=text]");
    console.log(inputs.length);
    for(var j=0; j<inputs.length; j++){
        inputs[j].onclick = function(){
            this.style.width = "500px";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在 html 页面中,它工作得很好,但如果我将其放入外部 .js 文件中,for 循环永远不会启动,因为 input.length 等于 0,即使在调用脚本的页面中有大量输入。可能是什么问题呢?

更新:我发现代码在正常条件下可以工作,但事实并非如此:

  • 对于先前隐藏的 div 中包含的输入,然后通过 js 显示我的坏处,隐藏的输入是“电子邮件”类型
  • 在每个输入上,如果它们是通过 ajax 加载的,我发现了原因:因为该函数仅在窗口加载时被触发,所以它不会看到加载的输入

javascript onload onload-event selectors-api

1
推荐指数
1
解决办法
2941
查看次数