getElementsByClassName只获取一个项目

时间:2014-05-08 17:16:22

标签: javascript

我正在尝试保存输入框并在使用document.getElementsByClassName时该操作仅适用于最后一项。

我创造了一个小提琴 http://jsfiddle.net/ktcle/6P8yx/2/

如果您在第一个文本框中输入文本并保存它会返回空白,但是您在第二个文本框中输入文本它会为两个保存按钮返回

var fileNameToSaveAs = document.getElementById("tlt").innerHTML;
var myDivObj = document.getElementById("tlt").innerHTML;    

var items = document.getElementsByClassName('notesApp');
for (var i = 0; i < items.length; i++) {
    var textToWrite =   items[i].value
    //alert(textToWrite);
    var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
}

我需要每个框来保存正确的文本输入

感谢

4 个答案:

答案 0 :(得分:1)

有两个错误:

  1. 正如@xxx指出,你在class属性中有'notesppp'而不是'notesApp'。
  2. 更重要的是,您正在替换for循环中的textFileAsBlob而不是附加到它。
  3. 请参阅构建Blob部分以在此处附加blob:

    https://www.inkling.com/read/javascript-definitive-guide-david-flanagan-6th/chapter-22/blobs

答案 1 :(得分:1)

var textToWrite = ""
for (var i = 0; i < items.length; i++) {
    textToWrite += items[i].value
    //alert(textToWrite);
    var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
}

答案 2 :(得分:1)

尝试使用While:

var allSuccess = document.getElementsByClassName("btn btn-lg btn-success");
while (allSuccess.length>0) {
    allSuccess[0].disabled = true;
    allSuccess[0].className = "btn btn-lg";
    allSuccess = document.getElementsByClassName("btn btn-lg btn-success");
}

答案 3 :(得分:0)

单击时,两个按钮执行相同的操作。 获得第二个textarea的内容。

所以给一个param来saveTextAsFile你需要的textarea id。 并获得您想要的正确内容。

<div>
<textarea id="inputTextToSave" class="notesppp"></textarea> 
    <button onclick="saveTextAsFile('inputTextToSave')" class="btn">Save Notes</button>

</div>   
<div>     
    <textarea id="inputsecondbox" class="notesApp" ></textarea> 
    <button onclick="saveTextAsFile('inputsecondbox')" class="btn">Save Notes</button>
</div>

function saveTextAsFile(textId)
{
    var fileNameToSaveAs = document.getElementById("tlt").innerHTML;
    var myDivObj = document.getElementById("tlt").innerHTML;    

// changed

    var item = document.getElementsById(textId);
    var textToWrite = item.value;
    var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
// changed

 .....

}